用设计的位频率计.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文档。上传文档
查看更多
简单4位数字频率计设计 设计要求 (1)、利用Verilog HDL语言行为描述方法,设计一个简单4位数字频率计; (2)、要求输入标按时钟信号频率为1MHz,系统可计数频率范围为1Hz~9999Hz; (3)、系统含有复位信号,且当计数频率发生溢出时能够给出指示信号,计数频率经过4个共阴数码管进行显示(动态扫描显示)。 系统结构框图 依据设计要求,输入系统标按时钟信号要先经过分频后得到一个周期为2s占空比50%信号,用来对输入信号采样,得到采样信号GATED_CLK;为了能够控制计数模块对采样信号进行正常计数及保留计数后频率,这要求,要在计数器刚好完成计数后立即将数据输出给显示部分进行显示,而且要为下次计数做好准备,所以数据信号处理部分还要有产生控制计数器两个信号LOAD和COUNTER_CLR,LOAD信号控制计数完成后数据立即输出给显示,COUNTER_CLR信号控制计数器清零;计数模块就是完成对采样信号计数,并当计数发生溢出时产生溢出信号FLOW_UP;显示控制模块要完成将计数模块输入信号进行译码显示。 信号描述 测试信号采样原理: GATED_CLK、LOAD、COUNTER_CLR信号关系: 程序中用到信号变量: FREQUENCY_COUNTROL_BLOCK FREQUENCY_COUNTER_BLOCK FREQUENCY_DISPLY_BLOCK GATED_CLK 采样信号 COUT 计数输出信号 DOUT 输出到数码管 LOAD 控制计数器信号 FLOW_UP 计数溢出信号 CDIN 计数输入信号 COUNTER_CLR 清零计数器信号 CLOCK_IN 计数器时钟信号 DCLK_IN 标按时钟信号 CLK_IN 标按时钟信号 LOAD 控制计数输出 RESET 复位信号 SIGNAL_TEST 测试信号 COUNTER_CLR 清零计数信号 RESET 复位信号 RESET 复位信号 Verilog程序 各子模块verilog程序: (1)信号处理模块_verilog: module FREQUENCY_COUNTROL_BLOCK(GATED_CLK,LOAD,COUNTER_CLR,CLK_IN,SIGNAL_TEST,RESET); output GATED_CLK; output LOAD; output COUNTER_CLR; input CLK_IN; input SIGNAL_TEST; input RESET; reg LOAD; reg COUNTER_CLR; reg DIVIDE_CLK; reg[19:0] cn; reg A1,A2; //信号分频:由CLK_IN得到分频后信号DIVIDE_CLK(0.5Hz) always @(posedge CLK_IN) begin if(RESET) begin DIVIDE_CLK=0; cn=0; end else if(cn==1000000) begin cn=0; DIVIDE_CLK=~DIVIDE_CLK; end else cn=cn+1; end //频率计数控制信号产生:产生LOAD信号和COUNTER_CLR信号 always @(posedge SIGNAL_TEST) begin A1=~DIVIDE_CLK; end always @(posedge SIGNAL_TEST) begin A2=A1; end always @(A1 or A2) begin LOAD=A1(!A2); end always @(posedge SIGNAL_TEST) COUNTER_CLR=LOAD; //产生驱动计数模块信号GATED_CLK,也就是被计数模块检测信号 assign GATED_CLK=SIGNAL_TESTDIVIDE_CLK; endmodule (2)、计数器模块: module FREQUENCY_COUNTER_BLOCK(COUT,FLOW_UP,CLOCK_IN,RESET,LOAD,COUNTER_CLR); output[15:0] COUT; output FLOW_UP; input CLOCK_IN; input LOAD; input COUNTER_CLR; input RESET; reg[15:0] TEMP; reg FLOW_UP; parameter B_SIZE=16; //二进制位宽,为便于移植,全部定义了成参数 reg[

文档评论(0)

159****1748 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档