- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
modulediv248(div2,div4,div8,clk);inputclk;outputdiv2,div4,div8; //输出2分频、4分频、8分频regdiv2,div4,div8;reg[2:0]cnt;always@(posedgeclk)//时钟上升沿到来begincnt=cnt+1;div2=cnt[0];div4=cnt[1];div8=cnt[2];endendmodule6.分频器
6.分频器
仿真结果(2)分频系数不是2的整数次幂的分频器moduleDIV12(div12,clk);inputclk;outputdiv12; //输出12分频regdiv12;reg[2:0]cnt;always@(posedgeclk)//时钟上升沿到来对于分频系数不是2的整数次幂的分频器来说,仍然可以用计数器来实现,不过需要对计数器进行控制。下面以一个分频系数为12的分频器为例,介绍此类型分频器的设计方法。6.分频器
beginif(cnt==3b101)begin div12=~div12;cnt=0;endelsebegin cnt=cnt+1;endendendmodule6.分频器
(3)占空比不是1:1的分频器上面两个例子所描述的分频器,其分频输出信号的占空比均为1:1。然而在实际的数字电路设计中,经常会需要占空比不是1:1的分频信号。这种分频器的实现方法也是通过计数器的控制得到的。下面以一个分频系数为6、占空比为1:5的偶数分频器为例,介绍此类分频器的设计方法。6.分频器
modulediv6(div6,clk);inputclk;outputdiv6; //输出6分频regdiv6;reg[2:0]cnt;always@(posedgeclk)//时钟上升沿到来beginif(cnt==3’b101)begindiv6=1;cnt=0;endelsebegindiv6=0;cnt=cnt+1;endendendmodule6.分频器
(4)奇数分频器奇数分频器是指分频系数为N=2n+1(n=1,2,…)。如果输入信号的频率为f,则分频器输出信号频率为f/(2n+1)。下面介绍两种奇数分频器的设计方法。占空比不是1:1的奇数分频器与占空比不是1:1的偶数分频器设计方法相同,均是通过对计数器的控制来实现。下面以一个分频系数为7、占空比为1:6的奇数分频器为例,介绍此类分频器的设计方法。占空比不是1:1的奇数分频器6.分频器
(4)奇数分频器modulediv7(div7,clk);outputdiv7;inputclk;regdiv7;reg[2:0]cnt;always@(posedgeclk)6.分频器
beginif(cnt==6)begindiv7=1;cnt=0;endelsebegincnt=cnt+1;div7=0;endendendmodule(4)奇数分频器占空比为1:1的奇数分频器占空比为1:1的奇数分频器的实现方法是:设计两个计数器,一个计数器采用时钟的上升沿触发,另一个计数器采用时钟的下降沿触发,两个计数器的模与分频系数相同,然后根据这两个计数器的并行信号输出来决定两个相应的电平控制信号,最后对两个电平控制信号进行相应的逻辑运算即可完成分频信号输出。6.分频器
modulediv5(div5,clk);outputdiv5;inputclk;reg[2:0]cnt1,cnt2;regclk_temp1,clk_temp2;?assigndiv5=clk_temp1|clk_temp2;always@(posedgeclk)6.分频器
always@(posedgeclk)beginif(cnt1==3b100)begincnt1=3b000;endelsebegincnt1=cnt1+1;endif(cnt1==3b000)beginclk_temp1=1;endif(cnt1==3b010)beginclk_temp1=0;endendalways@(negedgeclk)beginif(cnt2==3b100)begincnt2=3b000;endelsebegincnt2=cnt2+1;end
文档评论(0)