EDA简易数字频率计设计(34页).doc
《EDA简易数字频率计设计(34页).doc》由会员分享,可在线阅读,更多相关《EDA简易数字频率计设计(34页).doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-唐 山 学 院 EDA课 程 设 计 题 目 简易数字频率计设计 系 (部) 信息工程系 班 级 12自动化 姓 名 陈帅 学 号 4120219124 指导教师 郭耀华 2014 年12月 21日 至 12 月 26 日 共 1 周2014年 12 月 26 日目 录1 引言12 实验2 2.1 实验原理22.1.1基本原理32.1.2原理框图3 2.2各模块程序的设计32.2.1分频定时模块的设计32.2.2待测信号计数模块的设计42.2.3显示编译模块的设计82.2.4顶层模块的设计12 .2.2.5 封装图152.2.6.引脚锁定154 结论17参考文献18附 录19第 31 页-1
2、 引言数字频率计是通讯设备、计算机、电子产品等生产领域不可缺少的测量仪器。由于硬件设计的器件增加,使设计更加复杂,可靠性变差,延迟增加,测量误差变大。通过使用EDA技术对系统功能进行描述,运用VHDL语言,使系统简化,提高整体的性能和可靠性。采用VHDL编程设计的数字频率计,除了被测信号的整形部分,键输入和数码显示以外,其他都在一片FPGA上实现,从而让整个系统非常精简,让其具有灵活的现场更改性,在不改变硬件电路的基础上,进一步改进提高系统的性能,使数字频率计具有高速,精确度高,可靠性强,抗干扰等优点,为数字系统进一步的集成创造了条件。传统的硬件设计采用自下至上(bottom_up)的设计方法
3、。这种设计方法在系统设计的后期进行仿真和调试,一旦考虑不周,系统设计存在较大缺陷,就有可能要重新设计系统,使设计周期大大增加。现代硬件设计利用电子设计自动化(EDA)技术,采用并行工程和自上至下(top_down)的设计方法,从系统设计入手,在顶层进行功能方框图的划分和结构设计,在方框图一级进行仿真和纠错,并用vhdl等硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,其对应的物理实现是专用集成电路(ASIC)。Vhdl即超高速集成电路硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口。vhdl对设计的描述具有相对独立性,
4、因此设计者可以不懂硬件结构,降低了硬件电路设计难度。以4位十进制数字频率计的设计来说明vhdl语言在现代硬件设计中的应用。信号频率计的测量有测频法和周期测量法。本文采用测频法,即直接计算每秒钟内信号脉冲的个数。2 实验2.1 简易数字频率计设计原理 设计内容:(1)设计四位十进制的简易数字频率计,对1HZ-10MHZ的方波信号进行测量;(2)测量的方波频率值要在4位数码管上进行显示;(3)根据不同的待测方波信号,频率计分为4个量程进行测量,四个量程分别为乘 1乘10,乘100,乘1000量程。 (4)此频率计要设有一个整体复位控制;2.1.1基本原理数字频率计的主要功能是测量周期信号的频率。频
5、率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。频率是单位时间(1秒)内方波信号发生周期变化的次数。在给定的1秒时间内对方波信号波形计数,并将所计数值显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,然后通过计数器计算这一段时间间隔内的方波脉冲个数并显示出来。这就是数字频率计的基本原理。脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为fNT,其中f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。本设计要求基准时钟的频率为1HZ,所以需要分频设计产生脉宽为1秒的脉冲。再利用这个脉宽为1秒的脉冲计数,计
6、数器所记录的结果,就是被测信号的频率。因为待测方波信号的频率在1HZ-10MHZ,所以仅用四位7段数码管无法完全正确显示,所以需要选择恰当的量程来显示待测风波信号的频率,当量程选择不当或者频率超出10MHZ时,用一个LED灯点亮来警告测量有错误。2.1.2原理框图本设计要求用基准时钟信号(f=1HZ)的控制完成对1HZ-10MHZ的方波信号进行测量,使得所测量的方波频率值在4位7段数码管上进行显示,并根据不同的待测方波信号,将频率计分为4个量程进行测量,四个量程分别为乘1,乘10,乘100,乘1000量程,量程的选择分为手动和自动两种。当手动选择量程时,自动量程显示为零,手动量程部分依手动所选
7、量程而定;当手动选择信号不工作时,频率计自动选择比较合适的量程进行显示,手动量程部分显示为零。而且此频率计具有记忆功能,在测量过程中不刷新数据,等数据测量过程结束后才显示测量值,显示测量的频率值,并保存到下一次测量结束。数字频率计还有一个整体的异步清零端,随时可以进行清零操作。此外,数字频率计还有一个不能正确显示待测方波信号频率时的警告灯。数字频率计通过测频控制发生器将基准信号转换成所需要的控制信号clk1和en,待测信号计数器在en的控制下对待测信号进行测量并通过锁存器在clk1的控制下按要求进行显示,数字频率计包括测频控制发生器ctr、待测信号计数器counter、锁存器regist三个功
8、能模块,其原理框图如图所示。b测频控制发生器待测信号计数器锁存器d(27:0)sel(3:0)a(3:0)clkrstrstclkclk1enclkinrstclkinenba(3:0)rstclk1d(27:0)sel(3:0)zd(3:0)zd(3:0)sd(3:0)sd(3:0)q1(3:0)q1(3:0)q2(3:0)q2(3:0)q3(3:0)q3(3:0)q4(3:0)q4(3:0)其中a是手动选择量程输入端,sd代表手动量程的显示,rst是整体异步清零输入端,clk是频率为1HZ的基准时钟,clkin是待测的方波信号,b是显示是否超出了频率计的测量范围,zd是在手动选择量程不工作
9、时频率计进行的自动选择合适的量程显示,q1q4是四位数值从高位到低位的显示结果。2.2 各模块程序及仿真此设计运用元件例化的方法进行功能的实现,所以各个模块即使相互独立又是彼此联系的,三个模块共同完成方波信号的测量。2.2.1测频控制发生器ctr模块的设计本设计要求为该模块ctr提供的基准信号频率为1 HZ,所以要做一个2分频器控制产生一个脉宽为1秒的周期信号en和一个锁存信号clk1。rst为高电平时进行整体异步清零。当en处于高电平的时候对输入的待测方波信号进行计数测量,当en处于低电平的时候停止计数,并保持所计数值。当clk1是上升沿的时候将所保持的数值输出显示。此测频控制发生器的程序如
10、下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ctr isport(clk,rst: in std_logic; clk1,en: buffer std_logic);end ctr;architecture bhv of ctr isbeginprocess(clk,rst)variable c:integer range 0 to 2beginif rst=1 thenen=0;elsif clkevent and
11、clk=1 thenc:=c+1;if c=1 thenc:=0;en=not en;end if;end if;clk1=not(clk or en);end process;end bhv;此测频控制发生器的仿真结果如图所示。此模块如果仿真12M分频器很困难,为了看到仿真效果,改成20倍分频器,得到了此仿真结果。如果按程序下载,在硬件上能很清楚的看到由6MHZ的基准信号得到了脉宽为1秒的控制信号en和控制输出信号clk1,rst实现了整体异步清零的功能。2.2.2待测信号计数器counter模块的设计该模块通过ctr模块所产生的脉宽为1秒的en信号来对待测信号进行计数。用28位二进制数d进
12、行对待测信号的计数,同时用sel表示自动量程根据所得数值d变化,sel为“0001”时代表乘1,sel为“0010”时代表乘10,sel为“0100”时代表乘100,sel为“1000”时代表乘1000。如果测量选择量程太小或者待测方波信号频率超出10MHZ,均无法正确显示测量结果,则将b置高电平进行警告。此待测信号计数器的程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity counter isport(en,clkin
13、,rst:in std_logic;a:in std_logic_vector(3 downto 0);sel:out std_logic_vector(3 downto 0);d :out std_logic_vector(27 downto 0);b:out std_logic);end counter;architecture bhv of counter issignal dd: std_logic_vector(27 downto 0);beginprocess(rst,en,clkin)beginif rst=1 thendd0);b=0;elsif en=1 then if cl
14、kinevent and clkin=1 thenif dd(27 downto 0)=1001100110011001100110011001 thendd0); b=1;elsif dd(23 downto 0)=100110011001100110011001 then dd=dd+011001100110011001100111;elsif dd(19 downto 0)=10011001100110011001 thendd=dd+01100110011001100111;elsif dd(15 downto 0)=1001100110011001 thendd=dd+0110011
15、001100111;elsif dd(11 downto 0)=100110011001 thendd=dd+011001100111;elsif dd(7 downto 0)=10011001 then dd=dd+01100111;elsif dd(3 downto 0)=1001 thendd=dd+0111;elsedd0000 thensel0000 thensel0000 thensel=0010;elsesel=0001;end if;elsedd0);end if;if dd(27 downto 24)0000 thenif a=1000 thenb=0;elsif a=000
16、0 thenb=0;elseb0000 thenif a=1000 thenb=0;elsif a=0100 thenb=0;elsif a=0000 thenb=0;elseb0000 thenif a=1000 thenb=0;elsif a=0100 thenb=0;elsif a=0010 thenb=0;elsif a=0000 thenb=0;elseb=1;end if; elseb=0; end if;end process;process(en)beginif enevent and en=0 thend=dd;end if;end process;end bhv;此待测信号
17、计数器的仿真结果如图3所示。 该模块实现了在en为高电平时对输入的待测信号clkin进行测量,当en为低电平时停止测量并将所计数值输出,即在1秒内待测信号的脉冲数,也就是待测信号的频率值。sel为根据所计数值自动合理选择的量程,此时sel为“0001”,代表乘1HZ的量程,即所测方波信号的频率在9999HZ之内。2.2.3 锁存器regist模块的设计该模块用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。其功能是对四位BCD码进行锁存并且转换成为对应的4组七段码,用于驱动数码管。其中rst为高电平时对锁存器进行异步清零。rst为低电
18、平时正常工作。输入信号a对锁存器进行控制即手动选择量程,当a为“0001”时,代表选择乘1档,自动量程显示为零,手动量程显示乘1HZ,只输出计数所得值d的低四位并显示在四个十进制数码管上;当a为“0010”时,代表选择乘10档,自动量程显示为零,手动量程显示乘10HZ,只输出计数所得值d的次低四位并显示在四个十进制数码管上;当a为“0100”时,代表选择乘100档,自动量程部分清零,手动量程显示乘100HZ,只输出计数所得值d的次高四位并显示在四个十进制数码管上;当a为“1000”时,代表选择乘1000档,自动量程部分清零,手动量程显示乘1000HZ,只输出计数所得值d的高四位并显示在四个十进
19、制数码管上。当a为“0000”时,代表不进行手动选择,则手动量程显示为零,自动量程部分根据所计数值进行合理选择。sel为“0001”代表所测得的频率值在09999HZ之内,则自动量程显示乘1HZ,输出所测数值的有效部分并显示在四个十进制数码管上;sel为“0010”代表所测得的频率值在1000099999HZ之内,则自动量程显示乘10HZ,输出所测数值的有效部分的高四位并显示在四个十进制数码管上;sel为“0100”代表所测得的频率值在100000999999HZ之内,则自动量程显示乘100HZ,输出所测数值的有效部分的高四位并显示在四个十进制数码管上;sel为“1000”代表所测得的频率值在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 简易 数字频率计 设计 34
限制150内