EDA课程设计数字频率计_第1页
EDA课程设计数字频率计_第2页
EDA课程设计数字频率计_第3页
EDA课程设计数字频率计_第4页
EDA课程设计数字频率计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录前 言11. 总体设计方案21.1 总体设计方案22. 单元模块设计22.1 十进制计数器设计22.1.1 十进制计数器原件cnt10设计22.1.2 位十进制计数器的顶层设计42.2 闸门控制模块EDA设计52.2.1 定时信号模块Timer52.2.2 控制信号发生器模块T_con72.3 译码显示模块82.3.1 显示寄存器设计82.3.2 译码扫描显示电路92.3.3 译码显示模块的顶层电路设计123. 软件测试133.1 测试的环境133.2 调试和器件编程144. 设计总结155. 参考文献16前 言在电子技术高度发展的今天,各种电子产品层出不穷,而频率作为设计的最基本的参数

2、之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程的自动化等优点。数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,它的基本功能是测量正弦信号、方波信号、尖脉冲信号以及其它各种单位时间内变化的物理量。当今国内外厂家生产的数字频率计在功能和性能方面都比较优良,而且还在不断发展中,但其结构比较复杂,价位也比较高,在测量精准度要求比较低的测量场合,使用这些数字频率计就不够经济合算。我所设计的这款数字频率计能够可靠实现频率显示功能,原理及结构也比较简单本

3、次所做的课程设计就是一个数字频率计,能测量1HZ9999HZ的矩形波信号,并正确地显示所测信号的频率值。数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。   采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在Quartus仿真平台上编译、仿真、调试 ,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量各种常用的波形信

4、号的频率,而且还能对其他多种物理量进行测量。1. 总体设计方案1.1 总体设计方案数字频率计基本原理是用计数器来计算1S内输入信号周期的个数。如图1所示是4位十进制数字频率计的系统方框原理图,当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。图1 总体设计方案2. 单元模块设计2.1 十进制计数器设计2.1.

5、1 十进制计数器原件cnt10设计十进制计数器即可采用Quartus的宏元件74160,也可用VHDL语言设计,其源程序如下。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt10_v ISPORT(CLK,RST,EN:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC );END cnt10_v;ARCHITECTURE behav OF cnt10_v ISBEGIN PROCESS

6、(CLK,RST,EN) VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF RST='1'THEN CQI:=(OTHERS=>'0'); -计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN -检测时钟上升沿 IF EN='1' THEN -检测是否允许计数(同步使能) IF CQI<9 THEN CQI:=CQI+1; -允许计数,检测是否小于9 ELSE CQI:=(OTHERS=>'0'); -大于9

7、,计数值清零 END IF; END IF; END IF; IF CQI=9 THEN COUT<='1' -计数等于9,输出进位信号 ELSE COUT<='0' END IF; CQ<=CQI; -将计数值向端口输出END PROCESS;END behav;在源程序中:COUT: 计数器进位输出 CQ3.0: 计数器的状态输出 CLK: 时钟输入端 RST: 复位控制输入端,当RST=1时,CQ3.0=0 EN: 使能控制输入端,当EN=1时,计数器计数;当EN=0 时,计数器保持不工作状态。图2 十进制计数器仿真输出波形在项目编译仿真

8、成功后将设计的十进制计数器电路设置成可调用的元件cnt10_v.bsf,用于以下四位十进制计数器的顶层设计。 图3 十进制计数器元件符号 位十进制计数器的顶层设计顶层电路原理图如图4所示。文件名4cnt10.bdf。该顶层设计可以用原理图输入的方法完成。在QuartusII中,新建一个原理图编辑窗口,从当前的工程目录中调出4片十进制计数器元件cnt_v,并按4所示的4位十进制计数器的顶层原理图完成电路接线。完成4位十进制计数器的顶层原理图编辑以后,即可进行仿真测试和波形分析,其仿真输出波形如图5所示,当CLR=0,EN=1时其计数值在09999之间的变化,COUT为计数进位输入信号,在实际应用

9、中可作为超量程报警信号,因此仿真结果真确无误。此后,可将以上设计的4位十进制计数器设置成可调用的元件4cnt10.bsf以备高层设计中使用,其元件符号如图6所示。图4 十进制计数器的顶层原理图图5 四位十进制计数器的仿真图图6 元件封装符号图2.2 闸门控制模块EDA设计 根据以上所述,频率计电路工作时先要产生一个计数允许信号(即闸门信号),闸门信号的宽度为单位时间如1s,在闸门信号有效时间内,对被测信号计数,即为信号的频率,该频率计电路的精度取决于闸门信号T,该模块课分为2个子模块,一个是定是信号模块,一个是控制信号发生器模块。 定时信号模块Timer 根据设计要求,对于4位十进制计数器来说

10、,当闸门信号的最大采样时间为1s时,其计数值在09999之间,则最大频率为9999Hz,此即位频率计电路工作的1档;当闸门信号的最大采样时间为0.1s(100ms)时,其计数值在09999之间,把它转化为频率则为最小频率为10Hz,最大频率为9999Hz,此即为频率计电路工作的2档;当闸门信号的最大采样时间为0.01s(10ms)时,其计数值在09999之间,把它转换为频率则为最小频率为100Hz,最大频率为999900Hz或999.9KHz,此即为频率计电路工作的3档;当闸门信号的最大采样时间为0.001s(1ms)时,其技术值在09999之间,把它转换为频率则为最小频率为1000Hz,最大

11、频率为9999000Hz或9.99MHz,此即为频率计电路工作的4档。 本设计中假设输入的系统基准时钟为1KHz,为产生4种不同的闸门信号T,可由一组3级模10计数器对1KHz信号进行分频,为控制信号发生器提供4种不同的频率信号,通过数据选择器41MUX利用量程选择开关控制闸门信号T的基准时钟,原理如图7所示。 图7中,cnt10_v为已设计好的十进制计数器元件,可直接把该模块作为底层元件使用,41MUX为4选1数据选择器,其4个输入为1KHz信号进行分频后的4中不同的频率信号L4(1s)、L3(100ms)、L2(10ms)、L1(1ms)。A、B为量程选择开关,其4种不同编码状态00、01

12、、10、11通过4选1数据选择器分别选择输出4种不同的频率信号到Bclk,Blck将作为控制信号发生器模块的控制时钟脉冲。A、B的4种不同编码状态通过2-4译码器74139M产生4个量程状态显示信号p0(1档)、p1(2档)、p3(3档)、p4(4档)。图8为其编译仿真后的输出时序波形图,生成的元件符号图如图9所示。图7 定时信号模块原理图图8 仿真输出波形图9 定时信号模块 控制信号发生器模块T_con控制信号发生器原理图如图10,文件名T_con.bdf。该模块主要根据输入的控制时钟脉冲,产生计数允许信号EN,该信号的高电平是持续时间即计数允许时间输入的控制时钟脉冲周期;产生清零信号CLR

13、,在计数使能前对计数器清零;产生存储信号XEN,在计数后,利用上升沿把最新的频率测量值保存在显示寄存器中。控制信号发生器用74161构成4分频计数器,用一个与非门,一个或非门和一个异或门实现3种译码状态,以便产生清零信号CLR,使能信号EN和存储信号XEN。其仿真输出波形图如图11,编译仿真真确无误后,生成元件符号图12所示。 图10 信号发生器模块原理图图11 仿真输出波形图12 控制信号发生器模块2.3 译码显示模块译码显示模块有显示寄存器和译码扫描显示电路组成。 显示寄存器设计 显示寄存器是在计数后,利用触发器的上升沿把最新的频率测量值保存起来,这样在计数过程中可不必一直看着数码管显示器

14、,显示器将最终的频率读数定期进行更新,其输出将作为译码扫描显示电路的输入。16位显示寄存器的VHDL源程序如下。 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY reg_16 IS PORT ( Load: IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(15 DOWNTO 0); DOUT: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END reg_16;ARCHITECTURE behav OF reg_16 ISBEGI

15、N PROCESS( Load, DIN)BEGINIF Load ' EVENT AND Load='1' THEN -时钟到来时,锁存输入数据 DOUT<=DIN; END IF; END PROCESS; END behav;在源程序中: Load: 锁存信号,上升沿触发 DIN15.0: 寄存器输入 DOUT15.0: 寄存器输出 图13 16位显示寄存器元件符号 译码扫描显示电路数字逻辑系统中常用的显示器件是数码管,半导体数码管的外形和等效电路如图14所示,其每一个字段都是一个发光二极管。在FPGA验证设计结果时,两种方法均可采用。N个LED数码管以静态

16、方式显示时,需用到8×N条引脚端资源是有限的。因此对于多个LED数码管显示,可以采用扫描方式来实现LED数码管动态显示。实现方法是将频率计的4个数码管的相应字段并联起来,由于FPGA的输入信号a、b、c、d、e、f、g、h(小数点)直接驱动相应字段,由片选信号S1、S2、S3、S4依次点亮各个LED数码管,循环进行显示,其原理图如图15。 图14 数码管的外形和等效电路图15 数码管动态扫描显示原理图 七段数码显示译码器的VHDL设计 该模块将显示寄存器的4位BCD数字符译成七段码,根据表1,其VHDL源程序如下。表1 共阴极LED数码管显示译码真值BCD码输入 输出电平 输出字形B

17、CD码输出 输出电平 输出字形 DCBA gfedcba 0101 1101101 5 0000 0111111 0 0110 1111101 6 0001 0000110 1 0111 0000111 7 0010 1011011 2 1000 1111111 8 0011 1001111 3 1001 1101111 9 0100 1100110 4 七段数码显示译码器的VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT(A :IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S

18、:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END DECL7S;ARCHITECTURE one OF DECL7S ISBEGINPROCESS(A) BEGIN CASE A IS WHEN"0000"=> LED7S<="0111111" -0(LED为共阴级) WHEN"0001"=> LED7S<="0000110" -1 WHEN"0010"=> LED7S<="1011011" -2 WHEN&quo

19、t;0011"=> LED7S<="1001111" -3 WHEN"0100"=> LED7S<="1100110" -4 WHEN"0101"=> LED7S<="1101101" -5 WHEN"0110"=> LED7S<="1111101" -6 WHEN"0111"=> LED7S<="0000111" -7 WHEN"100

20、0"=> LED7S<="1111111" -8 WHEN"1001"=> LED7S<="1101111" -9 WHEN OTHERS=> NULL; END CASE; END PROCESS;END one; 源程序中:A3.0: 09的BCD码 LED7S: 译码后的7段数据信号图16 段数码显示译码器元件符号 动态扫描显示的VHDL源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;U

21、SE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dynamic ISport(clk, reset:in std_logic; din1:in std_logic_vector(6 downto 0); -译码后的数据信号1 din2:in std_logic_vector(6 downto 0); -译码后的数据信号2 din3:in std_logic_vector(6 downto 0); -译码后饿数据信号3 din4:in std_logic_vector(6 downto 0); -译码后饿数据信号4 shift: out std_logic_vecto

22、r(3 downto 0); -位选信号 bus4: out std_logic_vector(6 downto 0); -数据信号end dynamic;architecture one of dynamic issignal scan_clk:std_logic_vector(1 downto 0);begin p1:process(clk,scan_clk,reset) -分频进程variable scan:std_logic_vector(17 downto 0);beginif reset='1' then scan:="000000000000000000

23、" scan_clk<="00"elsif clk'event and clk='1'then scan:=scan+1;end if; scan_clk<=scan(1 downto 0);end process p1;p2:process(scan_clk,din1,din2,din3,din4) -扫描进程begin case scan_clk is when"00"=>bus4<=din1;shift<="0001" when"01"=>

24、bus4<=din2;shift<="0010" when"10"=>bus4<=din3;shift<="0100" when"11"=>bus4<=din4;shift<="1000" when others=>bus4<="0000000"shift<="0000" end case; end process p2; end one;源程序中:clk: 扫描时钟 reset: 复位信号

25、,当reset=1时对位选信号复位 shift: 4个数码管的位选信号,高电平有效 bus4: 进位选输出的7段数据信号din1、din2、din3、din4:输入的7段数据信号图17 动态扫描显示模块元件符号2.3.3 译码显示模块的顶层电路设计在QuartusII中,按照图18所示的译码显示模块的原理图完成底层电路设计和仿真,文件名DEC_D.bdf。图20是编译仿真后的输出时序波形图和生成的元件符号。分析图19,当FX=1234时,在时钟脉CLK作用下,首先送出最低位测量值4,此时数码管的位选信号CH3.0=(1)H,数码管的译码电平输出为(66)H。第2个为3,此时数码管的位选信号CH

26、3.0=(2) H,数码管的译码电平输出4(F) H。第3个为2,此时数码管的位选信号CH3.0=(4) H,数码管的译码电平输出为(5B) H。第4个为1,此时数码管的位选信号CH3.0=(8) H,数码管的译码电平输出为(06) H。 图18 译码显示模块的原理图 图19 仿真输出波形图20 译码显示模块DEC_D 3. 软件测试3.1 测试的环境 QuartusII是Altera公司推出各种可编程逻辑器件产品,具有完全集成化的易学、易用的可视化环境,还有具有工业标准EDA工具接口,并且可以运行在多种操作平台上。使QuartusII提供了丰富的逻辑功能库、模块库以及参数化的兆功能供设计者使

27、用。它还具有开放核的特点,允许设计人员添加自己的宏功能模块。充分利用这些逻辑功能模块,可大大减少设计工作量。QuartusII由设计输入、项目编译、项目检验和器件编程等四部分组成。设计输入主要有文本编辑器、图形编辑器、符号编辑器、波形编辑器以及第三方EDA工具生成的设计网表文件输入等,输入方式不同,生成的设计文件也不同。编译设计项目主要是根据要求设计参数和编译策略,如选定其间、锁定引脚等等,然后对项目进行网表提取、逻辑综合、器件适配,产生报告文件,供分析仿真及编程用。项目检验方法包过功能仿真、模拟仿真和定时分析,编程验证是将仿真后的目标文件编入所选定的Altera可编程逻辑器件中,然后加入实际激励信号进行测试,检查是否达到要求。3.2 调试和器件编程 将各个模块的源文件程序代码输入文本文件,编译运行项目成功后,把各个模块放在一起形成顶层设计文件,对项目进行逻辑综合,然后将项目的设计结果加载到Altera器件中;成功编译以后,进入到模拟仿真时段,设置好完成时间和网络间距,在列出输入输出信号等等,进行波形编辑在模拟器运行成功;启动定时分析工具,对传播延迟、时序电路性能、建立和保持时间等进行分析顺利后,就可以开始器件编

温馨提示

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

评论

0/150

提交评论