收藏 分销(赏)

实验六:数字频率计的设计.doc

上传人:快乐****生活 文档编号:2578667 上传时间:2024-06-01 格式:DOC 页数:14 大小:215.04KB
下载 相关 举报
实验六:数字频率计的设计.doc_第1页
第1页 / 共14页
实验六:数字频率计的设计.doc_第2页
第2页 / 共14页
实验六:数字频率计的设计.doc_第3页
第3页 / 共14页
实验六:数字频率计的设计.doc_第4页
第4页 / 共14页
实验六:数字频率计的设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、实验六:数字频率计的设计 作者: 日期:14 个人收集整理 勿做商业用途 南昌大学实验报告学生姓名: 学号: 专业班级: 实验类型:验证 综合 设计 创新 实验日期: 12.14_ 实验成绩: 实验五数字频率计的设计一、实验目的 1。了解直接测频的方法和原理. 2。掌握如何在 FPGA 内部设计多种功能模块. 3.掌握 VHDL 在测量模块设计方面的技巧。二、实验原理所谓频率就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔 T(也称闸门时间)内测得这个周期性信号的重复变化次数为 N,则其频率可表示为fN/T由上面的表示式可以看到,若时间间隔 T 取 1s,则 fN.由于闸门的起始

2、和结束的时刻对于信号来说是随机的,将会有一个脉冲周期的量化误差.进一步分析测量准确度:设待测信号脉冲周期为 Tx,频率为 Fx,当测量时间为 T=1s 时,测量准确度为=Tx/T=1/Fx。由此可知这种直接测频法的测量准确度与被测信号的频率有关,当待测信号频率较高时,测量准确度也较高,反之测量准确度较低.因此,这种直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变的要求。若要得到在整个测量频段内的测量精度保持不变的要求,应该考虑待精度频率测量等其它方法。等精度频率测频的实现方法,可以用图 17-1 所示的框图来实现。图 17-1 等精度测频实现框图本实验采用直接测频

3、法进行频率测量.闸门时间固定为 1s,闸门信号是一个0。5Hz 的方波,在闸门有效(高电平)期间,对输入的脉冲进行计数,在闸门信号的下降沿时刻,所存当前的计数值,并且清零所有的频率计数器.显示的内容是闸门下降沿时锁存的值.因为闸门时间我们设定为 1s,所以这种频率计仅能测出频率大于或者等于 1Hz 的情况,且频率越高,精度也越高。实际应用中,频率计的闸门时间是个可变量,当频率小于 1Hz时,闸门时间就要适当放大。采用一个标准的时钟,在单位时间内如:0。1秒对被测信号的脉冲进行计数,即为信号的频率。在设计频率计的时候,八个七段码管最多可以显示 99,999,999Hz,因此在设计时候用八个 4位

4、二进制码(BCD 码)来表示,另外还必须有同样的八个 4位二进制码来对输入的频率进行计数,在闸门下降沿的时候,将后者的值锁存到寄存器中。其信号的时序关系如下图 172 所示:图 173控制信号时序关系三、实验内容本实验要完成的任务就是设计一个频率计,系统时钟选择核心板上的 50M的时钟,闸门时间为 1s(通过对系统时钟进行分频得到),在闸门为高电平期间,对输入的频率进行计数,当闸门变低的时候,记录当前的频率值,并将频率计数器清零,频率的显示每过 2秒刷新一次.外部CLR清零信号可以使当前寄存值清零。其实现框图如下图173 所示:外部CLR清零在本实验中,用到的模块有数字信号源模块、按钮开关模块

5、、50M 系统时钟源模块、数码管显示模块等.其中数码管、数字信号源、按钮开关与 FPGA 的连接电路和管脚连接这里不在赘述。50M 系统时钟源的模块位于 EP2C35 核心板的中上方通过一个贴片的 50M 有源晶体来产生 50MHZ的时钟信号,其与 FPGA 的管脚连接如表 171 所示。表 17-150M 系统时钟与 FPGA 的管脚连接表信号名称对应 FPGA 管脚名说明系统时钟源A13(GCLK9)50MHZ 系统时钟四、实验步骤1、打开 QUARTUSII 软件,新建一个工程。2、建完工程之后,再新建一个 VHDL File,打开 VHDL 编辑器对话框.3、按照实验原理和自己的想法,

6、在 VHDL编辑窗口编写 VHDL程序,本实验共分为5个模块,每一个模块源程序完成一定的功能。其具体的功能如下表 17-2:表 172 示例程序功能表文件名称完成功能P1产生 1HZ 的闸门信号和 1KHZ 的显示扫描信号P2在时钟的作用下生成测频的控制信号P3十进制计数器,用32位来显示8个4位BCD数P432 位的锁存器,在锁存控制信号的作用下,将计数的值锁存P5显示译码,将锁存的数据显示出来实验程序如下所示: - Title:源程序p1 - Author:参考自网上 - Data: 2012-12-8 - LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL

7、; USE IEEE。STD_LOGIC_UNSIGNED.ALL; ENTITY p1 IS PORT ( clk50m : IN STD_LOGIC; -50M系统时钟输入 clk1kHZ : OUT STD_LOGIC; -1KHZ显示扫描时钟输出 clk1HZ : OUT STD_LOGIC);1HZ闸门信号产生 END p1; ARCHITECTURE behave OF p1 IS BEGIN PROCESS(clk50m) -产生显示扫描时钟1KHZ variable cnttemp : INTEGER RANGE 0 TO 99999; BEGIN IF clk50m=1 AN

8、D clk50mevent THEN IF cnttemp=99999 THEN cnttemp:=0; ELSE IF cnttemp50000 THEN clk1khz=1; ELSE clk1khz=0; END IF; cnttemp:=cnttemp+1; END IF; END IF; END PROCESS; PROCESS(clk50m) -产生显示扫描时钟1KHZ variable cnt : INTEGER RANGE 0 TO 49999999; BEGIN IF clk50m=1 AND clk50mevent THEN IF cnt=49999999 THEN cnt

9、:=0; ELSE IF cnt25000000 THEN clk1hz=1; ELSE clk1hz=0; END IF; cnt:=cnt+1; END IF; END IF; END PROCESS; END behave; - - Title:p2源程序 - Author:参考自网上 - Data: 201212-8 - LIBRARY IEEE;USE IEEE.STD_LOGIC_1164。ALL; USE IEEE.STD_LOGIC_UNSIGNED。ALL;ENTITY p2 IS PORT ( CLK1hz: IN STD_LOGIC; -1 Hz测频控制时钟 EN: OU

10、T STD_LOGIC; -计数器时钟使能 CLR1: OUT STD_LOGIC; -计数器清零 LOAD: OUT STD_LOGIC); 输出锁存信号END p2;ARCHITECTURE behave OF p2 IS SIGNAL DIV2CLK :STD_LOGIC;SIGNAL CLR :STD_LOGIC;BEGIN PROCESS ( CLK1hz ) IS BEGIN IF CLK1hzEVENT AND CLK1hz= 1 -1 HZ时钟二分频 THEN DIV2CLK=NOT DIV2CLK; END IF ; END PROCESS; PROCESS ( CLK1hz

11、,DIV2CLK ) BEGIN IF CLK1hz= 0 AND DIV2CLK = 0 THEN -产生计数器清零信号 CLR= 1; ELSE CLR= 0 ; END IF; END PROCESS; LOAD0);elsIF(CLKEVENT AND CLK=1)THEN - 实现32位十进制BCD计数 IF(EN=1)THEN IF(DIN1(3 DOWNTO 0)=”1001”)THEN DIN1(3 DOWNTO 0):=”0000; IF(DIN1(7 DOWNTO 4)=”1001)THEN DIN1(7 DOWNTO 4):=”0000; IF(DIN1(11 DOWNT

12、O 8)=1001)THEN DIN1(11 DOWNTO 8):=0000; IF(DIN1(15 DOWNTO 12)=1001”)THEN DIN1(15 DOWNTO 12):=0000; IF(DIN1(19 DOWNTO 16)=1001)THEN DIN1(19 DOWNTO 16):=”0000; IF(DIN1(23 DOWNTO 20)=1001”)THEN DIN1(23 DOWNTO 20):=0000”; IF(DIN1(27 DOWNTO 24)=1001)THEN DIN1(27 DOWNTO 24):=0000; DIN1(31 DOWNTO 28):=DIN1

13、(31 DOWNTO 28) + 1; ELSIF(DIN1(31 DOWNTO 24)=10011001)THEN DIN1(31 DOWNTO 24):=(OTHERS=0); ELSE DIN1(27 DOWNTO 24):=DIN1(27 DOWNTO 24)+1; END IF; ELSE DIN1(23 DOWNTO 20):=DIN1(23 DOWNTO 20)+1; END IF; ELSE DIN1(19 DOWNTO 16):=DIN1(19 DOWNTO 16)+1; END IF; ELSE DIN1(15 DOWNTO 12):=DIN1(15 DOWNTO 12)+

14、1; END IF; ELSE DIN1(11 DOWNTO 8):=DIN1(11 DOWNTO 8)+1; END IF; ELSE DIN1(7 DOWNTO 4):=DIN1(7 DOWNTO 4)+1; END IF; ELSE DIN1(3 DOWNTO 0):=DIN1(3 DOWNTO 0)+1; END IF; END IF;END IF;DIN=DIN1; 将中间变量值赋给输出结果变量DINEND PROCESS;END BEHAVE;- - Title:P4 - Author:参考自网上 - Data: 2012-128 -LIBRARY IEEE; USE IEEE。S

15、TD_LOGIC_1164.ALL;ENTITY p4 IS PORT( CLR:IN STD_LOGIC; - 外部清零信号 DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0); -输入32位十进制BCD数 LOAD: IN STD_LOGIC; 输出锁存信号 DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0); - 输出32位十进制BCD结果END ENTITY p4;ARCHITECTURE behave OF P4 IS BEGINPROCESS ( LOAD, DIN ) ISBEGIN IF LOAD EVENT AND LOAD

16、= 1 THEN DOUT=DIN; END IF; IF(CLR=0)THEN DOUT0); END IF;END PROCESS;END BEHAVE;- - Title:P5 - Author:参考自网上 - Data: 2012-128 -LIBRARY IEEE;USE IEEE。STD_LOGIC_1164。ALL;USE IEEE。STD_LOGIC_UNSIGNED.ALL;ENTITY P5 ISPORT(CLK1KHZ:IN STD_LOGIC; 输入1KHZ扫描频率 DOUT:IN STD_LOGIC_VECTOR(31 DOWNTO 0); 输入待显示32位十进制BC

17、D数 LOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); - 七段显示译码管SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) - 数码管选通信号);END P5;ARCHITECTURE BEHAVE OF P5 ISSIGNAL S:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL LOUT4:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (CLK1KHZ)BEGINIF (CLK1KHZEVENT AND CLK1KHZ=1)THEN - 实现数码管动态选通IF (S=”111)

18、 THENS=”000”;ELSE S=S+1;END IF;END IF;SELLOUT4=DOUT(31 DOWNTO 28);WHEN ”001=LOUT4=DOUT(27 DOWNTO 24);WHEN ”010=LOUT4LOUT4=DOUT(15 DOWNTO 12);WHEN ”101=LOUT4=DOUT(11 DOWNTO 8);WHEN 110=LOUT4LOUT4=DOUT(3 DOWNTO 0);WHEN OTHERS=LOUT4=”XXXX”;END CASE;CASE LOUT4 IS - 七段译码显示WHEN ”0000=LOUT7=0111111”;WHEN ”

19、0001=LOUT7=”0000110;WHEN 0010”=LOUT7=1011011”;WHEN 0011”=LOUT7=1001111”;WHEN ”0100”=LOUT7=”1100110”;WHEN 0101”=LOUT7=”1101101”;WHEN 0110”=LOUT7LOUT7=0000000;END CASE;END PROCESS;END BEHAVE; 4、编写完 VHDL 程序后,保存在wanexp17文件夹下。5、将自己编写的 VHDL 程序进行编译并生成模块符号文件,并对程序的错误进行修改,最终所有程序通过编译并生成模块符号文件,5个模块如下所示: 6、 新建一个

20、图形编辑文件,将已生成的模块符号文件放入其中,并根据要求如下所示接起来。7、将自己编辑好的的程序进行编译仿真,最终通过编译,接好管脚.9、用下载电缆通过 JTAG 口将对应的 sof 文件加载到 FPGA中。观察实验结果是否与自己的编程思想一致。五、实验结果与现象当设计文件加载到目标器件后,从输入数字时钟源模块的输入端输入一个频率大于1Hz 的时钟信号,这时在数码管上显示这个时钟信号的频率值。如果使按下按钮开关s1,数码管上显示的值便被清零,改变数字信号源的时钟,数码管上显示的值与标值相差不大如输入10Khz,显示的是10.012Khz.六、 仿真结果分析1 、当从50Mhz的系统时钟分出1H

21、z频率的信号clk1hz时,在clk1hz时钟的作用下生成测频的控制信号计数使能信号EN、内部清零信号CLR1及锁存信号LOAD波形如下所示:真值表如下所示:Clk1hz1010en1100load0011Clr10000与设计之初所设想的控制信号时序关系一致2、验证频率测评控制信号是否有效,波形如下所示:图中黑带与蓝带部分均为信号频率太高而无法在有限界面上显示由图中可知,当EN=1时,计数中间变量din开始计数,而当EN=0时,计数停止,当clr1=1时,计数中间值清零。与实验预期一样。七、 实验心得体会。 本实验采用直接测频法进行频率测量.这种直接测频法的测量准确度与被测信号的频率有关,当待测信号频率较高时,测量准确度也较高,反之测量准确度较低。因此,这种直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变的要求。若要得到在整个测量频段内的测量精度保持不变的要求,应该考虑待精度频率测量等其它方法。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服