基本电路设计——偶数分频器

为什么要分频?由于FPGA的晶振频率都是固定值,只能产生固定频率的时序信号,但是实际工程中我们需要各种各样不同频率的信号,这时候就需要对晶振产生的频率进行分频。

可以通过计数的方式实现偶数分频。若实现N分频,当计数到N/2-1时将输出信号取反,然后将计数器重新置零即可。

verilog代码

module ace(
    clk,
    rst_n,
    clk_out
);
    input clk;
    input rst_n;
    output reg clk_out = 0;
    parameter N = 6;
    reg [3:0] cnt = 0;

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin		//如果rst_n为0,复位,技数置0,输出置0
        cnt <= 0;
        clk_out <= 0;
    end
    else if(cnt == N/2 - 1) begin
        cnt <= 0;
        clk_out <= ~clk_out;
    end
    else begin
			cnt <= cnt + 1;
    end
	 end
 endmodule

modelsim代码

initial                                                
begin                                                  
clk = 0;
forever
#20clk = ~clk;                                   
$display("Running testbench");                       
end                                                    

initial                                                
begin                                                  
//rst_n = 0;
//#2000;
rst_n = 0;
#1000;
rst_n = 1;
#1000;
rst_n = 0;
#1000;
rst_n = 1;
#1000;
rst_n = 1;
#1000;
rst_n = 0;
#1000;
rst_n = 0;
#1000;
rst_n = 0;
#1000;
rst_n = 1;
#1000;
$stop;
end    

Modelsim仿真结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值