EDA报告.docx
《EDA报告.docx》由会员分享,可在线阅读,更多相关《EDA报告.docx(11页珍藏版)》请在冰豆网上搜索。
![EDA报告.docx](https://file1.bdocx.com/fileroot1/2022-11/23/d189ea3f-2967-4ff9-8ca6-b70746f39198/d189ea3f-2967-4ff9-8ca6-b70746f391981.gif)
EDA报告
《在系统编程技术》项目设计报告
课程名称EDA技术实用教程
任课教师周泽华
设计题目数字频率计
班级自动化
(2)班
姓名学号
成绩
日期2014/12/03
目录
摘要2
一、总体设计方案3
1设计任务3
2.方案选定3
二、方案选择3
1.总体设计方案论证3
2.数码显示电路的方案选择4
三、单元模块分析与设计4
1.测频控制电路的设计4
2.32位十进制计数器电路设计4
3.锁存器电路设计6
四、整体电路设计6
1.整体硬件电路6
2.整体系统波形仿真7
3.系统引脚定义表7
五、硬件测试与实现7
六、总结8
8位十进制数字频率计
摘要:
本设计主要由测频控制电路、计数器电路、数码显示电路组成。
通过测频控制电路来控制频率计的工作,计数器用来计1s内的脉冲数,最后将数据送数码显示电路进行显示。
本频率实现了频率的精确测量与显示,测频范围为1Hz-99999999Hz,精度较高,应用前景较广。
一、总体设计方案
1.设计任务
用VHDL设计三个模块:
测频控制电路、32位十进制计数器、REG32锁存器,并对每个模块单独仿真测试。
然后用原理图的设计方式将三个模块连接,最后完成频率计设计、仿真和硬件实现。
2.方案选定
本系统主要由测频控制电路、计数器电路、数码显示电路组成,通过测频控制电路来控制频率计的工作,计数器用来计1s内的脉冲数,最后将数据送数码显示电路进行显示。
整个系统采用Cyclone系列EP1C6Q240C8的FPGA芯片,总体设计方案如图1所示:
图1系统整体框图
二、方案选择
1.总体设计方案论证
方案一:
采用中小规模数字电路构成频率计,由计数器构成主要的测量模块。
用定时器组成主要控制电路。
此方案软件设计简单,但外围芯片过多,且频带窄,实现起来较复杂,功能不强,而且不能程控和扩展。
方案二:
采用由测频控制电路、计数器电路、数码显示电路组成,通过测频控制电路来控制频率计的工作,计数器用来计1s内的脉冲数,最后将数据送数码显示电路进行显示。
此方法实现简单,成本不高,易学易用。
综合比较,两个方案均可实现题目所要求的功能,但方案一相对方案二优势更为明显,故选择方案二。
2.显示电路的方案选择
采用实验平台的电路模式五,上面已经有八位数码管,而且有现成的译码电路,不需要再重新设计数码管的译码电路。
三、单元模块分析与设计
1.测频控制电路的设计
测频控制信号可以由一个独立的发生器来产生,根据测频原理,测频控制时序可以如图2所示。
设计要求测频电路的计数使能信号CNT_EN能产生一个1s脉宽的周期信号,并对频率计中的32位二进制计数器的ENABLE使能端进行同步控制。
当CNT_EN高电平时允许计数;低电平时停止计数,并保持所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进锁存器中,并由外部的十六进制7段译码器译出,显示计数值。
锁存信号后,必须有一清零信号RST_CNT对计数器清零,为下一秒的计数操作作准备。
图2测频控制电路仿真波形
2.32位十进制计数器电路设计
本32位二进制计数器电路由八个4位二进制计数器组成。
设计时先用VHDL语言设计出4位二进制计数器,再用原理图的方式组成32位二进制计数器,组成电路如图3所示,该计数器由时钟端CLK、清零端CLEAR、使能端ENABLE、32位数据输出总线OUT以及进位输出COUT等端口组成。
四位二进制加法计数器仿真波形如图4所示。
图332位二进制计数器
图4四位二进制加法计数器仿真波形
3.锁存器电路设计
LOAD信号上升沿到来时将对输入到内部的计数信号进行锁存。
作用:
锁存信号,并将结果输出给译码电路。
锁存器电路如图5所示,仿真波形如图6所示。
图5锁存器
图6锁存器仿真波形
四、整体电路设计
1.整体硬件电路
如图7所示为8位十进制数字频率计整体电路图:
图7整体硬件电路
2.整体系统波形仿真
如图8为8位十进制数字频率计整体仿真波形图,可以看出当前的计数输出为4096,即CLK信号的频率为4096Hz。
仿真结果正确。
图8波形仿真图
3.系统引脚定义表
如图9为8位十进制数字频率计的引脚锁定图,将引脚锁定之后,保存重新编译,即可下载到实验平台,进行硬件测试。
图9引脚设计显示
五、硬件测试与实现
将程序下载到试验箱观察实验现象,当选择输入信号频率为1024Hz时,数码管显示为1024,当输入信号频率为5MHz时,数码管显示为5000123Hz,当畟信号频率为10MHz时,数码管显示为10000300Hz。
实验结果基本符合设计要求。
六、总结
在电子技术中,频率是最基本的参数之一,并且与许多点参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得尤为重要。
测量频率的方法有很多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
数字式频率计的测量原理有两类:
一是直接测频法,即在一定的闸门时间内测量被测信号的脉冲个数;二是间接测频法即周期法,如周期测频法。
直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数阀门的时间长短以达到不同的测量精度;间接测频法适用于低频信号的频率测量。
本次课程设计中使用的是直接测频法,即用计数器在计算机1S内输入信号周期的个数,其测频范围为1Hz-99999999Hz。
本系统通过几周的课程设计与实际操作,基本完成题目的要求,实现了对输入信号频率的精确测量。
测量范围比较大,精度也较高。
虽然在学习的过程中遇到很多困难,比如测频原理了解与学习,以及锁存器的设计,但是只要思路清晰,一步一步完成,就不会显得杂乱,所以这也是在这次实验中获得最丰富的经验,要从整体把握,把问题细化,逐个地解决。
附录
各模块VHDL代码:
四位二进制计数器设计
CNT4B:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT4BIS
PORT(
CLK:
INSTD_LOGIC;--被测信号输入
RST:
INSTD_LOGIC;--复位
ENA:
INSTD_LOGIC;--使能
OUTY:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);--输出数据
COUT:
OUTSTD_LOGIC
);
ENDCNT4B;
ARCHITECTUREbehavOFCNT4BIS
SIGNALCQI:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
P_REG:
PROCESS(CLK,RST,ENA,CQI)
BEGIN
IFRST='1'
THENCQI<="0000";
ELSEIFCLK'EVENTANDCLK='1'
THENIFENA='1'
THEN
IFCQI<9THENCQI<=CQI+1;--十进制
ELSECQI<="0000";
ENDIF;
ENDIF;
ENDIF;
ENDIF;
OUTY<=CQI;
ENDPROCESSP_REG;
COUT<=CQI(0)ANDNOTCQI
(1)ANDNOTCQI
(2)ANDCQI(3);
ENDbehav;
测频电路设计
Cepindianlu:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORT(
CLKK:
INSTD_LOGIC;--1Hz
CNT_EN:
OUTSTD_LOGIC;--计数器时钟使能
RST_CNT:
OUTSTD_LOGIC;--计数器清零
Load:
OUTSTD_LOGIC--输出锁存信号
);
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IFCLKK'EVENTANDCLKK='1'THEN--1Hz时钟2分频
Div2CLK<=NOTDiv2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLKK,Div2CLK)
BEGIN
IFCLKK='0'ANDDiv2CLK='0'THEN
RST_CNT<='1';--产生计数器清零信号
ELSE
RST_CNT<='0';
ENDIF;
ENDPROCESS;
Load<=NOTDiv2CLK;
CNT_EN<=Div2CLK;
ENDbehav;
32位二进制锁存器设计
Suocunqi:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYREG32BIS
PORT(
LK:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0)
);
ENDREG32B;
ARCHITECTUREARTOFREG32BIS
BEGIN
PROCESS(LK,DIN)
BEGIN
IFLK'EVENTANDLK='1'THEN
DOUT<=DIN;--LK上升沿是输出数据
ENDIF;
ENDPROCESS;
ENDART;