ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:3.98MB ,
资源ID:10159587      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10159587.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验六数字频率计的设计汇总.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验六数字频率计的设计汇总.docx

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.01卩s。计算每秒钟内待测信号脉冲个数。这就要求计数使能信号 TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器 cnt10的ENA使能端进行同步控制。当 TSTEN为高电平时,允许计数;低电平 时,停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号 LOAD的上跳沿将计数器在前1秒钟的计数值锁存进 32位锁存器REG

5、32E中,并由外部的译码器译出并稳定显示。 锁存信号之后,必须由清零信号 CLR_CNT寸计数器进行清零,为下一秒钟的计数操作做准备。当系统正常工作时,脉冲发生器提供的 1 Hz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入 的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进 制表示的计数结果转换成相应的能够在数码显示管上可以显示的十进制结果。 在数码显示管上可以看到计数结果。系统的总体设计当系统正常工作时,由系统时钟提供的 50MHz的输入信号,经过分频模块,产生

6、 1HZ及1KHz的时钟信号,其中1HZ的输出频率被作为控制模块的时钟输入, 1KHz的输出频率被作为显示模块的时钟输入,由控制模块产生的计数使能信号 tste n和清零信号clr对计数模块进行控制,而由其产生的锁存信号load对锁存模块进行控制, 一旦计数使能信号为高电平, 并且时钟上升沿到来, 计数器便开始正常计数,清零信号到来则计数清零,而当锁存信号为高电平时,数据便被锁存器锁存,然后将锁存的数据输出到 显示模块显示出来,数据锁存保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果 转换成相应的能够在数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果。 数字频率

7、计的原理框图如图 1所示。主要由5个模块组成,分别是:信号源模块、控制模块、测频信号选择计 数模块、锁存器模块和显示器模块。图1数字频率计的原理框图根据数字频率计的系统原理, cnt控制信号发生器。tstctl的计数使能信号tsten能产生一个1 s 宽的周期信号,并对频率计的每一计数器 Cnt10的ENA使能端进行同步控制: 当tsten高电平时允许计 数、低电平时停止计数。reg32b为锁存器。在信号load的上升沿时,立即对模块的输入口的数据锁存到 reg32b的内部,并由reg32b的输出端输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显 示数据,不会由于周期性

8、的清零信号而不断闪烁。Cnt10为十进制计数器。有一时钟使能输入端 ENA用于锁定计数值。当高电平时允许计数,低电平时禁止计数。将八个十进制计数器 Cnt10级联起来实现8位十进制计数功能。disply 为七段译码显示驱动电路, 可以将频率计数的结果译成能在数码管上显示的相对应的阿拉伯数字,便于读取测量的结果。为了实现系统功能,测频控制信号发生器 testctl 、计数器Cnt10、锁存器reg32b存在一个工作时序的问题,设计时需要综合考虑。8位数字频率计的顶层框图(endfreq.bdf ),设计实现包括信号源模块(F1MHZ CNT、频率计模块 (FREQ和显示模块(display、三大

9、模块。五原理图输入法设计(小时进制转换参考XX文库上的程序,其余独立完成)1.建立文件夹建立自己的文件夹(目录),如c:myeda,进入 Windows操作系统 Quartus II 不能识别中文,文件及文件夹名不能用中文。2.原理图设计输入打开 Quartus II,选菜单 File 宀New,选择 Device Design File-Block Diagram- Schematic File 项。点击“OK在主界面中将打开 “Block Editor窗口。(1)分频器模块:(实体名为clkout )分频器是为了产生 1Hz的门控信号和1KHz的数码管扫描信号, 而对输入系统时钟 clk

10、(50MHZ 进行分频的模块,设计源代码 clkout.VHD对输入系统时钟clk (50MHZ进行分频产生1Hz信号及 1KHz信号。clkout 的封装图如1所示,图中 CLK50m为接入的50MHZ言号,图中 CLK1khz为接到TElTCL的 CLK的1HZ的信号,CLK1hz为接到 Display 的CLK的1kHZ的信号。图2 clkout 封装图clkout的工作时序仿真图如图 3所示。图3分频模块仿真图从clkout的工作时序仿真图可以看出:由系统时钟提供的 50MHz的输入信号,经过分频模块,通过两个分频产生 1HZ及1KHz的时钟信号,达到了设计所需的预期效果。具体程序如下

11、:-时间:2012年11月01号-版本:7.2-功能:分频器(100分频)分频模块 DIV源代码div.vhd如下: 分频程序,从 10KHZ中得到1HZ的计数频率,10000分频 -Title:频率计闸门信号、显示扫描信号产生 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;PORT ( clk50m clk1kHZ clk1HZENTITY clkout IS : IN STD_LOGIC; -50M 系统时钟输入: OUT STD_LOGIC; -1KHZ 显示扫描时钟输出: OUT ST

12、D_LOGIC);-1HZ 闸门信号产生END clkout;ARCHITECTURE A OF clkout ISBEGINPROCESS(clk50m) -产生显示扫描时钟 1KHZvariable cnttemp : INTEGER RANGE 0 TO 99999;BEGINIF clk50m=1 AND clk50mevent THENIF cnttemp=99999 THEN cnttemp:=0;ELSEIF cnttemp50000 THEN clk1khz=1;ELSE clk1khz=0;END IF;cnttemp:=cnttemp+1;END IF;END IF;END

13、 PROCESS;PROCESS(clk50m) -产生显示扫描时钟 1KHZvariable cnt : INTEGER RANGE 0 TO 49999999;BEGINIF clk50m=1 AND clk50mevent THENIF cnt=49999999 THEN cnt:=0;ELSEIF cnt25000000 THEN clk1hz=1;ELSE clk1hz=0;END IF;cnt:=cnt+1;END IF;END IF;END PROCESS;END A;(2)测频控制信号产生器: (实体名为 TElTCL)控制模块的作用是产生测频所需要的各种控制信号。控制信号的标

14、准输入时钟为 1H Z,每两个时钟周期进行一次频率测量。 该模块产生的3个控制信号,分别为TSTEN,LOAD,CLR_CNT.CLR_CI信号 用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间。TSTEN为计数允许信号,在 TSTEN信号的上升沿时刻计数模块开始对输入 信号的频率进行测量,测量时间恰为一个时钟周期 (正好为单位时间1s),在此时间里被测信号的脉冲数进行计数,即为信号的频率。然后将值锁存,并送到数码管显示出来。设置锁存器的好处是使 显示的数据稳定,不会由于周期性的清零信号而不断闪烁。在每一次测量开始时,都必须重新对计 数

15、器清0。测频控制产生器如图 4,图中CLK接CNT的 FREQ啲1HZ的信号,TSTEN为计数允许信号,接计 数器CNT10的ENA CLR_CNT信号用于在每次测量开始时,对计数器进行复位,接计数器 CNT10的CLR LOAD接锁存器的LOAD图4 TESTCTL的封装图测频控制信号发生器 TESTCTL的工作时序图,控制模块的几个控制信号的时序关系图如图 5所示。图5 TESTCTL的时序仿真图从图中可看出,计数使能信号TSTEN在 1s的高电平后,利用其反相值的上跳沿产生一个锁存信 号LOAD随后产生清0信号上跳沿CLR_CNT为了产生这个时序图需首先建立一个由 D触发器构成的二分频器

16、,在每次时钟 CLK上升沿到来时令其翻转。其中,控制信号时钟 elk的频率取1HZ而信号TSTEN的脉宽恰好为1s,可以用作闸门信号。此时,根据测频的时序要求,可得出信号 LOAD和CLR_CN啲逻辑描述。由图可知,在计数完成后,计数使能信号 TETEN在 1s的高电平后,利用其反相值的上跳沿产生一个锁存信号 LOAD,0.5s后,CLR_CNT产生一个清零信号上跳沿。具体程序如下:-时间:2012年12月1号-版本:7.2-功能:数字频率计控制信号产生 TElTCL -Title:数字频率计控制信号产生 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;US

17、E IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TElTCL ISPORT ( 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 ISSIGNAL DIV2CLK :STD_LOGIC;SIGNAL CLR :STD_LOGIC;SIGNAL loadcnt :STD_LOGIC;BEGINPROCESS

18、( CLK ) ISBEGINIF CLKEVENT AND CLK= 1 -1 HZ 时钟二分频THEN DIV2CLK=NOT DIV2CLK;END IF ;END PROCESS;PROCESS ( CLK,DIV2CLK )BEGINIF CLK= 0 AND DIV2CLK = O THEN -产生计数器清零信号CLR= 1;ELSE CLR= 0;END IF;END PROCESS;LOAD=not div2clk; TSTEN=DIV2CLK;CLR_CNT=CLR;END ARCHITECTURE ART;(3)十进制计数器:(实体名为CNT10计数器模块是由8个带有异步清

19、零端,进位信号输出的模为10的计数模块级连而成。 通过分频 进行元件例化实现。此十进制计数器的特殊之处是,有一时钟使能输入端 ENA用于锁定计数器。当高电平计数允许,低电平时计数禁止。计数器模块用于对输入信号的脉冲进行计数,该模块必须 有计数允许、异步清零等端口,以便于控制模块对其进行控制。CNT10 的封装如图 6,其中 CLR为复位接 TESTCTL的 CLR_CN端, ENA接 TESTCTL的 TSTEN端, CQ3.0接锁存器的 DOUT31.0端。图6 CNT10的封装图有时钟使能的十进制计数器 CNT10的工作时序仿真如图 7。此程序模块实现的功能是带使能端的 10进制计数。程序

20、要求只有当使能端信号为高电平时计数器才能正常工作,每个时钟的上升沿到来时计数器加 1,因为这里要实现的是 10进制计数,所以当计数到10时计数器清零,同时产生进位信号,这里的进位信号仅为一个脉冲信号,一旦计数从 10变为1,脉冲信号立即变为低电平。同时该计数器也应带有清零信号,一旦清零信号为高电平,计 数器立即清零。具体程序如下:-时间:2012年12月1号-版本:7.2-功能:十进制计数器 CNT10 -Title:频率计有时钟使能的十进制计数器产生 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 ISPORT (CLK:IN S

21、TD_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 ART OF CNT10 ISSIGNAL CQI :INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,ENA) ISBEGINIF CLR= 1 THEN CQI= 0; -计数器异步清零elsIF CLKEVENT AND CLK= 1 THENI

22、F ENA= 1 THENiF CQI=10 THEN cqi=1; ELSE CQI=cqi+1;END IF; -等于9,则计数器清零END IF;END IF;END PROCESS; PROCESS (CQI) IS-进位输出BEGINIF CQI=10 THEN CARRY_OUT= 1;ELSE CARRY_OUT= O;END IF;END PROCESS;CQ=CQI;END ART;(4)二选一被测频率选择模块(实体名: muX二选一被测频率选择模块如图 8所示,其中输入管脚:clki n1设定为外部时钟输入; clkin2设疋为数字信号源输入; key设疋为数字信号源输入输

23、出管脚:fin被测频率输出,当key为1时,选择外部时钟输入;选择 0时为数字信号源输入;-时间:2012年12月1号-版本:7.2-功能:二选一被测频率选择 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_ un sig ned.all;en tity mux isport( clki n1);end mux;architecture behave of mux isbeginprocess(key,clki n1,clki n2)beginif key=1 th

24、enfin=clk ini;elsefin=clk in2;end if;end process; end behave;(5)显示模块(实体名: display )LED有段码和位码之分,所谓段码就是让 LED显示出八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与 LED显示对应的8位段码。位码也就是 LED的显示使能端,对 于共阴级的LED而言,低电平使能,在本设计中设计了一个 3位的循环计数器,将计数结果输入到译码器,译码结果输出即可依次使能每个 LEDb例如:要让8个LED同时工作显示数据,就是要不停的循环扫描每一个 LED,并在使能每一个 LED的同时,输入所需显

25、示的数据对应的 8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是 8个LED同时工作。display 模块的顶层图如下所示。CNT计数产生扫描信号(位码),LED模块用于查表产生 LED段码输出。图9位display 的封装图。图中in0in7 接锁存器的 DOUT31.0端。display 工作时序图如下图。用8个LED将待测频率显示出来,将通过十进制计数器的时钟信号 CLK输出为时钟信号计数译码后的显示驱动端,在八段 LED译码为对应的八段二进制编码,并由数码显示器显示出来。图 10中为相应二进制编码与相对应的屏显数字。显示电路图11 display 硬件结构图此部

26、分如图,图中主要由 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_ un sig ned.all;en tity display isport(i n7,i n6,i n5,i n4,i n3,i n2,i n1,i n0:i n std_logic_vector(3 dow nto

27、 0);lout7:out std_logic_vector(6 dow nto 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);clk:in std_logic);end display;architecture phtao of display issig nal s:std_logic_vector(2 dow nto 0);sig nal Iout4:std_logic_vector(3 dow nto 0);beginprocess (clk)beginif (clkevent and clk=1)then if (s=111) the n s=000

28、;else s=s+1;end if;end if;sellout4lout4lout4lout4lout4lout4lout4lout4lout4lout7lout7lout7lout7lout7lout7lout7lout7lout7lout7lout7lout7=XXXXXXX;end case;end process;end phtao;( 6)锁存器模块(实体名: REG32B)锁存器模块也是必不可少的, 测量模块测量完成后, 在 load 信号的上升沿时刻将测量值锁存到 寄存器中,然后输出到显示模块。锁存器是起数据保持的作用,它将会把数据保存到下次触发或复 位。主要是主从触发器组成的。用于存储数据来进行交换,使数据稳定下来保持一段时间不变化, 直到新的数据将其替换。锁存器 REG32B勺封装如图12,图中LOAD接控制测频产生器 TESTCTL的LOAD而DIN31.O 接计数器 CNT10的 CQ3.O , DOUT31.0接显示器 display 的 in 端。图12 REG32B的封装图32位锁存器REG32B勺工作时序图如下图。Master Time Bar:8D0ns lj Pointer1.94 nsInterval:)pw 20, 0 ns 40. 0 ns60. 0 ns

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1