实验六 流水线与分频技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验六 流水线与分频技术

实验六:流水线与分频设计实验 班级: 姓名: 学号: 作业完成后,以班级为单位,班长或课代表收集齐电子版实验报告,统一提交. 文件命名规则如“通1_王五_学号” 一、实验目的 掌握分频技术思路 掌握流水线设计的方法和基本形式 二、预习要求 1.了解veirlogHDL行为语句。 2..流水线和分频设计方法。 实验基本概念 偶数分频2N:模N计数器,0到N,输出翻转 奇数分频2N+1: (1)占空比X/(2N+1):用模2N+1的计数器,0x2N。从0计数到X时钟翻转,计数到2N+1再再翻转,并复位计数器。 (2)占空比50%:基于(1)中占空比为非50%的输出时钟在输入时钟的上升沿触发翻转;若在同一个输入时钟周期内,此计数器的两次输出时钟翻转分别在与(1)中对应的下降沿触发翻转,输出的时钟与(1)中输出的时钟进行逻辑或,即可得到占空比为50%的奇数倍分频时钟。当然其输出端再与偶数倍分频器串接则可以实现偶数倍分频。 N-0.5分频: N模计数器,从0开始上升沿奇数,N-1时输出翻转,在时钟翻转后经历0.5个周期时,计数器输出时钟必须进行再次翻转,即当CLK为下降沿时计数器的输入端应为上升沿脉冲,使计数器计数达到N而复位为0重新开始计数同时输出时钟翻转。这个过程所要做的就是对CLK进行适当的变换,使之送给计数器的触发时钟每经历N-0.5个周期就翻转一次。 任意N+A/B分频 分别设计一个分频值为N和分频值N+1的整数分频器,采用脉冲计数来控制单位时间内两个分频器出现的次数。 设N出现的频率为a,则N×a+(N+1)×(B-a)=N×B+A 求解a=B-A; 所以N+1出现的频率为A。 例如: 8.1分频 N=8 N+1=9 A=1 B=10 a=9 N*a+(N+1)x1=8*9+9*1 10.23分频: N=10 N+1=11 A=23 B=100 a=77 N*a+(N+1)x1=10*77+11*23 【例9.10】 50%的奇数分频(模7) module count7(reset,clk,cout); input clk,reset; output wire cout; reg[2:0] m,n; reg cout1,cout2; assign cout=cout1|cout2; //两个计数器的输出相或 always @(posedge clk) begin if(!reset) begin cout1=0; m=0; end else begin if(m==6) m=0; else m=m+1; if(m3) cout1=1; else cout1=0; end end always @(negedge clk) begin if(!reset) begin cout2=0; n=0; end else begin if(n==6) n=0; else n=n+1; if(n3) cout2=1; else cout2=0; end end endmodule 【例9.11】 50%的奇数分频 module count_num(reset,clk,cout); parameter NUM=13; input clk,reset; output wire cout; reg[4:0] m,n; reg cout1,cout2; assign cout=cout1|cout2; always @(posedge clk) begin if(!reset) begin cout1=0; m=0; end else begin if(m==NUM-1) m=0; else m=m+1; if(m(NUM-1)/2) cout1=1; else cout1=0; end end always @(negedge clk) begin if(!reset) begin cout2=0; n=0; end else begin if(n==NUM-1) n=0; else n=n+1; if(n(NUM-1)/2) cout2=1; else cout2=0; end end endmodule 【例9.12】 5.5 module fdiv5_5(clkin,clr,clkout); input clkin,clr; output reg clkout; reg clk1; wire clk2; integer count; xor xor1(clk2,clkin,clk1); //异或门 always@(posedge c

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档