课程设计论文基于FPGA的verilog频率计设计.doc

上传人:sccc 文档编号:4868794 上传时间:2023-05-20 格式:DOC 页数:19 大小:929.01KB
返回 下载 相关 举报
课程设计论文基于FPGA的verilog频率计设计.doc_第1页
第1页 / 共19页
课程设计论文基于FPGA的verilog频率计设计.doc_第2页
第2页 / 共19页
课程设计论文基于FPGA的verilog频率计设计.doc_第3页
第3页 / 共19页
课程设计论文基于FPGA的verilog频率计设计.doc_第4页
第4页 / 共19页
课程设计论文基于FPGA的verilog频率计设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《课程设计论文基于FPGA的verilog频率计设计.doc》由会员分享,可在线阅读,更多相关《课程设计论文基于FPGA的verilog频率计设计.doc(19页珍藏版)》请在三一办公上搜索。

1、电 子 科 技 大 学(基于FPGA的频率计设计)题目 :简易频率计的设计指导教师: 姓名 : 学号 :专业 :光电学院一专业摘要本文主要介绍了基于FPGA 的简易多量程频率计的设计,使用硬件描述语言verilog来实现对硬件的控制,在软件ISE上实现编程的编译综合,在系统时钟48Mhz下可正常工作。该数字频率计采用测频的方法,能准确的测量频率在10Hz到100MHz之间的信号。使用ModelSim仿真软件对Verilog程序做了仿真,并完成了综合布局布线,通过ISE下载到Spartan3A开发板上完成测试。 关键词:FPGA ,verilog,ISE,测频方法AbstractThis pap

2、er mainly introduces the simple more range based on FPGA design of frequency meter,Use hardware description language verilog to realize the control of hardware,In the software realize the compilation of the programming ISE on comprehensive,In the system clock can work normally under 48 Mhz。The digit

3、al frequency meter frequency measurement method used, can accurate measurement frequency in 10 Hz to 100 MHz of signals between。Use ModelSim simulation software Verilog program to do the simulation, and completed the overall layout wiring,Through the ISE downloaded to Spartan3A development board com

4、plete test。Keywords: FPGA, Verilog, ISE, Frequency Measurement目 录第一章测量原理与方法1.1测频方法1.2测周方法1.3等精度测量法1.4放大整形电路1.5时基信号产生第二章 任务要求第三章 各模块功能及介绍3.1 分频器3.2 闸门选择器3.3 频率计数器3.4 锁存器3.5 扫描显示控制译码系统第四章 顶层电路及总体仿真4.1 顶层电路4.2 总体仿真结果4.3 测试结果第一章:测量原理与方法所谓“频率”,就是周期性信号在单位时间(秒)内变化的次数。若在一定的时间间隔T内计数,计得某周期性信号的重复变化次数为N,则该信号的频率

5、可表达为:f = N / T所以测量频率就要分别知道N和T的值,由此,测量频率的方法一般有三种:测频方法、测周方法和等精度测量。1.1 测频方法这种方法即已知时基信号(频率或周期确定)做门控信号,T为已知量,然后在门控信号有效的时间段内进行输入脉冲的计数,原理图如下图所示:首先,被测信号(以正弦波为例)经过放大整形后转变成方波脉冲,其重复频率等于被测信号频率。把方波脉冲加到闸门的输入端。由一个高稳定的石英振荡器和一系列数字分频器组成了时基信号发生器,它输出时间基准(或频率基准)信号去控制门控电路形成门控信号,门控信号的作用时间T是非常准确的(由石英振荡器决定)。门控信号控制闸门的开与闭,只有在

6、闸门开通的时间内,方波脉冲才能通过闸门成为被计数的脉冲由计数器计数。闸门开通的时间称为闸门时间,其长度等于门控信号作用时间T。比如,时间基准信号的重复周期为1S,加到闸门的门控信号作用时间T亦准确地等于1S,即闸门的开通时间“闸门时间”为1S。在这一段时间内,若计数器计得N=100000个数,根据公式f = N / T,那么被测频率就是100000Hz。如果计数式频率计的显示器单位为“KHz”,则显示100.000KHz,即小数点定位在第三位。不难设想,若将闸门时间设为T=0.1S,则计数值为10000,这时,显示器的小数点只要根据闸门时间T的改变也随之自动往右移动一位(自动定位),那么,显示

7、的结果为100.00Khz。在计数式数字频率计中,通过选择不同的闸门时间,可以改变频率计的测量范围和测量精度。1.2 测周方法测周方法即:被测信号(频率或周期待测)做门控信号,T为未知量,做门控信号T,然后在门控信号有效的时间段内对时基信号脉冲计数,原理图如下图所示:计数器测周的基本原理刚好与测频相反,即由被测信号控制主门开门,而用时标脉冲进行计数,所以实质上也是一种比较测量方法。1.3 等精度测量法等精度测量法的核心思想是通过闸门信号与被测信号同步,将闸门时间控制为被测信号周期长度的整数倍。测量时,先打开预置闸门,当检测到被测信号脉冲沿到达时,标准信号时钟开始计数。预置闸门关闭时,标准信号并

8、不立即停止计数,而是等检测到被测信号脉冲沿到达时才停止,完成被测信号整数个周期的测量。测量的实际闸门时间可能会与预置闸门时间不完全相同,但最大差值不会超过被测信号的一个周期。在等精度测量法中,相对误差与被测信号本身的频率特性无关,即对整个测量域而言,测量精度相等,因而称之为“等精度测量”。标准信号的计数值越大则测量相对误差越小,即提高门限时间和标准信号频率可以提高测量精度。在精度不变的情况下,提高标准信号频率可以缩短门限时间,提高测量速度。原理图如下:1.4 放大整形电路当输入信号为0.5V时,仿真放大整形后的输出结果如下图示图 1-6 放大整形电路仿真结果(一)当输入信号为3V时,仿真放大整

9、形后的输出结果如下图示:当输入信号为10V时,仿真放大整形后的输出结果如下图示:图 1-6 放大整形电路仿真结果(三)1.5时基信号的产生图 1-7 时基信号产生电路第二章:任务要求设计一个计数式频率计,其频率测量范围为10Hz100MHz,测量结果用6只数码管显示。有三个带锁按键开关(任何时候都只能有一个被按下)被用来选择1S、0.1S和0.01S三个闸门时间中的一个。有一个按钮开关用来使频率计复位。有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。第三章:各功能模块的基本介绍3.1分频器由于晶体振荡器提供的为48M的时钟,而在整个频率计里将用到周期为2s、0.2s和0

10、.02s的闸门信号,还有译码显示的扫描信号1KHz ,所以我们在此模块先分频产生1Hz、10Hz、100Hz、1KHz四个分频信号,以留作其它模块用。分频分别采用4个计数器来实现,当计到一定的值时输出的分频信号翻转,最后分别获得4个分频输出,分频器模块如下图所示:此模块的复位为同步方式,当复位有效时,输出将清零。源程序如下:module clk_div(reset, clk,clk_1hz, clk_10hz, clk_100hz,clk_1khz);input reset,clk;output reg clk_1hz,clk_10hz,clk_100hz,clk_1khz;reg 29:0

11、counter1,counter2,counter3,counter4; /分频计数值always (posedge clk or negedge reset) beginif(!reset) begincounter1=0;counter2=0;counter3=0;counter4=0;clk_1hz=0;clk_10hz=0;clk_100hz=0;clk_1khz=0;endelse beginif(counter1=2400000)begin counter1=0;clk_1hz=clk_1hz; endelse begin counter1=counter1+1; endif(co

12、unter2=240000) begin counter2=0;clk_10hz=clk_10hz;end else begin counter2=counter2+1; endif(counter3=24000) begin counter3=0;clk_100hz=clk_100hz; endelse begin counter3=counter3+1; endif(counter4=2400) begin counter4=0;clk_1khz=clk_1khz; endelsebegin counter4=counter4+1; end endendendmodule仿真图如下所示:3

13、.2闸门选择器:该模块主要实现对闸门的选择功能,通过输入的门选信号来确定输出的闸门,生成的模块如下图所示:具体实现方法如下:当三个门选信号中有且仅有门选信号gate_ch1有效时,reg变量gate为clk_1hz ,当三个门选信号中有且仅有门选信号gate_ch2有效时,reg变量gate为clk_10hz;当三个门选信号中有且仅有门选信号gate_ch3有效时,reg变量gate为clk_100hz。reg变量gate再二分频则是输出的闸门信号gate_out(dot 为标记信号,标记了当前闸门的选择情况)。如果同时有两个或以上的门另外输出的译码扫描信号为clk_1khz ,供后面的扫描译

14、码模块使用程序如下:module gate_sel(reset,gate_ch1,gate_ch2,gate_ch3, clk_1hz,clk_10hz,clk_100hz,clk_1khz, gate_outdot); input reset,gate_ch1,gate_ch2,gate_ch3,clk_1hz,clk_10hz,clk_100hz,clk_1khz;output reg gate_out;output reg 2:0dot; always (posedge clk_1khz or negedge reset) beginif(!reset) begin gate_out=0

15、;dot=3b111;endelse beginif(gate_ch1=0)&(gate_ch2=1)&(gate_ch3=1)begin gate_out=clk_1hz; dot=3b011;end else if(gate_ch1=1)&(gate_ch2=0)&(gate_ch3=1)begin gate_out=clk_10hz;dot=3b010;endelse if(gate_ch1=1)&(gate_ch2=1)&(gate_ch3=0)begin gate_out=clk_100hz;dot=3b001;end elsebegin gate_out=0;dot=3b111;e

16、ndendendendmodule3.3频率计计数频率计数器的功能为在输入的闸门信号的控制下对输入脉冲时行计数,它是一个7拉的模十计数器。生成的模块如下图所示:当gate_out信号为高时才计数器才计数,在gate_out为低后,马上将此时计数的值cnt赋给输出cnte ,然后当输入carry_in信号再过一个脉冲后降计数的值cn清零,以备下次闸门有效时又重新开始计数。源程序如下:module count(carry_in,gate_out,reset,cnte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6);input carry_in,gate_out,rese

17、t;output reg 3:0 cnte0,cnte1,cnte2,cnte3,cnte4,cnte5,cnte6;/在每一次闸门有效时读数/器传递的计数值reg 3:0 cnt0,cnt1,cnt2,cnt3,cnt4,cnt5,cnt6; /计数器的6个计数值reg 2:0 counter6; / 延迟将counter-num清零的计数值always (posedge carry_in or negedge reset) beginif(!reset) begincnt0=4b0000;cnt1=4b0000;cnt2=4b0000;cnt3=4b0000;cnt4=4b0000;cnt

18、5=4b0000;cnt6=4b0000;/判断是否溢出cnte0=4b0000;cnte1=4b0000;cnte2=4b0000;cnte3=4b0000;cnte4=4b0000;cnte5=4b0000;counter6=0;end else begin if(gate_out=1) begin counter6=0;if(cnt5=4b1001)&(cnt4=4b1001)&(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4b0000;cnt1=4b0000;cnt2=4b0000;cnt3=4b00

19、00;cnt4=4b0000;cnt5=4b0000;cnt6=cnt6+4b0001;end else beginif(cnt4=4b1001)&(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b0000;cnt4=4b0000; cnt5=4b0001+cnt5; cnt6=cnt6;end else beginif(cnt3=4b1001)&(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001)be

20、gincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b0000;cnt4=4b0001+cnt4; cnt5=cnt5; cnt6=cnt6;end else beginif(cnt2=4b1001)&(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b0001+cnt3;cnt4=cnt4; cnt5=cnt5; cnt6=cnt6;end else begin if(cnt1=4b1001)&(cnt0=4b1001) begincnt0=4

21、b0000; cnt1=4b0000; cnt2=4b0001+cnt2; cnt3=cnt3;cnt4=cnt4; cnt5=cnt5;cnt6=cnt6;end else begin if(cnt0=4b1001) begincnt0=4b0000; cnt1=4b0001+cnt1; cnt2=cnt2; cnt3=cnt3;cnt4=cnt4; cnt5=cnt5; cnt6=cnt6;end else begincnt0=4b0001+cnt0; cnt1=cnt1; cnt2=cnt2; cnt3=cnt3;cnt4=cnt4; cnt5=cnt5; cnt6=cnt6;end e

22、nd end end end end end else begin if(counter6=2b01) begincnt0=4b0000; cnt1=4b0000; cnt2=4b0000; cnt3=4b0000;cnt4=4b0000; cnt5=4b0000; cnt6=4b0000;end else begincounter6=counter6+1; cnte0=cnt0; cnte1=cnt1;cnte2=cnt2;cnte3=cnt3; cnte4=cnt4; cnte5=cnt5; cnte6=cnt6;end end end endendmodule 3.4锁存器如果计数器输出

23、直接与译码器相连接,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,设锁存器后,则不再跳变,便可清晰读出计数结果。其生成的功能模块如图所示:这模块实现了对七位计数结果的锁存功能。程序很简单如下所示:module data_latch(latch_enable,reset,num0, num 1, num 2, num 3, num 4, num 5,over,n_0,n_1,n_2,n_3,n_4,n_5,over_out);input reset,latch_enable,over;input 3:0 num 0, num 1,

24、 num 2, num 3, num 4, num 5;output reg 3:0n_0,n_1,n_2,n_3,n_4,n_5;output reg over_out;reg over_old,over_new;always (negedge latch_enable or negedge reset) begin if(!reset) beginn_0=4b0000; n_1=4b0000; n_2=4b0000; n_3=4b0000; n_4=4b0000; n_5=4b0000; end else beginn_0=digi0; n_1=digi1;n_2=digi2; n_3=d

25、igi3;n_4=digi4; n_5=digi5; end endalways(negedge latch_enable)beginover_new=over;endalways(over_new)beginif(over_old=1)&(over_new=1)begin over_out=0;over_old=over_new; endelsebegin over_out=1;over_old=over_new; endendendmodule3.5扫描显示译码系统本模块在扫描信号的clk-1khz的控制下,对多路选择器进行扫描,实现对实现对六位已经锁存的计数结果的扫描输出,由于人眼的视觉

26、暂留效应,每支数码管只需大于25Hz的扫描频率即可实现动态扫描,所以我们用1KHz的扫描信号足以。其生成的功能模块如图所示:第四章 顶层电路及总体仿真4.1 顶层电路4.2 总体仿真结果为了验证我们的设计是否正确,我们用ModelSim对以上设计进行了仿真,仿真精度达到ps级,基准时钟clk用20883ns,结果如下所示,在1Hz到10000Hz中仿真结果与理论值相等,在输入为100000Hz时出现了3Hz的误差,当输入被测信号为1000000Hz时,出现了26Hz的误差。在被测频率达到百兆赫兹以上出现溢出,溢出指示灯变亮,指示溢出。仿真结果波形如下图所示:4.3 测试结果在成功下载并运行后,为评估该设计系统的实际测量效果,做了一次对比实验,选用频率可调的函数发生器,同时用示波器做同步的跟踪。测得的数据较为精确,最低频率可以测到10HZ,当输入信号不大于100MHZ时,显示结果跟函数发生器以及示波器的显示全吻合,当输入信号频率达到100MHZ时,测得的结果和显波器的显示出现了误差值,当输入信号频率达到1000MHZ时,测得的结果和显波器的显示出现了溢出,溢出指示灯变亮。由于所使用的函数发生器最大只能产生100MHZ的信号,所以我们最高只测到100MHZ。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号