EDA课程设计数字频率计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
前言 (1)
1. 总体设计方案 (2)
1.1总体设计方案 (2)
2. 单元模块设计 (2)
2.1十进制计数器设计 (2)
2.1.1 十进制计数器原件cnt10设计 (2)
2.1.2 位十进制计数器的顶层设计 (4)
2.2闸门控制模块EDA设计 (5)
2.2.1 定时信号模块Timer (5)
2.2.2 控制信号发生器模块T_con (7)
2.3译码显示模块 (8)
2.3.1 显示寄存器设计 (8)
2.3.2 译码扫描显示电路 (9)
2.3.3 译码显示模块的顶层电路设计 (12)
3. 软件测试 (13)
3.1测试的环境 (13)
3.2调试和器件编程 (14)
4. 设计总结 (15)
5. 参考文献 (15)
前言
在电子技术高度发展的今天,各种电子产品层出不穷,而频率作为设计的最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程的自动化等优点。
数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,它的基本功能是测量正弦信号、方波信号、尖脉冲信号以及其它各种单位时间内变化的物理量。当今国内外厂家生产的数字频率计在功能和性能方面都比较优良,而且还在不断发展中,但其结构比较复杂,价位也比较高,在测量精准度要求比较低的测量场合,使用这些数字频率计就不够经济合算。我所设计的这款数字频率计能够可靠实现频率显示功能,原理及结构也比较简单本次所做的课程设计就是一个数字频率计,能测量1HZ~9999HZ的矩形波信号,并正确地显示所测信号的频率值。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA 的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。
采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在Quartus‖仿真平台上编译、仿真、调试,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量各种常用的波形信号的频率,而且还能对其他多种物理量进行测量。
1. 总体设计方案
1.1 总体设计方案
数字频率计基本原理是用计数器来计算1S内输入信号周期的个数。如图1所示是4位十进制数字频率计的系统方框原理图,当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。
图1 总体设计方案
2. 单元模块设计
2.1 十进制计数器设计
2.1.1 十进制计数器原件cnt10设计
十进制计数器即可采用Quartu s‖的宏元件74160,也可用VHDL语言设计,其源程序如下。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cnt10_v IS
PORT(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
BEGIN
PROCESS(CLK,RST,EN)
V ARIABLE 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,计数值清零
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:计数器进位输出
CQ[3..0]:计数器的状态输出
CLK:时钟输入端
RST:复位控制输入端,当RST=1时,CQ[3..0]=0
EN:使能控制输入端,当EN=1时,计数器计数;当EN=0
时,计数器保持不工作状态。
图2 十进制计数器仿真输出波形
在项目编译仿真成功后将设计的十进制计数器电路设置成可调用的元件cnt10_v.bsf,用于以下四位十进制计数器的顶层设计。
cnt10_v
inst
CLK RST EN
CQ[3..0]COUT
图3 十进制计数器元件符号
2.1.2 位十进制计数器的顶层设计
顶层电路原理图如图4所示。文件名4cnt10.bdf 。
该顶层设计可以用原理图输入的方法完成。在QuartusII 中,新建一个原理图编辑窗口,从当前的工程目录中调出4片十进制计数器元件cnt_v ,并按4所示的4位十进制计数器的顶层原理图完成电路接线。
完成4位十进制计数器的顶层原理图编辑以后,即可进行仿真测试和波形分析,其仿真输出波形如图5所示,当CLR=0,EN=1时其计数值在0~9999之间的变化,COUT 为计数进位输入信号,在实际应用中可作为超量程报警信号,因此仿真结果真确无误。此后,可将以上设计的4位十进制计数器设置成可调用的元件4cnt10.bsf 以备高层设计中使用,其元件符号如图6所示。
图4 十进制计数器的顶层原理图