基于FPGA的数字频率计的设计(4)
第3章 数字频率计模块设计
3.1 数字频率计设计指标
该频率计有三个输入信号fre_in,clk_50k,rstn其中clk_50k脚输入标准的50KHz方波信号,作为参考时钟fre_in为信号输入端,被测信号频率从这里送入,rstn为系统复位端,上电时该引脚需要保持一端时间低电平。该系统输出脚为a,b,c,d,e,f,g,unit,led_sel。a,b,c,d,e,f,g为数码管译码输出。unit表示当前显示数值的单位,可为1Hz,10Hz,100Hz,1kHz,10kHz。led_sel为数码管位选信号。该频率计测量范围为1Hz-99.99MHz,可根据输入信号频率自动调整显示数值的单位为合适的数值,并通过unit端口告知用户读数的单位。
本课题的数字频率计顶层RTL硬件电路图如图3-1所示。
图3-1顶层RTL硬件电路图
9
3.2 数字频率计各个模块
3.2.1 顶层模块fre_counter
顶层模块为本课题的最上层模块,由它来例化整个程序,把其它分开的小模块进行整合。其电路原理图如图3-2所示。
图3-2顶层模块原理图
根据模块实现的功能设计Verilog HDL源代码如下: module fre_counter(clk_50k,fre_in,rstn,led_sel,unit, a,b,c,d,e,f,g);
input clk_50k,fre_in,rstn; output[1:0] led_sel; output[2:0] unit; output a,b,c,d,e,f,g;
wire div_10,div_100,div_1000,div_10000,div_100000; clk_gen part_clk_gen(.rstn(rstn),.clk(clk_50k),.div_10(div_10),
.div_100(div_100),.div_1000(div_1000),.div_10000(div_10000),.div_100000(div_100000));
reg gate;
wire[3:0] count_a,count_b,count_c,count_d;
count_4units part_count(.clk(fre_in),.gate(gate),.out_a(count_a), .out_b(count_b),.out_c(count_c),.out_d(count_d)); reg[2:0] gate_sel; assign unit=gate_sel;
10
wire unit_H; reg unit_L;
always@(negedge count_a[3] or negedge gate) if(!gate) unit_L<=1'b0; else unit_L<=1'b1; assign
unit_H=((count_a==4'd0)&&(count_b==4'd0)&&(count_c==4'd0)&&(count_d==4'd0));
always@(negedge gate or negedge rstn) begin
if(!rstn) gate_sel<=3'd0;
else if(unit_L&&(gate_sel!=3'd4)) gate_sel<=gate_sel+3'd1; else if(unit_H&&(gate_sel!=3'd0)) gate_sel<=gate_sel-3'd1; else gate_sel<=gate_sel; end
always@(gate_sel or div_10 or div_100 or div_1000 or div_10000 or div_100000)
begin
case(gate_sel)
3'd0:gate=div_100000; 3'd1:gate=div_10000; 3'd2:gate=div_1000; 3'd3:gate=div_100; 3'd4:gate=div_10;
default:gate=div_100000; endcase end
wire d_n0_a,d_n0_b,d_n0_c,d_n0_d; wire a,b,c,d,e,f,g;
wire trans_ena_a,trans_ena_b,trans_ena_c,trans_ena_d;
11
wire ena_a,ena_b,ena_c,ena_d; wire clk_lock;
assign clk_lock=~gate;
transform part_tran_a(.d_n0(d_n0_a),.din(count_a),.clk_lock(clk_lock), .ena(trans_ena_a),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g));
transform part_tran_b(.d_n0(d_n0_b),.din(count_b),.clk_lock(clk_lock), .ena(trans_ena_b),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g));
transform part_tran_c(.d_n0(d_n0_c),.din(count_c),.clk_lock(clk_lock), .ena(trans_ena_c),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g));
transform part_tran_d(.d_n0(d_n0_d),.din(count_d),.clk_lock(clk_lock), .ena(trans_ena_d),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g)); wire clk_ledc;
assign clk_ledc=div_1000;
led_sel part_led_sel(.rstn(rstn),.clk_ledc(clk_ledc),
.led_ena({ena_a,ena_b,ena_c,ena_d}),.led_count(led_sel)); assign trans_ena_a=ena_a&d_n0_a;
assign trans_ena_b=ena_b&(d_n0_b|d_n0_a);
assign trans_ena_c=(d_n0_c|d_n0_b|d_n0_a)&ena_c; assign trans_ena_d=ena_d; endmodule
以上程序把clk_gen,count_4units,transform 和 led_sel这几个模块连起来进行了整个程序的整合。
3.2.2 分频模块clk_gen
这个模块主要是对给的总频率50khz进行了5次分频,通过这5个不同的频率来完成档位的自动转换。分频模块的电路原理图如图3-3所示。
12
图3-3分频模块原理图
根据模块实现的功能设计Verilog HDL部分源代码如下: always@(posedge clk or negedge rstn) begin
if(!rstn) count1<=3'd0;
else if(count1==3'd4) count1<=3'd0;
else count1<=count1+3'd1; end
reg d1;
always@(posedge count1[2] or negedge rstn) begin
if(!rstn) d1<=1'd0; else d1<=~d1; end
assign div_10=d1; reg[2:0] count2;
always@(posedge d1 or negedge rstn) begin
if(!rstn) count2<=3'd0;
else if(count2==3'd4) count2<=3'd0; else count2<=count2+3'd1; end
其中,div_10是把输入的clk_10分频,为了得到占空比50%的方波,我先把它5分频,再2分频。count1==3'd4,是因为count1有0,1,2,3,4。这5个状态,d1用于2分频。若输入的clk信号为50khz则div_100000的高
13
…… 此处隐藏:1291字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]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,深
- 弟子规全文带拼音




