作业eda设计报告.docx
《作业eda设计报告.docx》由会员分享,可在线阅读,更多相关《作业eda设计报告.docx(13页珍藏版)》请在冰点文库上搜索。
作业eda设计报告
实验一用原理图输入法设计四位全加器
一实验目的
熟悉利用QuartusII的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二实验原理
一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
而1位全加器可以按照5.4节介绍的方法来完成。
三实验内容
1:
完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设计成一个硬件符号入库。
键1、键2、键3(PIO0/1/2)分别接ain、bin、cin;发光管D2、D1(PIO9/8)分别接sum和cout。
半加器原理图如下所示:
半加器仿真波形图如下图所示:
一位全加器原理图如下所示:
一位全加器仿真波形如下图所示:
2,建立一个更高层次的原理图设计,利用以上获得的1位全加器构成4位全加器,并完成编译、综合、适配、仿真、和硬件测试。
建议选择电路模式1(附图F-2):
键2、键1输入4位加数:
键4、键3输入4位被加数:
数码6和数码5显示加和:
D8显示进位cout。
四位全加器原理图如下所示:
四位全加器波形图如下所示:
四实验总结
通过本次实验,我掌握了QuartusII的原理图输入方法设计简单组合电路和层次化设计的方法和详细流程。
实验二8位十六进制频率计设计
一、实验目的
设计8位16进制频率计,学习较复杂的数字系统设计方法。
二、实验原理
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。
测频控制信号可以由一个独立的发生器来产生,即图7-57中的FTCTRL。
根据测频原理,测频控制时序可以如图7-56所示。
设计要求是:
FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B(图7-57)的ENABL使能端进行同步控制。
当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG32B中,并由外部的16进制7段译码器译出,显示计数值。
设置锁存器的好处是数据显示稳定,不会由于周期性的清0信号而不断闪烁。
锁存信号后,必须有一清0信号RST_CNT对计数器进行清零,为下1秒的计数操作作准备。
数字频率计的关键组成部分包括一个测频控制信号发生器、一个计数器和一个锁存器,另外包含外电路的信号整形电路、脉冲发生器、译码驱动电路和显示电路,其原理框图如图1所示。
图1数字频率计原理框图
工作原理:
系统正常工作时,脉冲信号发生器输入1Hz的标准信号,经过测频控制信号发生器的处理,2分频后即可产生一个脉宽为1秒的时钟信号,以此作为计数闸门信号。
测量信号时,将被测信号通过信号整形电路,产生同频率的矩形波,输入计数器作为时钟。
当计数闸门信号高电平有效时,计数器开始计数,并将计数结果送入锁存器中。
设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
最后将锁存的数值由外部的七段译码器译码并在数码管上显示。
三、实验内容
完成各个模块的设计,并给出仿真测试。
再结合各模块,完成频率计的完整设计和硬件实现。
思考题
1.简述Quartus的设计流程。
建立工作库文件夹和编译设计文件,创建工程,编译前设置,全程编译,时序仿真,应用RTL电路图观察器,引脚锁定,配置文件下载。
2.功能仿真与时序仿真有什么不同?
功能仿真,验证所写代码是否能完成设计功能。
时序仿真,又称布局布线后仿真,在QuartusII完成综合后,验证设计的功能,是加入延时后的仿真。
3.还有什么其他方法实现频率计功能?
常用数字频率测量方法有直接测量法和周期测量法。
高频段常用测频法,低频段常用测周法。
本实验采用直接测量法。
直接测量法是在给定的闸门时间内,通过测量一定时间内通过的周期信号进行重复计数,再利用一定的转换方法计算出被测信号的频率。
多周期同步测量法的基本思路是使被测信号与闸门之间实现同步化,从而从根本上消除了在闸门时间内对被测信号进行计数时的±1量化误差,使测量精度大大提高。
32位寄存器
32位计数器
频率计控制电路
8位16进制频率计
LIBRARYIEEE;--32位计数器描述
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNTER32BIS
PORT(
FIN:
INSTD_LOGIC;
CLR:
INSTD_LOGIC;
ENABL:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0)
);
ENDCOUNTER32B;
ARCHITECTUREbehavOFCOUNTER32BIS
SIGNALCQI:
STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
PROCESS(FIN,CLR,ENABL)
BEGIN
IFCLR='1'THENCQI<=(OTHERS=>'0');
ELSIFFIN'EVENTANDFIN='1'THEN
IFENABL='1'THENCQI<=CQI+1;
ENDIF;
ENDIF;
ENDPROCESS;
DOUT<=CQI;
ENDbehav;
LIBRARYIEEE;--测频控制电路:
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFTCTRLIS
PORT(
CLKK:
INSTD_LOGIC;
CNT_EN:
OUTSTD_LOGIC;
RST_CNT:
OUTSTD_LOGIC;
Load:
OUTSTD_LOGIC
);
ENDFTCTRL;
ARCHITECTUREbehavOFFTCTRLIS
SIGNALDiv2CLK:
STD_LOGIC;
BEGIN
PROCESS(CLKK)
BEGIN
IFCLKK'EVENTANDCLKK='1'THEN
Div2CLK<=NOTDiv2CLK;
ENDIF;
ENDPROCESS;
PROCESS(CLKK,Div2CLK)
BEGIN
IFCLKK='0'ANDDiv2CLK='0'THENRST_CNT<='1';
ELSERST_CNT<='0';
ENDIF;
ENDPROCESS;
Load<=NOTDiv2CLK;
CNT_EN<=Div2CLK;
ENDbehav;
LIBRARYIEEE;--32位锁存器:
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYREG32BIS
PORT(
LK:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0)
);
ENDREG32B;
ARCHITECTUREbehavOFREG32BIS
BEGIN
PROCESS(LK,DIN)
BEGIN
IFLK'EVENTANDLK='1'THENDOUT<=DIN;
ENDIF;
ENDPROCESS;
ENDbehav;
LIBRARYIEEE;--频率计顶层文件
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFREQTESTIS
PORT(
CLK1HZ:
INSTD_LOGIC;--输入引脚,输入1HZ信号作为时钟信号
FSIN:
INSTD_LOGIC;--待测频率信号
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0)--计数结果输出
);
ENDFREQTEST;
ARCHITECTUREstrucOFFREQTESTIS
COMPONENTFTCTRL--测频控制电路
PORT(
CLKK:
INSTD_LOGIC;--1HZ输入信号
CNT_EN:
OUTSTD_LOGIC;--0.5HZ信号,产生1s的计数时间
RST_CNT:
OUTSTD_LOGIC;--计数器清零信号,1HZ与使能信号同为低时清零
Load:
OUTSTD_LOGIC--0.5HZ锁存信号
);
ENDCOMPONENT;
COMPONENTCOUNTER32B--32位计数器
PORT(
FIN:
INSTD_LOGIC;--计数信号,与FSIN相连,输入待测信号
CLR:
INSTD_LOGIC;--清零信号,与RST_CNT相连
ENABL:
INSTD_LOGIC;--计数使能信号,与CNT_EN相连
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0)--计数结果输出,输入到锁存器中
);
ENDCOMPONENT;
COMPONENTREG32B--32位锁存器
PORT(
LK:
INSTD_LOGIC;--锁存器使能输入0.5HZ信号,与Load相连
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);--计数结果输入
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0)--计数结果输出
);
ENDCOMPONENT;
SIGNALTSTEN1:
STD_LOGIC;
SIGNALCLR_CNT1:
STD_LOGIC;
SIGNALLoad1:
STD_LOGIC;
SIGNALDTO1:
STD_LOGIC_VECTOR(31DOWNTO0);
SIGNALCARRY_OUT1:
STD_LOGIC_VECTOR(6DOWNTO0);
BEGIN
U1:
FTCTRLPORTMAP(CLKK=>CLK1HZ,CNT_EN=>TSTEN1,
RST_CNT=>CLR_CNT1,Load=>Load1
);
U2:
REG32BPORTMAP(LK=>Load1,DIN=>DTO1,DOUT=>DOUT);
U3:
COUNTER32BPORTMAP(FIN=>FSIN,CLR=>CLR_CNT1,
ENABL=>TSTEN1,DOUT=>DTO1
);
ENDstruc;