可变量程数字频率计(1)_第1页
可变量程数字频率计(1)_第2页
可变量程数字频率计(1)_第3页
可变量程数字频率计(1)_第4页
可变量程数字频率计(1)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现代电子学实验报告实验题目: 可变量程数字频率计 姓 名: 年 级: 2012级 指导教师: 完成日期: 2015年7月14日 原创性声明本人声明本实验报告涉及的电路图、程序代码均为自己设计,没有抄袭他人的成果。特此声明! 声明人: 目 录1、实验目的- 1 -2、 实验要求- 1 -3、实验原理及内容- 1 -3.1 实验的总体结构- 1 -3.2 实验的理论基础和原理- 2 -3.3 实验需要解决的关键问题- 3 -4、实验设计与测试- 3 -4.1 硬件设计- 3 -4.2 硬件测试- 5 -4.3 软件设计- 8 -4.4 软件测试- 19 -4.5 总体测试- 20 -5 实验结论与

2、测试- 21 -参考文献- 23 -1、实验目的掌握现代大规模集成数字逻辑电路的应用设计方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。2、 实验要求在实验板上构造一个五位数字频率计。要求分成四档测量范围, ×l、×10、×100和×l000。在×l档,测量范围为1Hz到99999Hz,余此类推。最高测量频率为99999ktiz(×1000档。实际上受ispLSI1016器件限制,不可能测量如此高的频率)。测量范围的选择由按键手控,但要有指示灯显示。另外,输入频率大于实际量程要有溢出显示。3、实验原理及内容测频率法就是

3、在一定时间间隔Tw(定义为闸门时间)内,测得被测信号重复出现的次数为Nx,则其频率可表示为:Fx=Nx/Tw3.1 实验的总体结构图1 实验总体结构框图3.2 实验的理论基础和原理频率计的主体部件是一个带门控计数端的计数器(测量计数器),输入信号经整形后由此计数器计数。控制测量计数器的开门计数时间恰好为1秒,则测量计数器的计数值就是输入信号的频率。可改变开门计数时间,即可改变频率计的量程。如使开门时间为0.01秒,则频率计的量程为x100,以此类推。 这种频率计的测量精度取决于以下几个方面: 闸门时间的精度。一般情况下,闸门脉冲是由石英晶体振荡器产生的。 由于闸门与被测的信号不同步,在闸门的开

4、启和关闭边沿,会造成多计或少计一个被测脉冲。这是这种频率计的固有系统误差(±1个最低有效数字)。尤其在测量较低频率信号时,这种误差的影响特别明显。要减小这种误差,可以加大闸门时间。但加大闸门时间降低了测量速度,而且在被测频率相当低时,实际上要单纯依靠加大闸门时间来提高精度几乎是不可能的。例如测量低到数赫兹的信号,要保证4位有效数字,则闸门时间要长达10000秒,即三小时! 一个有效的解决办法是测量周期,即用被测信号作为闸门,而计数器对内部的一个高速基准信号进行计数。这样由于该基准信号频率较高,相对来说计数值较大,所以闸门边沿造成的误差相对降低。但这个方法也有其局限性,主要是由于器件的

5、响应速度限制,基准信号的频率不可能无限升高。因此该方法一般用于测量较低的频率。例如,由于器件的速度限制,基准信号的最高频率为50MHz,要求保证有5位有效数字,则被测的信号最高频率大致为50MHz100000500Hz。在上述方法中,要提高被测频率的上限可以采用改良的测量周期方案。此方案采用若干个被测周期作为计数闸门,即先将输入信号分频再作为闸门脉冲。这样,由于闸门时间相对增大,可测量的频率上限得以提高。若输入分频系数为N,则被测信号的频率上限提高N倍。除此之外,还有其他一些测量方法。例如可以将上述两种方法(直接测频和测周期)相互结合。在本次实验设计中,为简单直观体现实验结果,采用直接测频的方

6、法。 3.3 实验需要解决的关键问题测量计数器及闸门计数器的设计,测量量程的改变。4、实验设计与测试4.1 硬件设计整体采用GW48-PK2实验箱。(一)、测量计数器的设计由于要求频率计为五位,所以测量计数器为一个五位十进制带计数控制端的计数器,实际使用了5个系统宏单元CDU14。输入信号由CLK输入。计数器的使能端EN接闸门脉冲。另设一个溢出寄存器,当测量计数器溢出即最后一位产生进位时,该寄存器置1。 (二)、控制脉冲设计控制测量计数器的开门计数时间即闸门脉冲的宽度,可改变频率计的量程。为此,设计一个宽度可变(ls、0,1s、001s、0.001s)的闸门脉冲来控制测量计数器:闸门打开时允许

7、计数,否则禁止计数。当闸门脉冲宽度为ls时,频率计的量程为×1,当闸门脉冲宽度为01s时,频率计的量程为×10,等等。为了保证频率计有足够的显示时间,两次闸门脉冲之间应该有土定的显示间隔时间。为了保证测量计数器每次从零开始计数,在闸门打开之前,要先发一个清零脉冲将测量计数器清零。闸门脉冲、显示间隔、清零脉冲诸信号由闸门计数器产生。 (三)、闸门计数器的设计首先将12Mhz的晶体振荡器的振荡信号进行12000分频 (由二个12进计数器和3个十进计数器构成),得到1000Hz的基准脉冲信号。将这个基准信号作为闸门计数器的CLK。闸门计数器是一个带并行加载输入端的12位计数器(由

8、3个二进计数器CBU34构成),共能计4096个数(O4095)。当闸门计数器计数到2048时,闸门计数器的最高位变l,利用这个最高位作为频率测量计数器的异步清零信号,同时作为闸门计数器的并行加载信号。在下一个基准脉冲信号来到时,闸门计数器将被加载到某个初始计数值。所以该闸门计数器的计数值是在初始计数值和2048之间循环。量程的改变是依靠加载不同的初始计数值来实现的。当量程为×1时,初始计数值为24(10241 00024)。当量程为×10、×100、×1000时,相应的初始计数值为924、1014、1023。这样,从初始计数值到L024的计数时间为闸门

9、脉冲的宽度,×1为1000ms,×10为100ms,×100、×1000各为10ms和1ms。 从1024到2048为显示时间(共计1024ms)。闸门计数为2048到初始计数值的1ms时间为频率测量计数器的清零时间。闸门脉冲由闸门计数器的次高位输出,清零脉冲由闸门计数器的最高位输出。闸门计数器的最高位和次高位输出信号波形见图42。注意,图中计数闸门的宽度为1024减去初始计数值再加一(清零脉冲的宽度),但由于在测量计数器中,清零端的优先级高于计数端,实际计数时间仍然为1024减去初始计数值。图中清零脉冲实际上也就是闸门计数器的同步加载信号。这个脉冲的宽

10、度为一个时钟脉冲的周期。图1 频率计闸门脉冲波形(四)、量程改变与显示量程改变信号由按键(KEY3)控制一个4进制计数器再加以译码,产生4个量程控制信号。此4个信号送闸门计数器实现量程改变,并送发光二极管L4L7显示量程。由另3个发光二极管分别显示测量计数器溢出、闸门脉冲和清零脉冲。4.2 硬件测试本次实验设计采用GW48-PK2实验箱,EP1C6Q240C8芯片。如图2所示。图2 GW48-PK2实验箱基准频率CLK0由实验箱右下方频率选择部分提供,按照设计参数,跳线帽接至50MHz,如图3所示图3基准频率选择及接法将实验箱模式切换至“模式0”,通过模式选择按键进行选择。将实验箱控制拨码开关

11、拨至图中所示位置。如图4图4 实验箱模式选择4.3 软件设计1、分频器部分设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FP ISPORT(CLK : IN STD_LOGIC; CLKOUT : OUT STD_LOGIC);END ENTITY;ARCHITECTURE ONE OF FP ISBEGINPROCESS(CLK )VARIABLE M : STD_LOGIC_VECTOR(12 DOWNTO 0);VARIABLE N :STD_LOGIC;BEGINIF

12、CLK'EVENT AND CLK='1' THEN IF M="1011101101111" THEN M:=(OTHERS=>'0'); N:= NOT N; ELSE M:=M+1; END IF;END IF;CLKOUT<=N;END PROCESS;END ARCHITECTURE;2、 定时信号模块timer为产生4 种不同的闸门信号,可由3 级模10 计数器对12MHz 信号进行分频,利用档位选择开关通过数据选择器MUX41 选择出相应的时钟BCLK,原理图如图5图5 定时信号模块原理图其中计数器CNT.v

13、hd LIBRARY IEEE;-分频USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT IS PORT(FIN: IN STD_LOGIC;FS: OUT STD_LOGIC);END CNT;ARCHITECTURE DIV_ARC OF CNT ISBEGINPROCESS(FIN)VARIABLE CNT: INTEGER RANGE 0 TO 4;VARIABLE X: STD_LOGIC;BEGINIF FIN'EVENT AND FIN='1' THENIF CNT<4 THENCNT:=CNT+1;ELSECNT:=0;X

14、:=NOT X;END IF;END IF;FS<=X;END PROCESS;END DIV_ARC;3、 控制信号发生器模块CONTROL控制信号发生器模块在 EN 为高电平时,对待测信号 Fx 进行计数,此时寄存器的使能端 LOAD 为 0;在 EN 跳变为低电平时,LOAD 发生正跳变,寄存器锁存计数器的值;在 EN 和 CLR 同时为低电平时,计数器清零。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CONTROL ISPORT(BCLK: IN STD_LOGIC

15、; EN,CLR,LOAD: OUT STD_LOGIC);END CONTROL;ARCHITECTURE CONTROL_ARC OF CONTROL ISSIGNAL DIV2BCLK: STD_LOGIC; - DIV2BCLK 为BCLK 的二分频SIGNAL M: STD_LOGIC; BEGINPROCESS(BCLK)BEGINIF BCLK'EVENT AND BCLK='1' THEN DIV2BCLK<=NOT DIV2BCLK;END IF;END PROCESS;PROCESS(BCLK,DIV2BCLK)BEGINIF BCLK=

16、9;0' AND DIV2BCLK='0' THENCLR<='1'ELSECLR<='0'END IF;END PROCESS;EN<=DIV2BCLK;LOAD<=NOT DIV2BCLK;END CONTROL_ARC;4、 十进制计数器cnt10LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK : IN STD_LOGIC;-时钟输入端、清零端、使能端 CLR :

17、IN STD_LOGIC; EN : IN STD_LOGIC; C : OUT STD_LOGIC; Y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SSS : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG : OUT STD_LOGIC); END ENTITY;ARCHITECTURE ONE OF CNT10 ISBEGINPROCESS(CLK,EN,CLR)VARIABLE M : STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE N : STD_LOGIC;BEGINIF CLR='1&

18、#39; THEN M:=(OTHERS=>'0');-计数器异步复位 ELSIF EN='1' -检测是否允许计数THEN IF CLK'EVENT AND CLK='1' -检测时钟上升沿 THEN IF M="1001" THEN M:="0000" N:='1'-等于9,输出进位信号 ELSE M:=M+1;-大于9,计数值清零 N:='0' END IF; END IF;END IF;Y<=M;C<=N;END PROCESS;END AR

19、CHITECTURE; 原理图: 5、寄存器模块REGLIBRARY IEEE;-寄存器模块USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG ISPORT( LK: IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END REG;ARCHITECTURE ONE OF REG ISBEGIN PROCESS(LK,DIN)BEGINIF LK'EVENT AND LK='0' THEN DOUT<=DIN;-

20、LK 是锁存信号,下降沿触发END IF;END PROCESS;END ONE; 原理图: 6、量程切换(手动)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY KEY ISPORT(CLK : IN STD_LOGIC; K : IN STD_LOGIC; C1 : OUT STD_LOGIC;-X1 C2 : OUT STD_LOGIC;-X10 C3 : OUT STD_LOGIC;-X100 C4 : OUT STD_LOGIC;-X1000 X1 : OUT STD_LOG

21、IC; X2: OUT STD_LOGIC; Y : OUT STD_LOGIC_VECTOR(9 DOWNTO 0); SSS : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG : OUT STD_LOGIC );END ENTITY;ARCHITECTURE ONE OF KEY ISSIGNAL M : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL N : STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL C10 : STD_LOGIC;SIGNAL C20 : STD_LOGIC; SIGNAL C30 :

22、 STD_LOGIC; SIGNAL C40 : STD_LOGIC;SIGNAL C50 : STD_LOGIC;SIGNAL C60 : STD_LOGIC;SIGNAL SSS1 : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL FLAG1 : STD_LOGIC;BEGINP1 :PROCESS(CLK,K)-BEGINIF CLK'EVENT AND CLK='1' THENIF N="11" THEN N<="00" ELSE N<=N+1; END IF;END IF;IF K=

23、'1'THEN N<="00"END IF;END PROCESS P1;P2:PROCESS(N)BEGINCASE N ISWHEN "00" => C10<='1'C20<='0'C30<='0'C40<='0'M<="0000011000" ; C50<='0'C60<='0'SSS1<="0001"FLAG1<='0

24、9;WHEN "01" => C10<='0'C20<='1'C30<='0'C40<='0'M<="1110011100" ; C50<='0'C60<='1'WHEN "10" => C10<='0'C20<='0'C30<='1'C40<='0'M<="1111110110&qu

25、ot; ; C50<='1'C60<='0' WHEN "11" => C10<='0'C20<='0'C30<='0'C40<='1'M<="1111111111" ; C50<='1'C60<='1'WHEN OTHERS=> C10<='0'C20<='0'C30<='0'C40<=&#

26、39;0'M<="1111111111" ; C50<='0'C60<='0'END CASE;END PROCESS P2;C1<=C10;C2<=C20;C3<=C30;C4<=C40;Y<=M;X1<=C50;X2<=C60;SSS<=SSS1;FLAG<=FLAG1;END ARCHITECTURE; 7、量程切换(自动)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED

27、.ALL;ENTITY KEY ISPORT(CLK : IN STD_LOGIC; K : IN STD_LOGIC; C1 : OUT STD_LOGIC;-X1 C2 : OUT STD_LOGIC;-X10 C3 : OUT STD_LOGIC;-X100 C4 : OUT STD_LOGIC;-X1000 X1 : OUT STD_LOGIC; X2: OUT STD_LOGIC; Y : OUT STD_LOGIC_VECTOR(9 DOWNTO 0); SSS : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); FLAG : OUT STD_LOGIC );E

28、ND ENTITY;ARCHITECTURE ONE OF KEY ISSIGNAL M : STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL N : STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL C10 : STD_LOGIC;SIGNAL C20 : STD_LOGIC; SIGNAL C30 : STD_LOGIC; SIGNAL C40 : STD_LOGIC;SIGNAL C50 : STD_LOGIC;SIGNAL C60 : STD_LOGIC;SIGNAL SSS1 : STD_LOGIC_VECTOR(3 DOWNTO 0);S

29、IGNAL FLAG1 : STD_LOGIC;BEGINP1 :PROCESS(CLK,K)-BEGINIF CLK'EVENT AND CLK='1' THENIF N="11" THEN N<="00" ELSE N<=N+1; END IF;END IF;IF K='1'THEN N<="00"END IF;END PROCESS P1;P2:PROCESS(N)BEGINCASE N ISWHEN "00" => C10<='1

30、'C20<='0'C30<='0'C40<='0'M<="0000011000" ; C50<='0'C60<='0'SSS1<="0001"FLAG1<='0'WHEN "01" => C10<='0'C20<='1'C30<='0'C40<='0'M<="111001110

31、0" ; C50<='0'C60<='1'WHEN "10" => C10<='0'C20<='0'C30<='1'C40<='0'M<="1111110110" ; C50<='1'C60<='0' WHEN "11" => C10<='0'C20<='0'C30<='0'C40<='1'M<="1111111111" ; C50<='1'C60<='1'WHEN OTHERS=> C10<='0'C20<='0'C30<='0'C40<='0'M<="1111111111" ; C50<='0'C60<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论