基于FPGA的数字频率计的设计(5)
电平持续时间为1S,用这个作为计数器的gate信号,计数器在1S内对fre_in脚信号的脉冲进行计数,所以输出的值单位为Hz。例如若当前是div_100000信号(高电平1S),检测到计数器溢出,说明输入频率大于9999Hz,显示的数据并不准确,于是选择div_10000(高电平0.1S),显示计数单位为10Hz,若仍然检测到溢出,就选择div_1000(高电平0.01s)。
3.2.3 计数模块count
这个模块是一个十进制计数器,计数范围为0-9,count对输入的clk进行加法计数,当计数到9及4'b1001时,下一个clk脉冲来时count值归零,这样以实现一个简单的计数功能。计数模块电路原理图如图3-4所示。
图3-4计数模块原理图
根据模块实现的功能设计Verilog HDL部分源代码如下:
always@(posedge rst or posedge clk) begin if(rst) begin
count<=4'b0000; end else if(ena) begin
if(count==4'b1001) count<=4'b0000; else count<=count+4'b0001; end else begin
count<=count;
14
end end
assign qout=count;
assign full=(count==4'b1001);
上面的代码主要实现了当ena为1时当count等于9时自动清0否则自动加1当count为9是full给一个高电平1。这样来实现一个简单的计数功能。
3.2.4 单位控制模块count_4units
本模块是显示测量频率的单位部分,当分频模块进行自动档位变化的时候,用这个模块通过unit端口告知用户读数的单位。模块能读取的单位分别为1Hz,10Hz,100Hz,1kHz,10kHz。单位控制模块的原理图如图3-5所示。
图3-5单位控制模块原理图
根据模块实现的功能设计Verilog HDL部分源代码如下:
countc_d(.clk(clk),.ena(1'b1),.rst(rst),.qout(out_d),.full(ena_c)); countc_c(.clk(clk),.ena(ena_c),.rst(rst),.qout(out_c),.full(ena_b));
countc_b(.clk(clk),.ena(ena_b&ena_c),.rst(rst),.qout(out_b),.full(ena_a)); countc_a(.clk(clk),.ena(ena_a&ena_b&ena_c),.rst(rst),.qout(out_a),.full()) 以上程序是对四个count模块进行了例化,所以单位控制模块是由4个计数器组成的。
3.2.5 数码管位选模块led_sel
本模块是为了在数码管显示的时候对数码管进行选择性的点亮,用程序代码来控制数码管的使能端口。位选模块原理图如图3-6所示。
15
图3-6位选模块原理图
根据模块实现的功能设计Verilog HDL部分源代码如下:
parameter LED_NUM=4; parameter COUNT_BIT=2; input clk_ledc,rstn;
output[LED_NUM:1] led_ena; output[COUNT_BIT:1] led_count; reg[COUNT_BIT:1] count; assign led_count=count;
always@(posedge clk_ledc or negedge rstn) begin
if(!rstn) count<=2'd0; else count<=count+2'd1; end
reg[LED_NUM:1] led_ena; always@(count) begin
case(count)
2'd0:led_ena=4'b0001; 2'd1:led_ena=4'b0010; 2'd2:led_ena=4'b0100; 2'd3:led_ena=4'b1000; default:led_ena=4'b0000; endcase end
以上程序主要是为了当clk_ledc输入时钟的时候,led_count对4个数码
16
管进行动态扫描。
3.2.6 转换模块transform
这个模块相当于一个译码模块,把测量出的结果转换成能够在数码管上显示的模式。转换模块原理图如图3-7所示。
图3-7转换模块原理图
根据模块实现的功能设计Verilog HDL部分源代码如下: always@(posedge clk_lock) locked_d<=din; reg[6:0] codecache; always@(locked_d) begin
case(locked_d)
4'd0:codecache<=7'b1111110; 4'd1:codecache<=7'b0110000; 4'd2:codecache<=7'b1101101; 4'd3:codecache<=7'b1111001; 4'd4:codecache<=7'b0110011; 4'd5:codecache<=7'b1011011; 4'd6:codecache<=7'b1011111; 4'd7:codecache<=7'b1110000; 4'd8:codecache<=7'b1111111; 4'd9:codecache<=7'b1111011; default:codecache<=7'bzzzzzzz; endcase end
17
以上程序能够使程序中的十进制数转化为数码管能显示的二进制数。这样数码管才能够正常在上面进行数值的显示。
3.3 本章小结
本章为论文的主体部分,介绍了数字频率计的6个模块分别为:顶层模块,分频模块,计数模块,单位选择模块,数码管位选模块,转换模块。并且在章节中还对部分Verilog代码进行了简单的说明。
18
…… 此处隐藏:149字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




