任意分频

详细讲解参照从零开始走进FPGA世界,一下是我参照现有20MHz的板子的程序,

/***************************************************
* Module Name : clk_generator
* Engineer : catarget
* Target Device : EP2C8Q208C8
* Tool versions : Quartus II 9.0
* Create Date : 2011-12-3
* Revision : v1.0
* Description :
*************************************************
*/
/*************************************************
fc = 20MHz 20*10^6
fo = fc*K/(2^32) (0.004657Hz ~ 10MHz)
K = fo*(2^32)/fc
= fo*(2^32)/(20*10^6)
*************************************************
*/

module clk_generator(

input clk, //20MHz
input rst_n, //RESET
output reg clk_out
);

parameter FREQ_WORD = 32'd214748; //1Hz 214.748,
/*----------------------------------------
32'd214748~1s~1Hz,
32'd21475~10s~0.1Hz,
32'd2147~100s~0.01Hz
32'd214748*N ~ NHz
------------------------------------------
*/
//---------------------------------------------------

reg [31:0] max_value;

always@(posedge clk or negedge rst_n)
begin
if(!rst_n) max_value <= 1'b0;
else max_value <= max_value + FREQ_WORD;
end
//-------------------------------------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n) clk_out <= 1'b0;
else begin
if (max_value <= 32'h7FFF_FFFF) clk_out <= 1'b0;
else clk_out <= 1'b1;
end
end
endmodule


通过对FREQ_WORD的修改达到任意分频的目的。

 

转载于:https://www.cnblogs.com/cheetah/archive/2011/12/04/2275530.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值