- •Исполнители: Модуль rs_ff — асинхронный rs-триггер
- •Модуль d_latch — d-защелка
- •Модуль d_ff — d-триггер
- •Модуль jk_ff — jk-триггер
- •Модуль t_ff — t-триггер
- •* Модуль wrapper_ff — обертка для триггеров
- •Исполнители
- •Модуль par_rg — параллельный регистр
- •Модуль shift_rg — последовательный регистр
- •Модуль buf_rg — буферный регистр
- •Модуль shiftpar_rg — последовательно-параллельный регистр
- •Модуль parshift_rg — параллельно-последовательный регистр
- •Модуль ring_rg — кольцевой регистр
- •* Модуль wrapper_rg — обертка для регистров
- •Исполнители
- •Модуль inc_cnt — суммирующий счетчик
- •Модуль dec_cnt — вычитающий счетчик
- •Модуль rev_cnt — реверсивный счетчик
- •Модуль load_rev_cnt — реверсивный счетчик с загрузкой значений
- •Модуль div_cnt — делитель частоты
- •Модуль debounce_cnt — антидребезговый счетчик
- •Модуль pll_cnt — модуль фапч
- •* Модуль wrapper_cnt — обертка для счетчиков
- •Исполнители заключение
Модуль parshift_rg — параллельно-последовательный регистр
<Описание устройства> |
|
Описание на Verilog <Код> module parshift_rg #( parameter N=4 ) ( input [N-1:0] D, input clk, R, S, wr, output Q );
reg [N-1:0] rq;
assign Q = rq[N-1];
always @(posedge clk, negedge R, negedge S) if (~R) rq <= {N{1'b0}}; else if (~S) rq <= {N{1'b1}}; else if (~wr) rq <= {rq[N-2:0], 1'b0}; else rq <= D; endmodule |
RTL-схема <RTL-схема>
|
Временная диаграмма
|
|
Модуль ring_rg — кольцевой регистр
<Описание устройства> |
|
Описание на Verilog <Код> module ring_rg #( parameter N=4 ) ( input clk, S, output [N-1:0] Q );
reg [N-1:0] rq;
assign Q = rq;
always @(posedge clk, negedge S) if (~S) rq <= 1; else begin
rq[N-1:1] <= rq[N-2:0];
rq[0] <= rq[N-1];
end endmodule |
RTL-схема <RTL-схема>
|
Временная диаграмма
|
|
* Модуль wrapper_rg — обертка для регистров
<Описание устройства> |
|
Описание на Verilog <Код> module wrapper_rg ( input R, S, clk, input wr, rd,
input [3:0] D, output [6:0] p7sout, b7sout, output [3:0] spout, rout, output sout, psout ); par_rg inst0 (.R(R), .S(S), .clk(clk), .D(D), .Q(p7sout)); shift_rg inst1 (.R(R), .S(S), .clk(clk), .D(D), .Q(sout)); buf_rg inst2 (.R(R), .S(S), .clk(clk), .D(D), .wr(wr), .rd(rd), .Q(b7sout)); shiftpar_rg inst3 (.R(R), .S(S), .clk(clk), .D(D), .Q(spout)); parshift_rg inst4 (.R(R), .S(S), .clk(clk), .D(D), .wr(wr), .Q(psout)); ring_rg inst5 (.S(S), .clk(clk), .Q(rout));
endmodule |
RTL-схема <RTL-схема>
|
|
|
Исполнители
<фото исполнителей>
Модуль inc_cnt — суммирующий счетчик
<Описание устройства> |
|
Описание на Verilog <Код> module inc_cnt #( parameter N=4 ) ( input clk, R, en, output [N-1:0] Q );
reg [N-1:0] rq;
always @(posedge clk, negedge R) begin if (~R) rq <= {N{1'b0}}; else if (en) rq <= rq +1; else rq <= rq; end
assign Q = rq;
endmodule |
RTL-схема <RTL-схема>
|
Временная диаграмма
|
|
