Скачиваний:
0
Добавлен:
16.06.2026
Размер:
2.53 Mб
Скачать

Модуль dec_cnt — вычитающий счетчик

<Описание устройства>

Описание на Verilog

<Код>

module dec_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-схема>

Временная диаграмма

Модуль rev_cnt — реверсивный счетчик

<Описание устройства>

Описание на Verilog

<Код>

module rev_cnt #(

parameter N=4

) (

input clk, R, en, rev,

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;

else if (rev) rq <= rq -1;

else rq <= rq + 1;

end

assign Q = rq;

endmodule

RTL-схема

<RTL-схема>

Временная диаграмма

Модуль load_rev_cnt — реверсивный счетчик с загрузкой значений

<Описание устройства>

Описание на Verilog

<Код>

module load_rev_cnt #(

parameter N=4

) (

input clk, R, en, rev, load,

input [N-1:0] D,

output [N-1:0] Q

);

reg [N-1:0] rq;

always @(posedge clk, negedge R)

begin

if (~R) rq <= {N{1'b0}};

else if (load) rq <= D;

else if (~en) rq <= rq;

else if (rev) rq <= rq -1;

else rq <= rq + 1;

end

assign Q = rq;

endmodule

RTL-схема

<RTL-схема>

Временная диаграмма

Модуль div_cnt — делитель частоты

<Описание устройства>

Описание на Verilog

<Код>

module div_cnt #(

parameter N=4,

parameter top=10

) (

input clk, R, en,

output clkp, clkp1

);

reg [N-1:0] rq;

reg rclkp, rclkp1;

assign clkp = (rq == top) ? 1 : 0;

assign clkp1 = rclkp1;

always @(posedge clk, negedge R)

begin

if (~R) rq <= {N{1'b0}};

else if (~en) rq <= rq;

else if (rq == top) rq <= {N{1'b0}};

else rq <= rq + 1;

end

always @(posedge clkp)

rclkp1 <= ~rclkp1;

endmodule

RTL-схема

<RTL-схема>

Временная диаграмма