Триггеры в Verilog: JK, RS, D и T

Содержание

Сводка

В мире цифровой электроники триггеры играют ключевую роль в запоминании и обработке информации. Использование триггеров в цифровых схемах позволяет управлять временем передачи сигналов, создавая последовательность операций. Один из популярных языков описания цифровых схем Verilog предоставляет разработчикам мощный инструментарий для создания триггеров и других цифровых элементов. В данной статье мы рассмотрим, как работать с триггерами JK, RS, D и другими в Verilog, и как оптимально описывать их функциональность.

JK триггер в Verilog

Начнем с рассмотрения JK триггера. В Verilog для создания JK триггера используется сочетание логических элементов, позволяющее реализовать его функциональность. JK триггер включает в себя два входа (J и K), один выход Q и сигнал тактирования CLK. Программирование JK триггера в Verilog позволяет создать модель, которая будет имитировать его работу.

Таблица 1. Таблица истинности JK-триггера
СKJQ(t)Q(t+1)
0xx00
0xx11
10000
10011
10101
10111
11000
11010
11101
JK триггер возможно построить блок primitive UDP, но в примере используются процедурных блоков always и initial. В примере используется 1-ый случай для большей наглядности. Таблицу истинности отображена в блоке table.
module dd4(data, clk, q); parameter DW = 4; input [(DW - 1): 0] data; input clk; output [(DW - 1): 0] q; d_edge_ff dd_tr [(DW - 1): 0] (q, clk, data); endmodule primitive jk_edge_ff (q, clock, j, k, preset, clear); output q; reg q; input clock, j, k, preset, clear; table // clock jk pc state output/next state ? ?? 01 : ? : 1 ; // предустановка значения ? ?? *1 : 1 : 1 ; ? ?? 10 : ? : 0 ; // очистка значения ? ?? 1* : 0 : 0 ; r 00 00 : 0 : 1 ; r 00 11 : ? : - ; r 01 11 : ? : 0 ; r 10 11 : ? : 1 ; r 11 11 : 0 : 1 ; r 11 11 : 1 : 0 ; f ?? ?? : ? : - ; b *? ?? : ? : - ; b ?* ?? : ? : - ; endtable endprimitive

RS триггер в Verilog

RS триггер имеет три входа (R, S и C) и два выхода (Q и ~Q). Он используется для создания устойчивого хранилища единичного бита информации. Таблица синхронного RS-триггера отображена в таблице 2.

Таблица 2. Таблица истинности для RS триггера
RSQ(t)Q(t+1)
0000
0011
0101
0111
1000
1010
110z
111z
Для наглядного примера используем primitive в программирование RS триггера в Verilog. Таблица истинности помещена в блок table.
module rs4(r, s, q); parameter DW = 4; input [(DW - 1): 0] r, s; output [(DW - 1): 0] q; srff rs_tr [(DW - 1): 0] (q, s, r); endmodule primitive srff (q, s, r); output q; reg q; input s, r; initial q = 1'b1; table // s r q q+ 1 0 : ? : 1 ; f 0 : 1 : - ; 0 r : ? : 0 ; 0 f : 0 : - ; 1 1 : ? : 0 ; endtable endprimitive

T триггер в Verilog

T триггер — это значимый элемент цифровой электроники. Он имеет один вход T и один выход Q, где значение на выходе зависит от изменения сигнала на входе T и тактового сигнала CLK.

Принцип работы T триггера заключается в увеличении его внутреннего регистра на 1 при восходящем фронте тактового сигнала CLK и T равной 1. При T равном 0 ничего не происходит. В большинстве случаев применяют упрощенную схему без входного порта T или заменяют имя сигнала T на ENA.
module t_trig(t, clk, q); parameter DW = 4; input t, clk; output [(DW - 1): 0] q; reg [(DW - 1): 0] q = 0; always @(posedge clk) begin if (t) q <= q + 1; end endmodule

D триггер в Verilog

Наконец, обсудим D триггер. D триггер имеет один вход (D) и один выход (Q). Он является одним из самых простых триггеров и используется для передачи данных от входа к выходу при срабатывании тактового сигнала. Это самый распространенный триггер в схемах Verilog. Без него не может обойтись ни одна последовательная логика.

Программирование D триггера в Verilog позволяет создать эффективную модель для работы с данными. В данном примере схема построена на последовательной логике с помощью блока always.
module dd4(data, clk, q); parameter DW = 4; input [(DW - 1): 0] data; input clk; output [(DW - 1): 0] q; reg [(DW - 1): 0] q = 0; always @(posedge clk) begin q <= data; end endmodule

Заключение

Таким образом, программирование триггеров JK, RS, D и T в Verilog открывает широкие возможности для разработки цифровых схем и устройств. Понимание принципов работы триггеров и умение эффективно их описывать позволяет создавать надежные и эффективные цифровые системы.

Однако для успешного применения триггеров в Verilog необходимо учитывать особенности каждого типа триггера, их возможные состояния и логику работы. Это позволит создать качественную цифровую схему, способную эффективно обрабатывать информацию.