




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《课件通病》课件
- 《国际私法辅导课件》课件
- 嫦娥本月阿波罗赫尔墨斯等都是有关飞行的神话由于科学技术发展
- 《PCI术后康复指导》课件
- 天津市部分区2025届高三下学期3月一模试题 语文 含解析
- 2025年天津从业资格证货运考试试题和答案
- 西南政法大学《麻醉学实验》2023-2024学年第一学期期末试卷
- 四川商务职业学院《渗流力学》2023-2024学年第二学期期末试卷
- 晋中学院《软件分析设计与建模》2023-2024学年第二学期期末试卷
- 南昌师范学院《民族民间舞蹈》2023-2024学年第二学期期末试卷
- (完整)关于高压线下施工安全专项方案
- 2022年新疆维吾尔自治区三校生高考语文备考试题及答案解析
- 国际学术交流英语知到章节答案智慧树2023年哈尔滨工业大学
- 反三角函数正课
- 高考标准化考场建设的方案
- 乳腺癌NCCN指南中文版2022.v2
- GB/T 38942-2020压力管道规范公用管道
- 家居建材全屋定制店面运营管理细则规定
- GB/T 27924-2011工业货架规格尺寸与额定荷载
- 大班语言《他们看见了一只猫》课件
- 消毒产品进货检查验收制度
评论
0/150
提交评论