EDA技术与应用课程设计报告.docx
《EDA技术与应用课程设计报告.docx》由会员分享,可在线阅读,更多相关《EDA技术与应用课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
![EDA技术与应用课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-2/7/e631dc36-465e-41bc-9a08-f5cb922c7cb5/e631dc36-465e-41bc-9a08-f5cb922c7cb51.gif)
EDA技术与应用课程设计报告
EDA技术及应用课程设计报告
题目:
数字频率计的设计
班级:
自动化132
学生姓名:
王肖亮
指导老师:
潘清明
1.引言
1).数字频率计
数字频率计是采用数字电路制做成的能实现对周期性变化信号频率测量的仪器。
频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。
其扩展功能可以测量信号的周期和脉冲宽度。
通常说的,数字频率计是指电子计数式频率计。
测量频率的方法有很多,按照其工作原理分为无源测量法、比较法、示波器法和计数法等。
计数法在实质上属于比较法,其中最常用的方法是电子计数器法。
电子计数器是一种最常见、最基本的数字化测量仪器。
数字计数式频率计能直接计数单位时间内被测信号的脉冲数,然后以数字形式显示频率值。
这种方法测量精确度高、快速,适合不同频率、不同精确度测频的需要。
电子计数器测频有两种方式:
一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
由于数字电路的飞速发展和集成电路的普及,计数器的应用十分广泛。
利用电子计数器测量频率具有精度高,显示醒目直观,测量迅速,以及便于实现测量过程自动化等一系列突出优点,所以该方法是目前最好的。
在电子技术领域,频率是一个最基本的参数。
数字频率计作为一种最基本的测量仪器以其测量精度高、速度快、操作简便、数字显示等特点被广泛应用。
许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度等通过传感器转换成信号频率,可用数字频率计来测量。
尤其是将数字频率计与微处理器相结合,可实现测量仪器的多功能化、程控化和智能化.随着现代科技的发展,基于数字式频率计组成的各种测量仪器、控制设备、实时监测系统已应用到国际民生的各个方面。
2).EDA技术
现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即EDA技术。
EDA技术是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动地完成编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电路而随着技术的进步,EDA技术更多地应用到各个电子系统中已成一种趋势,本设计主要设计一8位10进制频率计。
QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具.
2.实验目的
(1)熟悉QuartusⅡ/ISESuite/ispLEVER软件的基本使用方法。
(2)熟悉GW48-CK或其他EDA实验开发系统的基本使用方法。
(3)学习VHDL基本逻辑电路的综合设计应用。
3.实验内容
设计并调试好8位十进制数字频率计,并用GW48-CK或其他EDA实验开发系统(事先应选定拟采用的实验芯片的型号)进行硬件验证。
4.实验要求
(1)画出系统的原理框图,说明系统中各主要组成部分的功能。
(2)编写各个VHDL源程序
(3)根据系统的功能,选好测试用例,画出测试输入信号波形或编好测试程序。
(4)根据选用的EDA实验开发装置编号用于硬件验证的管脚锁定表格或文件。
(5)记录系统仿真、逻辑综合及硬件验证结果。
(6)记录实验过程中出现的问题及解决办法。
5.系统设计思路
8位十进制数字频率计由1个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、1个32位锁存器REG32B组成。
以下分别叙述频率计各逻辑模块的功能与设计方法。
1)测频控制信号发生器的设计
频率测量的基本原理是计算每秒内待测信号的脉冲个数。
这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当TETEN高电平时,允许计数;低电平时停止计数,并保持其所记的数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,由外部的7段译码器译出并稳定显示。
锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下一秒钟的技术操作做准备。
测频控制信号发生器的工作时序,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK的频率取1Hz,而信号TSTEN的脉宽恰好为1s,可以用作闸门信号。
此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。
在计数完成后,即计数使能信号TSTEN在1S的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5s后,CLR_CNT产生一个清零信号上跳沿。
测频控制信号发生器工作时序
高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMINGSIMULATION),防止可能产生的毛刺。
2)寄存器REG32B的设计
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
若已有32位BCD码存在于此模块的输入口,在信号LOAD的上升沿后即被锁存到寄存器REG32B的内部,并由REG32B的输出端输出,然后由实验板上的7段译码器译成能在数码管上显示的相对应的数值。
3)十进制计数器CNT10的设计
此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数值。
当高电平时计数允许,低电平时计数禁止。
6.VHDL源程序
1).有时钟使能的十进制计数器的源程序CNT10.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCNT10IS
PORT(CLK:
INSTD_LOGIC;--计数时钟信号
CLR:
INSTD_LOGIC;--清零信号
ENA:
INSTD_LOGIC;--计数使能信号
CQ:
OUTINTEGERRANGE0TO15;--4位计数结果输出
CO:
OUTSTD_LOGIC);--计数进位
ENDENTITYCNT10;
ARCHITECTUREARTOFCNT10IS
SIGNALCQI:
INTEGERRANGE0TO15;
BEGIN
PROCESS(CLK,CLR,ENA)IS
BEGIN
IFCLR='1'THENCQI<=0;--计数器异步清零
ELSIFCLK'EVENTANDCLK='1'THEN
IFENA='1'THEN
IFCQI<9THENCQI<=CQI+1;
ELSECQI<=0;ENDIF;--等于9,则计数器清零
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CQI)IS
BEGIN
IFCQI=9THENCO<='1';--进位输出
ELSECO<='0';ENDIF;
ENDPROCESS;
CQ<=CQI;
ENDARCHITECTUREART;
2)32位锁存器的源程序REG32B.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYREG32BIS
PORT(LOAD:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDENTITYREG32B;
ARCHITECTUREARTOFREG32BIS
BEGIN
PROCESS(LOAD,DIN)IS
BEGIN
IF(LOAD'EVENTANDLOAD='1')THEN
DOUT<=DIN;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
3)测频控制信号发生器的源程序TESTCTL.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTESTCTLIS
PORT(CLK:
INSTD_LOGIC;--1HZ测频控制时钟
TSTEN:
OUTSTD_LOGIC;--计数器时钟使能
CLR_CNT:
OUTSTD_LOGIC;--计数器清零
LOAD:
OUTSTD_LOGIC);--输出锁存信号
ENDENTITYTESTCTL;
ARCHITECTUREARTOFTESTCTLIS
SIGNALDIV2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLK)IS
BEGIN
IFCLK'EVENTANDCLK='1'THEN--1Hz时钟二分频
DIV2CLK<=NOTDIV2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLK,DIV2CLK)IS
BEGIN
IFCLK='0'ANDDIV2CLK='0'THEN--产生计数器清零信号
CLR_CNT<='1';
ELSECLR_CNT<='0';ENDIF;
ENDPROCESS;
LOAD<=NOTDIV2CLK;TSTEN<=DIV2CLK;
ENDARCHITECTUREART;
4)数字频率计的源程序FREQ.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFREQIS
PORT(FSIN:
INSTD_LOGIC;
CLK:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDENTITYFREQ;
ARCHITECTUREARTOFFREQIS
COMPONENTCNT10IS--待调用的有时钟使能的十进制计数器端口定义
PORT(CLK:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENA:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CO:
OUTSTD_LOGIC);
ENDCOMPONENTCNT10;
COMPONENTREG32BIS--待调用的32位锁存器端口定义
PORT(LOAD:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDCOMPONENTREG32B;
COMPONENTTESTCTLIS--待调用的测频控制信号发生器端口定义
PORT(CLK:
INSTD_LOGIC;
TSTEN:
OUTSTD_LOGIC;
CLR_CNT:
OUTSTD_LOGIC;
LOAD:
OUTSTD_LOGIC);
ENDCOMPONENTTESTCTL;
SIGNALSE,SC,SL:
STD_LOGIC;
SIGNALS1,S2,S3,S4,S5,S6,S7,S8:
STD_LOGIC;
SIGNALSD:
STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
U0:
TESTCTLPORTMAP(CLK=>CLK,TSTEN=>SE,CLR_CNT=>SC,LOAD=>SL);
U1:
CNT10PORTMAP(CLK=>FSIN,CLR=>SC,ENA=>SE,CQ=>SD(3DOWNTO0),CO=>S1);--名字关联
U2:
CNT10PORTMAP(CLK=>S1,CLR=>SC,ENA=>SE,CQ=>SD(7DOWNTO4),CO=>S2);
U3:
CNT10PORTMAP(S2,SC,SE,SD(11DOWNTO8),S3);--位置关联
U4:
CNT10PORTMAP(S3,SC,SE,SD(15DOWNTO12),S4);
U5:
CNT10PORTMAP(S4,SC,SE,SD(19DOWNTO16),S5);
U6:
CNT10PORTMAP(S5,SC,SE,SD(23DOWNTO20),S6);
U7:
CNT10PORTMAP(S6,SC,SE,SD(27DOWNTO24),S7);
U8:
CNT10PORTMAP(S7,SC,SE,SD(31DOWNTO28),S8);
U9:
REG32BPORTMAP(LOAD=>SL,DIN=>SD(31DOWNTO0),DOUT=>DOUT);
ENDARCHITECTUREART;
7.仿真结果
FREQ的时序仿真结果
CNT10的时序仿真结果
8.原理图
1).功能模块
CNT10模块REG32B模块
FREQ模块TESTCTL模块
2).8位十进制数字频率计逻辑图
9.实验程序截图
CNT10.VHD
REG32B.VHD
TESTCTL.VHD
FREQ.VHD