EDA课程设计数字频率计_第1页
EDA课程设计数字频率计_第2页
EDA课程设计数字频率计_第3页
EDA课程设计数字频率计_第4页
EDA课程设计数字频率计_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

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

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

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

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

5、计数器设计2.1.1 十进制计数器原件cnt10 设计十进制计数器即可采用 Quartus II的宏元件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 IS B

6、EGINPROCESS(CLK,RST,EN)VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1'THEN CQI:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF CQI<9 THEN CQI:=CQI+1;ELSE CQI:=(OTHERS=>'0');END IF;END IF;END IF;IF CQI=9 THEN COUT<='

7、;1'ELSE COUT<='0'END IF;CQ<=CQI;END PROCESS;END behav;-计数器异步复位-检测时钟上升沿-检测是否允许计数(同步使能)-允许计数,检测是否小于 9-大于9,计数值清零-计数等于9,输出进位信号-将计数值向端口输出在源程序中:COUT:计数器进位输出CQ3.0:计数器的状态输出CLK:时钟输入端RST:复位控制输入端,当RST=1时,CQ3.0=0EN:使能控制输入端,当EN=1时,计数器计数;当EN=0时,计数器保持不工作状态。cnt10_v.bsf,图2十进制计数器仿真输出波形在项目编译仿真成功后将设计的

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

9、间的变化,COUT为计数进位输入信号,在实际应用中可作为超量程报警信号, 因此仿真结果真确无误。此后,可将以上设计的4位十进制计数器设置成可调用的元件4cnt10.bsf以备高层设计中使用,其元件符号如图6所示。图4十进制计数器的顶层原理图图5四位十进制计数器的仿真图>e-4cnt10clkout13.0rstout23.0enout33.0out43.0coutinst图6元件封装符号图2.2 闸门控制模块EDA设计根据以上所述,频率计电路工作时先要产生一个计数允许信号(即闸门信号) ,闸门 信号的宽度为单位时间如1s,在闸门信号有效时间内,对被测信号计数,即为信号的频率, 该频率计电

10、路的精度取决于闸门信号 该模块课分为2个子模块,一个是定是信号模块, 一个是控制信号发生器模块。2.2.1 定时信号模块Timer根据设计要求,对于4位十进制计数器来说,当闸门信号的最大采样时间为1s时,其计数值在09999之间,则最大频率为9999Hz,此即位频率计电路工作的1档;当闸 门信号的最大采样时间为0.1s(100ms时,其计数值在09999之间,把它转化为频率则为 最小频率为10Hz,最大频率为9999Hz,此即为频率计电路工作的2档;当闸门信号的最 大采样时间为0.01s(10ms附,其计数值在09999之间,把它转换为频率则为最小频率为 100Hz,最大频率为999900Hz

11、或999.9KHz,此即为频率计电路工作的 3档;当闸门信号 的最大采样时间为0.001s(1ms寸,其技术值在09999之间,把它转换为频率则为最小频 率为1000Hz,最大频率为9999000Hz或9.99MHz,此即为频率计电路工作的 4档。本设计中假设输入的系统基准时钟为 1KHz,为产生4种不同的闸门信号T,可由一组3级模10计数器对1KHz信号进行分频,为控制信号发生器提供 4种不同的频率信号,通过数据选择器41MUX利用量程选择开关控制闸门信号 T的基准时钟,原理如图7所示。图7中,cnt10_v为已设计好的十进制计数器元件,可直接把该模块作为底层元件使用,41MUX为4选1数据

12、选择器,其4个输入为1KHz信号进行分频后的4中不同的 频率信号L4(1s)、L3(100ms)、L2(10ms)、L1(1ms)。A、B为量程选择开关,其 4种不同编码状态00、01、10、11通过4选1数据选择器分别选择输出4种不同的频率信号到Bclk,Blck将作为控制信号发生器模块的控制时钟脉冲。A、B的4种不同编码状态通过2-49所示。OUTPUTBclk1msINPUTOUTPUTP2P3J译码器74139M产生4个量程状态显示信号p0(1档)、p1(2档)、p3(3档)、p4(4档)。图8 为其编译仿真后的输出时序波形图,生成的元件符号图如图图7定时信号模块原理图图8仿真输出波形

13、Timerinst图9定时信号模块2.2.2 控制信号发生器模块T_con控制信号发生器原理图如图10,文彳名T_con.bdf。该模块主要根据输入的控制时钟脉冲,产生计数允许信号EN,该信号的高电平是持续时间即计数允许时间输入的控制时钟脉冲周期;产生清零信号CLR,在计数使能前对计 数器清零;产生存储信号XEN,在计数后,利用上升沿把最新的频率测量值保存在显示寄 存器中。控制信号发生器用74161构成4分频计数器,用一个与非门,一个或非门和一个异或 门实现3种译码状态,以便产生清零信号CLR,使能彳S号EN和存储信号XEN。具仿真输 出波形图如图11,编译仿真真确无误后,生成元件符号图 12

14、所示。Bclk- INPUT4DNG图10信号发生器模块原理图图11仿真输出波形T_conXX- Bclk ENCLRXENinst图12控制信号发生器模块2.3 译码显示模块译码显示模块有显示寄存器和译码扫描显示电路组成。2.3.1 显示寄存器设计显示寄存器是在计数后,利用触发器的上升沿把最新的频率测量值保存起来,这样在计 数过程中可不必一直看着数码管显示器,显示器将最终的频率读数定期进行更新,其输出将 作为译码扫描显示电路的输入。16位显示寄存器的VHDL源程序如下。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UN

15、SIGNED.ALL;ENTITY reg_16 ISPORT ( 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 ISBEGINPROCESS( Load, DIN)BEGINIF Load ' EVENT AND Load='1' THEN-时钟至U来时,锁存输入数据DOUT<=DIN;END IF;END PROCESS;END be

16、hav;在源程序中:Load:锁存信号,上升沿触发DIN15.0:寄存器输入DOUT15.0: 寄存器输出reg_16X LoadDOUT15.0DIN15.0inst图13 16位显示寄存器元件符号2.3.2译码扫描显示电路数字逻辑系统中常用的显示器件是数码管,半导体数码管的外形和等效电路如图14所示,其每一个字段都是一个发光二极管。 在FPGA验证设计结果时,两种方法均可采用。 N个LED数码管以静态方式显示时,需用到8X N条引脚端资源是有限的。因此对于多个 LED数码管显示,可以采用扫描方式来实现 LED数码管动态显示。实现方法是将频率计的4个数码管的相应字段并联起来,由于FPGA的输

17、入信号a、b、 c、d、e、f、g、h (小数点)直接驱动相应字段,由片选信号S1、S2、S3、S4依次点亮各个LED数码管,循环进行显示,其原理图如图 15。数码管的外形和等效电路图14公其阳极 图15数码管动态扫描显示原理图七段数码显示译码器的 VHDL设计该模块将显示寄存器的4位BCD数字符译成七段码,根据表1,其VHDL源程序如下。表1共阴极LED数码管显示译码真值BCD码输入输出电平输出字形BCD码输出输出电平输出字形DCBAgfedcba0101110110150000011111100110111110160001000011010111000011170010101101121

18、00011111118001110011113100111011119010011001104七段数码显示译码器的 VHDLW程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT(A :IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END DECL7S;ARCHITECTURE one OF DECL7S ISBEGINPROCESS(A)BEGINCASE A IS-0(LED为共阴级)-1-2-3-4-5-6-7-8-9

19、WHEN"0000"=> LED7S<="0111111"WHEN"0001"=> LED7S<="0000110"WHEN"0010"=> LED7s<="1011011”;WHEN"0011"=> LED7S<="1001111"WHEN"0100"=> LED7S<="1100110"WHEN"0101"=> LED

20、7S<="1101101"WHEN"0110"=> LED7S<="1111101"WHEN"0111"=> LED7S<="0000111"WHEN"1000"=> LED7S<="1111111"WHEN"1001"=> LED7S<="1101111"WHEN OTHERS=> NULL;END CASE;END PROCESS;END one;源程序

21、中:A3.0 :09的BCD码LED7S:译码后的7段数据信号DECL7SA3.0LED7s6.0inst动态扫描显示的VHDL源程序如下:图16段数码显示译码器元件符号LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dynamic ISport(clk, reset:in std_logic;din1:in std_logic_vector(6 downto 0);din2:in std_logic_vector(6 dow

22、nto 0);din3:in std_logic_vector(6 downto 0);din4:in std_logic_vector(6 downto 0);shift: out std_logic_vector(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);beginp1:process(clk,scan_clk,reset)variable scan:std_

23、logic_vector(17 downto 0);beginif reset='1' thenscan:="0000000"scan_clk<="00"elsif clk'event and clk='1'thenscan:=scan+1;end if;scan_clk<=scan(1 downto 0);end process p1;p2:process(scan_clk,din1,din2,din3,din4)begincase scan_clk iswhen"00"=>

24、bus4<=din1;shift<="0001"when"01"=>bus4<=din2;shift<="0010"when"10"=>bus4<=din3;shift<="0100"when"11"=>bus4<=din4;shift<="1000"when others=>bus4<="0000000"shift<="0000"e

25、nd case;end process p2;end one;-译码后的数据信号1-译码后的数据信号2-译码后饿数据信号3-译码后饿数据信号4-位选信号-数据信号-分频进程-扫描进程源程序中:clk:扫描时钟reset:复位信号,当reset=1 时对位选信号复位shift:4 个数码管的位选信号,高电平有效bus4:进位选输出的7 段数据信号dinl、din2、din3、din4:输入的7段数据信号dy namicclkX-resetshif t3.0 bus46.0d din16.0d din26.0din36.0din46.0inst图17动态扫描显示模块元件符号2.3.3译码显示模块的

26、顶层电路设计在QuartusII中,按照图18所示的译码显示模块的原理图完成底层电路设计和仿真, 文件名DEC_D.bdf图20是编译仿真后的输出时序波形图和生成的元件符号。分析图19,当FX=1234时,在时钟脉CLK作用下,首先送出最低位测量值 4,此时数码管的位选信号CH3.0=(1)H , 数码管的译码电平输出为(66)H。第2个为3,此时数码管的位选信号 CH3.0=(2) H , 数码管的译码电平输出4(F) Ho第3个为2,此时数码管的位选信号 CH3.0=(4) H,数 码管的译码电平输出为(5B) H 0第4个为1,此时数码管的位选信号 CH3.0=(8) H ,数 码管的译

27、码电平输出为(06) H 。UTPUTCH3.0DECL7sY 3.0A3.0LED7s6.0clkresetdin16.0din26.0din36.0D46.0din46.0inst4Y 7.4D26.0A3.0LED7S6.0inst"Y 11.8CLKINPUTVCCREXENFX 15.0shif t3.0bus46.0DECL7SA3.0inst2DECL7Sreg_16CH3.0F6.0LED7s6.0D36.0X EN FX 15.0LoadDOUT15.0丫 15.0inst5DIN15.0丫 15.12XOUTPUT图18译码显示模块的原理图A3.0LED7S6.0

28、D46.0-Minst3F6.0叫府Wn.叫些叫。口叫m叫忖叫m加叫m凰觊3T1.15re图19仿真输出波形DECDX-CLKCH3.0X-REF6.0X-XENFX15.0Tinst图20译码显示模块 DEC D3.软件测试3.1测试的环境Quartusll是Altera公司推出各种可编程逻辑器件产品,具有完全集成化的易学、易用的可视化环境,还有具有工业标准 EDAX具接口,并且可以运行在多种操作平台上。使QuartusII 提供了丰富的逻辑功能库、模块库以及参数化的兆功能供设计者使用。它还具有开放核的特点,允许设计人员添加自己的宏功能模块。充分利用这些逻辑功能模块,可大大减少设计工作量。Q

29、uartusII 由设计输入、项目编译、项目检验和器件编程等四部分组成。设计输入主要有文本编辑器、图形编辑器、符号编辑器、波形编辑器以及第三方EDACt具生成的设计网表文件输入等, 输入方式不同,生成的设计文件也不同。编译设计项目主要是根据要求设计参数和编译策略,如选定其间、锁定引脚等等,然后对项目进行网表提取、逻辑综合、器件适配,产生报告文件,供分析仿真及编程用。项目检验方法包过功能仿真、模拟仿真和定时分析,编程验证是将仿真后的目标文件编入所选定的 Altera 可编程逻辑器件中,然后加入实际激励信号进行测试,检查是否达到要求。3.2 调试和器件编程将各个模块的源文件程序代码输入文本文件,编

30、译运行项目成功后,把各个模块放在一起形成顶层设计文件,对项目进行逻辑综合,然后将项目的设计结果加载到Altera 器件中;成功编译以后,进入到模拟仿真时段,设置好完成时间和网络间距,在列出输入输出信号等等,进行波形编辑在模拟器运行成功;启动定时分析工具,对传播延迟、时序电路性能、建立和保持时间等进行分析顺利后,就可以开始器件编程了。通过利用ByteBlaster电缆与微机并行口相连,接通 EL实验箱电源,打开QuartusII编程器窗口,将器件编程文件调出,确保与电路板顺序相同。设置完成后选择Program 按键,对器件链进行编程。 管脚定义如表2 示表 2 管脚定义表Node Ndiiiew

31、ecnonLocationReservedGfCXlp|10 Alai 削OutputPIN_592» F汩Ihpiyt.PIN 1153* FsSpotPIN 564» KlInputPIN-265 K?InputPIN.27601向Ougi70 LOutLHJlPIN_37L0.530 LHJOutputPIN XL回,“9"L3JOutputPIN_33gQE2 LROutputRIN.33L16 OJ112 L1IoutputPIN_31"可1Z2 L回QLItpUtPIM.WL&. nJ13Q L1fiJOil tjMr;PTN.77L0L1F51OukculPIN的15"L1刊OutputPIN 68LU6.E1160 lipOutputPJN_6717 L1I2JOuutPIN_65Ll6?!013«!>output笆口二Ll 叵.,口192 L1I0JOutputL16.O20* LzraiOutputFIN 8JLzfe.o21a LziqOutput'PIN 82L2E6.0220L24jOutputPIN_81L2S.OJ23&L2£3jOutputPIN_80L

温馨提示

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

评论

0/150

提交评论