教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

基于FPGA的数字频率计的设计(5)

来源:网络收集 时间:2026-08-19
导读: 电平持续时间为1S,用这个作为计数器的gate信号,计数器在1S内对fre_in脚信号的脉冲进行计数,所以输出的值单位为Hz。例如若当前是div_100000信号(高电平1S),检测到计数器溢出,说明输入频率大于9999Hz,显示的

电平持续时间为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字,全部文档内容请下载后查看。喜欢就下载吧 ……
基于FPGA的数字频率计的设计(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/454529.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)