我是靠谱客的博主 细心高跟鞋,最近开发中收集的这篇文章主要介绍verilog将100mhz分频为1hz_使用verilog语言实现分频器 将50MHZ分为1hz和5hz,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

匿名用户

1级

2012-10-21 回答

你好,使用以下程序即可,使用时只需改变N值,N的取值大小请看注释,此程序适合对任意时钟的整数分频(包括奇偶),此程序已通过验证。根据你的情况,想得到1HZ,N取50000000即可;想得到5HZ,N取10000000即可。

/******************************************************************************************

Author:Bob Liu

E-mail:shuangfeiyanworld@163.com

Device:EP2C8Q208C8

Tool:Quartus 8.1

Function: 实现时钟的任意整数分频

Version:2012-1-9 v1.0

********************************************************************************************/

modulediv_N(

inputCLK,// 基准时钟

outputCLK_div_N// N分频后得到的时钟

);

wire[31:0]N=20;// N为分频系数,N≥2即可,N的值为CLK除以CLK_div_N后取整(四舍五入)

/******************** 产生备用时钟1 ***************/

reg[31:0]cnt1;

regCLK_div_N_1;

always @ (posedge CLK)

begin

if(N%2==0)// 如果N为偶数

begin

if(N==2)// 如果N为2

CLK_div_N_1 <= ~CLK_div_N_1;

else

begin

if(cnt1==(N-2)/2)

begin

cnt1 <= 0;

CLK_div_N_1 <= ~CLK_div_N_1;

end

else

cnt1 <= cnt1+1;

end

end

else// 如果N为奇数

begin

if(cnt1==N-1)

cnt1 <= 0;

else

cnt1 <= cnt1+1;

if((cnt1==N-1) || (cnt1==(N-1)/2))

CLK_div_N_1 <= ~CLK_div_N_1;

else ;

end

end

/*********************** 产生备用时钟2 *********************/

wireCLK0=(N%2)? (~CLK):0;// 如果N为偶数,备用时钟2(CLK_div_N_2)恒为0,即不需要用到此备用时钟

reg[31:0]cnt2;

regCLK_div_N_2;

always @ (posedge CLK0)

begin

if(cnt2==N-1)

cnt2 <= 0;

else

cnt2 <= cnt2+1;

if((cnt2==N-1) || (cnt2==(N-1)/2))

CLK_div_N_2 <= ~CLK_div_N_2;

end

/******************** 产生最终分频时钟************************/

assignCLK_div_N = CLK_div_N_1 | CLK_div_N_2;

endmodule

-- Bob Liu原创

最后

以上就是细心高跟鞋为你收集整理的verilog将100mhz分频为1hz_使用verilog语言实现分频器 将50MHZ分为1hz和5hz的全部内容,希望文章能够帮你解决verilog将100mhz分频为1hz_使用verilog语言实现分频器 将50MHZ分为1hz和5hz所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部