版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 南昌大学实验报告学生姓名: 学 号: 专业班级:中兴101班 实验类型:验证 综合 设计 创新 实验日期:2012年12月14日 成绩: 实验六 数字频率计的设计一、实验目的1)设计具有较高测量精度的频率计;2) 进一步学习QUATUSII的使用3) 学会看RTL VIEWER图。 4) 熟悉实验设备和软件,掌握实验操作。二、实验内容与要求本实验要完成的任务就是设计一个频率计,系统时钟选择核心板上的 50M的时钟,闸门时间为 1s(通过对系统时钟进行分频得到),在闸门为高电平期间,对输入的频率进行计数,当闸门变低的时候,记录当前的频率值,并将频率计数器清零,频率的显示每过 2秒刷新一次。被测
2、频率通过一个拨动开关来选择是使用系统中的数字时钟源模块的时钟信号还是从外部通过系统的输入输出模块的输入端输入一个数字信号进行频率测量。当拨动开关为高电平时,测量从外部输入的数字信号,否则测量系统数字时钟信号模块的数字信号。三、实验仪器PC机、Quartus II软件、EDA实验箱四、实验思路数字频率计工作原理概述数字频率计的设计原理实际上是测量单位时间内的周期数。这种方法免去了实测以前的预测,同时节省了划分频段的时间,克服了原来高频段采用测频模式而低频段采用测周期模式的测量方法存在换挡速度慢的缺点。采用一个标准的基准时钟,在单位时间(1s)里对被测信号的脉冲数进行计数,即为信号的频率。由于闸门
3、的起始和结束时刻对于信号来说是随机的,将会有一个脉冲周期的量化误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为=Tx/T=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。因此直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变的要求。为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,大大提高了准确度。当门控信号为1时,使能信号并不为1,只有被测信号的上升沿到来时,使能端才开始发送有效信号,两个计数器同时开始计数
4、。当门控信号变为0时,使能信号并不是立即改变,而是当被测信号的下一个上升沿到来时才变为0,计数器停止计数。因此测量的误差最多为一个标准时钟周期。当采用100MHz的信号作为标准信号时,误差最大为0.01s。计算每秒钟内待测信号脉冲个数。这就要求计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器cnt10的ENA使能端进行同步控制。当TSTEN为高电平时,允许计数;低电平时,停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的译码器译出并稳定显示。锁存信号之后,必须由清零信号
5、CLR_CNT对计数器进行清零,为下一秒钟的计数操作做准备。当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果。系统的总体设计当系统正常工作时,由系统时钟提供的50MHz的输入信号,经过分频模块,产生1HZ及1KHz的时钟信号,其中1HZ的输出频率被作为控制模块的时钟输入,1KHz的
6、输出频率被作为显示模块的时钟输入,由控制模块产生的计数使能信号tsten和清零信号clr对计数模块进行控制,而由其产生的锁存信号load对锁存模块进行控制,一旦计数使能信号为高电平,并且时钟上升沿到来,计数器便开始正常计数,清零信号到来则计数清零,而当锁存信号为高电平时,数据便被锁存器锁存,然后将锁存的数据输出到显示模块显示出来,数据锁存保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果。数字频率计的原理框图如图1所示。主要由5个模块组成,分别是:信号源模块、控制模块、测频信号选择计数模块、锁存器模
7、块和显示器模块。图1 数字频率计的原理框图根据数字频率计的系统原理,cnt控制信号发生器。tstctl的计数使能信号tsten能产生一个1 s宽的周期信号,并对频率计的每一计数器Cnt10的ENA使能端进行同步控制:当tsten高电平时允许计数、低电平时停止计数。reg32b为锁存器。在信号load的上升沿时,立即对模块的输入口的数据锁存到reg32b的内部,并由reg32b的输出端输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。Cnt10为十进制计数器。有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁
8、止计数。将八个十进制计数器Cnt10级联起来实现8 位十进制计数功能。disply为七段译码显示驱动电路,可以将频率计数的结果译成能在数码管上显示的相对应的阿拉伯数字,便于读取测量的结果。为了实现系统功能,测频控制信号发生器testctl、计数器Cnt10、锁存器reg32b存在一个工作时序的问题,设计时需要综合考虑。8位数字频率计的顶层框图(endfreq.bdf),设计实现包括信号源模块(F1MHZ、CNT)、频率计模块(FREQ)和显示模块(display)三大模块。五原理图输入法设计(小时进制转换参考百度文库上的程序,其余独立完成)1. 建立文件夹建立自己的文件夹(目录),如c:mye
9、da,进入Windows操作系统l Quartus II不能识别中文,文件及文件夹名不能用中文。2. 原理图设计输入打开Quartus II,选菜单FileNew,选择“Device Design File->Block Diagram->Schematic File”项。点击“OK”,在主界面中将打开 “Block Editor”窗口。(1) 分频器模块:(实体名为clkout)分频器是为了产生1Hz 的门控信号和1KHz的数码管扫描信号,而对输入系统时钟clk(50MHz)进行分频的模块,设计源代码clkout.VHD 对输入系统时钟clk(50MHz)进行分频产生1Hz 信号
10、及1KHz信号。clkout的封装图如1所示,图中CLK50m为接入的50MHZ信号,图中CLK1khz为接到TElTCL的CLK的1HZ的信号, CLK1hz为接到Display的CLK的1kHZ的信号。图2 clkout封装图clkout的工作时序仿真图如图3所示。图3分频模块仿真图从clkout的工作时序仿真图可以看出:由系统时钟提供的50MHz的输入信号,经过分频模块,通过两个分频产生1HZ及1KHz的时钟信号,达到了设计所需的预期效果。具体程序如下:-时间:2012年11月01号-版本:7.2-功能:分频器(100分频)分频模块DIV源代码div.vhd如下:-分频程序,从10KHZ
11、中得到1HZ的计数频率,10000分频- - Title:频率计闸门信号、显示扫描信号产生 -LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clkout IS PORT ( clk50m : IN STD_LOGIC; -50M系统时钟输入 clk1kHZ : OUT STD_LOGIC; -1KHZ显示扫描时钟输出 clk1HZ : OUT STD_LOGIC);-1HZ闸门信号产生 END clkout; ARCHITECTURE A OF clkout IS BEGIN
12、 PROCESS(clk50m) -产生显示扫描时钟1KHZ variable cnttemp : INTEGER RANGE 0 TO 99999; BEGIN IF clk50m='1' AND clk50m'event THEN IF cnttemp=99999 THEN cnttemp:=0; ELSE IF cnttemp<50000 THEN clk1khz<='1' ELSE clk1khz<='0' END IF; cnttemp:=cnttemp+1; END IF; END IF; END PROCE
13、SS; PROCESS(clk50m) -产生显示扫描时钟1KHZ variable cnt : INTEGER RANGE 0 TO 49999999; BEGIN IF clk50m='1' AND clk50m'event THEN IF cnt=49999999 THEN cnt:=0; ELSE IF cnt<25000000 THEN clk1hz<='1' ELSE clk1hz<='0' END IF; cnt:=cnt+1; END IF; END IF; END PROCESS; END A; (2)
14、 测频控制信号产生器:(实体名为TElTCL)控制模块的作用是产生测频所需要的各种控制信号。控制信号的标准输入时钟为1HZ,每两个时钟周期进行一次频率测量。该模块产生的3个控制信号,分别为TSTEN,LOAD,CLR_CNT.CLR_CNT信号用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间。TSTEN为计数允许信号,在TSTEN信号的上升沿时刻计数模块开始对输入信号的频率进行测量,测量时间恰为一个时钟周期(正好为单位时间1s),在此时间里被测信号的脉冲数进行计数,即为信号的频率。然后将值锁存,并送到数码管显示出来。设置锁存器的好处是使
15、显示的数据稳定,不会由于周期性的清零信号而不断闪烁。在每一次测量开始时,都必须重新对计数器清0。测频控制产生器如图4,图中CLK接CNT的FREQ1的1HZ的信号,TSTEN为计数允许信号,接计数器CNT10的ENA,CLR_CNT信号用于在每次测量开始时,对计数器进行复位,接计数器CNT10的CLR,LOAD接锁存器的LOAD。图4 TESTCTL的封装图测频控制信号发生器TESTCTL的工作时序图,控制模块的几个控制信号的时序关系图如图5所示。图5 TESTCTL的时序仿真图从图中可看出,计数使能信号TSTEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,随后产生清0信号
16、上跳沿CLR_CNT。为了产生这个时序图需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上升沿到来时令其翻转。其中,控制信号时钟clk的频率取1HZ,而信号TSTEN的脉宽恰好为1s,可以用作闸门信号。此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。由图可知,在计数完成后,计数使能信号TETEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5s后,CLR_CNT产生一个清零信号上跳沿。具体程序如下:-时间:2012年12月1号-版本:7.2-功能: 数字频率计控制信号产生- TElTCL - - Title:数字频率计控制信号产生 -LIB
17、RARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TElTCL IS PORT ( CLK: IN STD_LOGIC; -1 Hz测频控制时钟 TSTEN: OUT STD_LOGIC; -计数器时钟使能 CLR_CNT: OUT STD_LOGIC; -计数器清零 LOAD: OUT STD_LOGIC); -输出锁存信号END TElTCL;ARCHITECTURE ART OF TElTCL IS SIGNAL DIV2CLK :STD_LOGIC;SIGNAL CLR :STD_
18、LOGIC;SIGNAL loadcnt :STD_LOGIC;BEGIN PROCESS ( CLK ) IS BEGIN IF CLK'EVENT AND CLK= '1' -1 HZ时钟二分频 THEN DIV2CLK<=NOT DIV2CLK; END IF ; END PROCESS; PROCESS ( CLK,DIV2CLK ) BEGIN IF CLK= '0' AND DIV2CLK = '0' THEN -产生计数器清零信号 CLR<= '1' ELSE CLR<= '0
19、9; ; END IF; END PROCESS; LOAD<=not div2clk; TSTEN<=DIV2CLK;CLR_CNT<=CLR;END ARCHITECTURE ART;(3)十进制计数器:(实体名为CNT10)计数器模块是由8个带有异步清零端,进位信号输出的模为10的计数模块级连而成。通过分频进行元件例化实现。此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数器。当高电平计数允许,低电平时计数禁止。计数器模块用于对输入信号的脉冲进行计数,该模块必须有计数允许、异步清零等端口,以便于控制模块对其进行控制。CNT10的封装如图6,其中CLR为复
20、位接TESTCTL的CLR_CNT端,ENA接TESTCTL的TSTEN端,CQ3.0接锁存器的DOUT31.0端。图6 CNT10的封装图有时钟使能的十进制计数器CNT10的工作时序仿真如图7。图7 CNT10的时序仿真图此程序模块实现的功能是带使能端的10进制计数。程序要求只有当使能端信号为高电平时计数器才能正常工作,每个时钟的上升沿到来时计数器加1,因为这里要实现的是10进制计数,所以当计数到10时计数器清零,同时产生进位信号,这里的进位信号仅为一个脉冲信号,一旦计数从10变为1,脉冲信号立即变为低电平。同时该计数器也应带有清零信号,一旦清零信号为高电平,计数器立即清零。具体程序如下:-
21、时间:2012年12月1号-版本:7.2-功能: 十进制计数器- CNT10- - Title:频率计有时钟使能的十进制计数器产生 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK:IN STD_LOGIC; -计数时钟信号 CLR:IN STD_LOGIC; -清零信号 ENA:IN STD_LOGIC; -计数使能信号 CQ :OUT INTEGER RANGE 0 TO 15;-4位计数结果输出 CARRY_OUT:OUT STD_LOGIC); -计数进位END CNT10;ARCHITECTURE
22、 ART OF CNT10 IS SIGNAL CQI :INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,ENA) ISBEGIN IF CLR= '1' THEN CQI<= 0; -计数器异步清零 elsIF CLK'EVENT AND CLK= '1' THEN IF ENA= '1' THEN iF CQI=10 THEN cqi<=1; ELSE CQI<=cqi+1; END IF; -等于9,则计数器清零 END IF; END IF;END PROCESS;PROCESS (
23、CQI) IS BEGIN IF CQI=10 THEN CARRY_OUT<= '1' -进位输出 ELSE CARRY_OUT<= '0' END IF;END PROCESS; CQ<=CQI;END ART;(4)二选一被测频率选择模块(实体名:mux)二选一被测频率选择模块如图8所示,其中 :输入管脚: clkin1设定为外部时钟输入; clkin2设定为数字信号源输入; key设定为数字信号源输入输出管脚:fin被测频率输出,当key为1时,选择外部时钟输入;选择0时为数字信号源输入;图8-时间:2012年12月1号-版本:7.2-
24、功能: 二选一被测频率选择library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;- entity mux is port( clkin1 : in std_logic; -设定为外部时钟输入 clkin2 : in std_logic; -设定为数字信号源输入 key : in std_logic; -设定为数字信号源输入 fin : out std_logic -被测频率输出 ); end mux;-architecture behave of
25、 mux is begin process(key,clkin1,clkin2) begin if key='1' then fin<=clkin1; else fin<=clkin2; end if; end process; end behave;(5)显示模块(实体名:display)LED有段码和位码之分,所谓段码就是让LED显示出八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阴级的LED而言,低电平使能,在本设计中设计了一个3位的循环计数器,将计数结果输入到译码器,译码结果
26、输出即可依次使能每个LED。例如:要让8个LED同时工作显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。display 模块的顶层图如下所示。CNT计数产生扫描信号(位码),LED模块用于查表产生LED段码输出。图9位display的封装图。图中in0in7接锁存器的DOUT31.0端。图9 display的封装图display工作时序图如下图。图10 disply工作时序图用8个LED将待测频率显示出来,将通过十进制计数器的时钟信号CLK,输出为时钟信号
27、计数译码后的显示驱动端,在八段LED译码为对应的八段二进制编码,并由数码显示器显示出来。图10中为相应二进制编码与相对应的屏显数字。显示电路图11 display硬件结构图此部分如图,图中主要由07循环累加器、3-8译码器、BCD-7段显示译码器、8选1多路数据开关和8个LED显示器组成的扫描数码显示器。-时间:2012年12月1号-版本:7.2-功能: 数字频率计显示译码输出- display - - Title:数字频率计显示译码输出 -LIBRARY IEEE;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;enti
28、ty display isport(in7,in6,in5,in4,in3,in2,in1,in0:in std_logic_vector(3 downto 0);lout7:out std_logic_vector(6 downto 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);clk:in std_logic);end display;architecture phtao of display issignal s:std_logic_vector(2 downto 0);signal lout4:std_logic_vector(3 downto 0);
29、beginprocess (clk)beginif (clk'event and clk='1')thenif (s="111") thens<="000"else s<=s+1;end if;end if;sel<=s;end process;process (s)begincase s iswhen "000"=>lout4<=in7;when "001"=>lout4<=in6;when "010"=>lout4<
30、;=in5;when "011"=>lout4<=in4;when "100"=>lout4<=in3;when "101"=>lout4<=in2;when "110"=>lout4<=in1;when "111"=>lout4<=in0;when others=>lout4<="XXXX"end case;case lout4 iswhen "0000"=>lout7<
31、="1111110"when "0001"=>lout7<="0110000"when "0010"=>lout7<="1101101"when "0011"=>lout7<="1111001"when "0100"=>lout7<="0110011"when "0101"=>lout7<="1011011"when
32、"0110"=>lout7<="1011111"when "0111"=>lout7<="1110000"when "1000"=>lout7<="1111111"when "1001"=>lout7<="1110011"when "1010"=>lout7<="1111110"when others=>lout7<=&quo
33、t;XXXXXXX"end case;end process;end phtao;(6)锁存器模块(实体名:REG32B)锁存器模块也是必不可少的,测量模块测量完成后,在load信号的上升沿时刻将测量值锁存到寄存器中,然后输出到显示模块。锁存器是起数据保持的作用,它将会把数据保存到下次触发或复位。主要是主从触发器组成的。用于存储数据来进行交换,使数据稳定下来保持一段时间不变化,直到新的数据将其替换。锁存器REG32B的封装如图12,图中LOAD接控制测频产生器TESTCTL的LOAD,而DIN31.0接计数器CNT10的CQ3.0,DOUT31.0接显示器display的in端。图1
34、2 REG32B的封装图32位锁存器REG32B的工作时序图如下图。图13 REG32B的时序仿真图本程序是用来实现锁存器模块的功能,但它的程序相当简单,在锁存信号load的上升沿到来时,锁存器将测量值锁存到寄存器,然后输出到显示模块。但从仿真图中可以明显的看出,锁存输出并不是立即进行的,而是经历了一个短暂的延时,这是由于硬件引起的。-时间:2012年12月1号-版本:7.2-功能: 数字频率计32位锁存器- REG32B - - Title:数字频率计32位锁存器 -LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT
35、(LOAD: IN STD_LOGIC; DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END ENTITY REG32B;ARCHITECTURE ART OF REG32B IS BEGINPROCESS ( LOAD, DIN ) ISBEGIN IF LOAD 'EVENT AND LOAD= '1' THEN DOUT<=DIN; -锁存输入数据 END IF;END PROCESS;END ART;2.包装元件入库。编译通过后,单击FileCreate Default Symbol,当前文件变成了一个包装好的自己的单一元件,并被放置在工程路径指定的目录中以备后用。3.保存各个模块的原理图单击FileSave as按扭,出现对话框,选择自己的目录(如c:myeda),合适名称保存刚才输入的原理图,原理图的扩展名为.bdf。4设置工程文件(Project
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浮阀塔优点课程设计
- 直播电商试讲课程设计
- 毛绒玩偶课程设计
- 理财投资培训课程设计
- 微整基础课程设计
- 水闸课程设计颖河拦河闸
- 电子密码课程设计
- 夏令营植物课程设计
- 混凝土课程设计要点解析
- 直角拨叉课程设计
- 2020-2024年安徽省初中学业水平考试中考历史试卷(5年真题+答案解析)
- 上海市虹口区2023-2024学年八年级下学期期末考试语文试题
- 2024合同范本之太平洋保险合同条款
- 万用表的使用
- 废气治理设施运行管理规程
- JTS-131-2012水运工程测量规范
- 园区物业管理方案计划书
- 2024年瓦斯爆炸事故专项应急演练桌面推演实施方案
- 供电所星级班组创建方案
- 《核电厂焊接材料评定与验收标准》
- MOOC 数字逻辑电路实验-东南大学 中国大学慕课答案
评论
0/150
提交评论