Verilog HDL可控16/8/4/2分频电路设计,控制信号sel分别取值11/10/01/00时,输出对应的16/8/4/2/1分频信号
需求分析
电路构成分析
首先,可控16/8/4/2分频电路设计可以使用多路选择器,16、8、4、2分别是2的4次方、3次方、2次方、1次方。可以使用计数器对输入时钟信号进行计数,定义一个4位的寄存器cnt16[3:0],用控制信号sel作为控制端控制选择栓择器的4个状态。每过一个时钟上升沿,计数器加1。当sel为00时,输出只要为cnt16[0]就是延迟了一个时钟周期,16/8/4分频以此类推。
verilog代码部分及仿真
verilog代码 sel_div模块
以下为
module sel_div(sel,clk,rstn,fout);
input[1:0] sel;input clk,rstn;output fout;
wire[1:0] sel;wire clk,rstn;reg fout;
reg[3:0]cnt16;
always@(posedge clk or negedge rstn)
if (~rstn)cnt16<=0;
else cnt16<=cnt16+1'b1;
always@(posedge clk or negedge rstn)
if (~rstn)fout<=0;
else case(sel)
2'b00:fout<=cnt16[0];
2'b01:fout<=cnt16[1];
2'b10:fout<=cnt16[2];
2'b11:fout<=cnt16[3];
default:fout<=cnt16[3];
endcase
endmodule