版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简单4位数字频率计设计一、 设计要求(1)、利用Verilog HDL语言行为描述方法,设计一个简单的4位数字频率计;(2)、要求输入标准时钟信号频率为1MHz,系统可计数频率范围为1Hz9999Hz;(3)、系统具有复位信号,且当计数频率发生溢出时能够给出指示信号,计数的频率通过4个共阴数码管进行显示(动态扫描显示)。二、 系统结构框图根据设计要求,输入系统的标准时钟信号要先经过分频后得到一个周期为2s占空比50%的信号,用来对输入信号采样,得到采样信号GATED_CLK;为了能够控制计数模块对采样的信号进行正常计数及保存计数后的频率,这要求,要在计数器刚好完成计数后立即将数据输出给显示部分
2、进行显示,并且要为下次计数做好准备,因此数据信号处理部分还要有产生控制计数器的两个信号LOAD和COUNTER_CLR,LOAD信号控制计数完成后的数据及时输出给显示,COUNTER_CLR信号控制计数器清零;计数模块就是完成对采样信号的计数,并当计数发生溢出时产生溢出信号FLOW_UP;显示控制模块要完成将计数模块输入的信号进行译码显示。三、 信号描述测试信号采样原理:GATED_CLK、LOAD、COUNTER_CLR信号的关系:程序中用到的信号变量:FREQUENCY_COUNTROL_BLOCKFREQUENCY_COUNTER_BLOCKFREQUENCY_DISPLY_BLOCKG
3、ATED_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_
4、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;reg19:0 cn;reg A1,A2;/信号分频:由CLK_IN得到分频后的信号DIVIDE_CLK(0.5Hz)always (posedge CLK_IN) beginif(RESET)beginDIVIDE_CLK<=0;cn<=0;endelse if(cn=10000
5、00) begincn<=0;DIVIDE_CLK<=DIVIDE_CLK; endelsecn<=cn+1;end/频率计数控制信号的产生:产生LOAD信号和COUNTER_CLR信号 always (posedge SIGNAL_TEST)beginA1<=DIVIDE_CLK;endalways (posedge SIGNAL_TEST)beginA2=A1;endalways (A1 or A2)beginLOAD=A1&&(!A2);endalways (posedge SIGNAL_TEST)COUNTER_CLR=LOAD;/产生驱动计数模
6、块的信号GATED_CLK,也就是被计数模块检测的信号 assign GATED_CLK=SIGNAL_TEST&DIVIDE_CLK;endmodule(2)、计数器模块:module FREQUENCY_COUNTER_BLOCK(COUT,FLOW_UP,CLOCK_IN,RESET,LOAD,COUNTER_CLR);output15:0 COUT;output FLOW_UP;input CLOCK_IN;input LOAD;input COUNTER_CLR;input RESET;reg15:0 TEMP;reg FLOW_UP;parameter B_SIZE=16;
7、 /二进制位宽,为便于移植,所有定义了成参数regB_SIZE+3:0 bcd; /转换后的BCD码的位数要比二进制多4位regB_SIZE-1:0 binary;regB_SIZE-1:0 bin; regB_SIZE+3:0 result;/计数器完成计数得到二进制表示的频率数值always (CLOCK_IN or RESET or LOAD or COUNTER_CLR)beginif(RESET|COUNTER_CLR)beginTEMP<=0;FLOW_UP<=0;endelse if(LOAD)binary<=TEMP;else if(TEMP>9999)
8、beginFLOW_UP<=1;binary<=9999;endelseif(CLOCK_IN)TEMP<=TEMP+1;end/将二进制表示(或十六进制表示)的数转换为BCD码的形式,便于数码管译码显示always (binary or RESET)beginbin=binary;result=0;if(RESET)bcd<=0;elsebeginrepeat(B_SIZE-1)beginresult0=binB_SIZE-1;if(result3:0>4)result3:0=result3:0+4'd3;if(result7:4>4)result
9、7:4=result7:4+4'd3;if(result11:8>4)result11:8=result11:8+4'd3;if(result15:12>4)result15:12=result15:12+4'd3;if(result19:16>4)result19:16=result19:16+4'd3;result=result<<1;bin=bin<<1;endresult0=binB_SIZE-1;bcd<=result;endend assign COUT=bcd15:0;endmodule(3)信号显示
10、处理:module FREQUENCY_DISPLY_BLOCK(DOUT,DCLK_IN,RESET,CDIN);output10:0 DOUT;input15:0 CDIN;input DCLK_IN;input RESET;reg10:0 DOUT;reg3:0 Temp1;reg1:0 cn;always (posedge DCLK_IN) /设置成动态扫描beginif(RESET)cn<=0;elsebegincn<=cn+1;case(cn)2'b00: begin DOUT10:7<=4'b0001; Temp1<=CDIN3:0;end
11、2'b01: begin DOUT10:7<=4'b0010; Temp1<=CDIN7:4;end2'b10: begin DOUT10:7<=4'b0100; Temp1<=CDIN11:8;end2'b11: begin DOUT10:7<=4'b1000; Temp1<=CDIN15:12;endendcaseendendalways (Temp1) /译码显示begincase(Temp1)4'b0000: DOUT6:0<=7'b0111111; /3fh=04'b00
12、01: DOUT6:0<=7'b0000110; /06h=14'b0010: DOUT6:0<=7'b1010110; /56h=24'b0011: DOUT6:0<=7'b1001111; /4fh=34'b0100: DOUT6:0<=7'b1100110; /66h=44'b0101: DOUT6:0<=7'b1101101; /6dh=54'b0110: DOUT6:0<=7'b1111101; /7dh=64'b0111: DOUT6:0<=7&
13、#39;b0000111; /07h=74'b1000: DOUT6:0<=7'b1111111; /7fh=84'b1001: DOUT6:0<=7'b1101111; /6fh=9default: DOUT6:0<=7'b0111111; /3fhendcaseendendmodule顶层verilog程序:module FREQUENCY_COUNTER_DISPLY_BLOCK(DOUT,FLOW_UP,CLK,TEST_CLK_IN,RESET);output10:0 DOUT;output FLOW_UP;input CLK
14、;input TEST_CLK_IN;input RESET;wire gated_clk,load,counter_clr;wire15:0 cout_cdin;FREQUENCY_COUNTROL_BLOCK u1(.GATED_CLK(gated_clk),.LOAD(load),.COUNTER_CLR(counter_clr),.CLK_IN(CLK),.SIGNAL_TEST(TEST_CLK_IN),.RESET(RESET); FREQUENCY_COUNTER_BLOCK u2(.COUT(cout_cdin),.FLOW_UP(FLOW_UP),.CLOCK_IN(gated_clk),.RESET(RESET),.LOAD(load),.COUNTER_CLR(counter_clr);FREQUENCY_DISPLY_BLOCK u3(.DOUT(DOUT),.DCLK_IN(CLK),.RESET(RESET),.CDIN(cout_cdin); endmodule五、 仿真结果分析仿真结果如图所示,输入标准时钟频率为1MHz,经过分频后变成频率为0.5Hz的信号,将其与测试信号相与得到采样信号GATED_CLK,同时利用测试信号和0.5Hz的分频信号可以产生LOAD信号和COUNTER_CLR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能助力保险产品定价优化
- 软件开发部经理年度述职报告
- 轻质钢结构别墅施工工艺
- 人工智能监管沙盒应用探索
- 餐车电路施工方案
- 党建规范制度标准
- 人工智能提升服务效率研究
- 2026年国家电工进网作业许可证续期考试题库及答案(共50题)
- 2026年广东省继续教育公需课《高质量发展》考核试题及答案
- 2026年二级造价工程师职业资格考试(建设工程计量与计价实务、土木建筑工程)综合能力测试题及答案一
- 机关事业单位工作人员轮岗交流制度
- 2026贵州贵阳修文县县属国有企业招聘工作人员41人笔试备考题库及答案详解
- 2026云南大理州中医医院招聘编制外工作人员(第一批)8人笔试备考试题及答案详解
- 2026浙江台州市温岭市市场监督管理局招聘编外人员1人笔试备考试题及答案详解
- 高中二年级生物:内环境稳态与调节期中学业质量分层评价教学设计
- 2026年株洲市荷塘区事业编单位人员招聘考试参考题库及答案详解
- 2026学年广西壮族自治区南宁市二年级数学期末自测模拟经典测试题(附答案)详细答案和解析
- 2026年北京市中考英语试卷附答案
- (二模)2025~2026学年度苏锡常镇四市高三教学情况调研(二)政治试题卷(含答案)
- 冷链温控偏差应急处置预案
- 动力车间预防性维护制度方案
评论
0/150
提交评论