EDA实验报告 4位全加器16位频率计数器.docx
- 文档编号:11793619
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:15
- 大小:221.06KB
EDA实验报告 4位全加器16位频率计数器.docx
《EDA实验报告 4位全加器16位频率计数器.docx》由会员分享,可在线阅读,更多相关《EDA实验报告 4位全加器16位频率计数器.docx(15页珍藏版)》请在冰豆网上搜索。
EDA实验报告4位全加器16位频率计数器
实验课程名称:
EDA技术与应用
实验项目名称
4位全加器实验
实验成绩
实验者
专业班级
组别
同组者
实验日期
一、实验目的
1.进一步加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。
2.熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握原理图输入方式设计的详细流程。
二、实验内容
实验内容1:
按照书本4.5.1节完成半加器和1位全加器的设计,包括用原理图输入,编译,综合,适配,仿真,实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。
实验内容2:
建立一个更高层次的原理图,利用以上获得的1位全加器构成4位全加器,并完成编译,综合,适配,仿真和硬件测试。
三、实验仪器
1.计算器及操作系统
2.QuartusII软件
四、实验原理
一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
1、半加器描述
根据半加器真值表可以画出半加器的电路图。
a
b
so
Co
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
表1半加器h_adder真值表
图1半加器h_adder电路图
2、1位全加器描述
一位全加器可以由两个半加器和一个或门连接而成,因而可以根据半加器的电路原理图或真值表写出1位全加器的VHDL描述。
图21位全加器电路图
3、4位全加器设计描述
4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。
其中,其中cin表示输入进位位,cout表示输出进位位,输入A和B分别表示加数和被加数。
S为输出和,其功能可用布尔代数式表示为:
S=A+B+Ci
首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。
将4个1位全加器级联构成四位全加器。
五、实验步骤
1、为本项工程设计建立文件夹:
文件夹取名为adder,路径为d:
\adder。
2、建立原理图文件工程和仿真
原理图编辑输入流程如下:
1)打开原理图编辑窗。
打开QuartusⅡ,选菜单File→new,选择原理图文件编辑输入项BlockDiagram/SchematicFile,按OK键。
2)建立一个初始化原理图。
在编辑窗口点击右键,在弹出菜单中选择输入元件项Insert→Symbol,将元件调入原理图编辑窗口中
3)原理图文件存盘。
选择菜单File→SaveAs,将此原理图存于刚才建立的目录d:
\adder中,取名为h_adder.bdf。
4)建立原理图文件为顶层设计工程。
然后将此文件h_adder.bdf设定为工程。
5)绘制半加器原理图。
将元件放入原理图编辑窗口,按图1接好电路。
6)仿真测试半加器。
全程编译后,打开波形编辑器。
选择File→new命令,在New窗口中选择VectorWaveformFile选项。
设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。
3、将设计项目(一位半加器)设置成可调用的元件
为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成课调用的底层元件。
在半加器原理图文件处于打开的情况下,选择菜单File→Create/Update→CreateSymbolFilesforCurrentFile,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。
图3半加器示意图
4、设计全加器顶层文件
为了建立全加器顶层文件,必须再打开一个原理图编辑窗口,方法同前。
1)选择菜单File→new→BlockDiagram/SchematicFile,将其设置成新的工程,命名为f_adder.bdf。
2)在打开的原理图编辑窗口中,双击鼠标,选择Project下先前生成的元件h_adder和若干元器件,按图2连接好一位全加器电路图。
3)仿真测试全加器。
全程编译后,打开波形编辑器。
选择File→new命令,在New窗口中选择VectorWaveformFile选项。
设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。
5、将设计项目(一位全加器)设置成可调用的元件
为了构成4位全加器的顶层设计,必须将以上设计的全加器f_adder.bdf设置成课调用的底层元件。
在全加器原理图文件处于打开的情况下,选择菜单File→Create/Update→CreateSymbolFilesforCurrentFile,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。
图4一位全加器示意图
6、四位全加器设计
1.四位全加器原理图如图5所示。
图5四位全加器电路图
六、实验结果与分析
1.半加器仿真波形
图6半加器仿真波形
分析可得,通过二输入与门,非门,或门,输出的so为两者之和,c0为进位。
仿真结果与半加器真值表表1相同,半加器设计成功。
2.一位全加器的仿真波形图
图7一位全加器的RTL图
图8一位全加器的仿真波形图
仿真结果如图,1位全加器设计成功。
3.四位全加器仿真波形
从波形可以得出,输入输出满足表达式S=A+B+CI,S>15时进位位置‘1’,设计电路功能达到设计要求。
4位全加器设计成功。
图9四位全加器仿真波形
实验课程名称:
EDA技术与应用
实验项目名称
16进制频率计实验
实验成绩
实验者
专业班级
组别
同组者
实验日期
一、实验目的
1.掌握计数器的基本原理,进一步加深对频率计数器工作原理及电路组成的理解与掌握。
2.熟悉VHDL文本输入法的使用方法,掌握更复杂的EDA设计技术流程和数字系统设计方法,完成8位十六进制频率计的设计。
二、实验仪器
1.计算器及操作系统
2.QuartusII软件
三、实验原理
1.根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s的输入信号脉冲计数允许的信号;一秒结束后,计数器被锁入锁存器,计数器清零,为下一测频计数周期做好准备。
测频控制信号可以由一个独立的发生器来产生,即图1中的FTCTRL。
2.FTCTRL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器COUNTER32B(图2)的ENABL使能进行同步控制。
当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进各锁存器REG32B中,并由外部的十六进制7段译码器译出,显示计数值。
设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号后,必须有清零信号RST_CNT对计数器进行清零,为下一秒的计数操作准备。
四、实验内容
1.测频控制电路
设计频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。
控制时钟信号clk取为1Hz,2分频后即可产生一个脉宽为1秒的时钟test-en,此作为计数闸门信号。
当test-en为高电平时,允许计数;当test-en由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次test-en上升沿到来之前产生清零信号clear,将计数器清零,为下次计数作准备。
2.32位锁存器:
设置锁存器的作用是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存器的位数应跟计数器完全一样。
3.计数器:
计数器以待测信号作为时钟,清零信号clear到来时,异步清零;test-en为高电平时开始计数。
五、实验步骤
1.建立工作库文件夹和编辑设计文件
1)新建一个文件夹。
首先利用Windows资源管理器,新建一个文件夹。
2)输入源程序。
打开QuartusⅡ,选择File→new命令,在New窗口中的DesignFile栏选择编辑文件的语言类型,这里选择VHDLFile选项。
然后在VHDL文本编译窗口中输入以下VHDL程序。
3)文件存盘。
2.创建工程
选择File→newProjectWizard命令建立工程,将设计文件加入工程中。
3.编译前设置
在对工程进行编译处理前必须给予必要的设置和约束。
4.全程编译
选择Processing→StartCompilation命令,启动全程编译。
5.时序仿真
打开波形编辑器,选择File→new命令,在New窗口中选择VectorWaveformFile选项。
设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。
①测频控制电路程序如下:
LIBRARYIEEE;--测控控制电路
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFTCTRLIS
PORT(CLKK:
INSTD_LOGIC;--1HZ
CNT_EN:
OUTSTD_LOGIC;--计数器时钟使能
RST_CNT:
OUTSTD_LOGIC;--计数器清零
Load:
OUTSTD_LOGIC);--输出锁存信号
ENDFTCTRL;
ARCHITECTUREbehaveOFFTCTRLIS
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'THENRST_CNT<='1';--产生计数器清零信号
ELSERST_CNT<='0';
ENDIF;
ENDPROCESS;
Load<=NOTDiv2CLK;
CNT_EN<=Div2CLK;
ENDbehave;
图1测控控制电路的RTL图
图2测控控制电路时序仿真图
图3测控控制器元器件图
②32位锁存器程序如下:
LIBRARYIEEE;--32位锁存器
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYREG32BIS
PORT(LK:
INSTD_LOGIC;
DIN:
INSTD_LOGIC_VECTOR(31DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDREG32B;
ARCHITECTUREbehaveOFREG32BIS
BEGIN
PROCESS(LK,DIN)
BEGIN
IFLK'EVENTANDLK='1'THEN
DOUT<=DIN;
ENDIF;
ENDPROCESS;
ENDbehave;
图432位锁存器的RTL图
图532位锁存器的时序仿真图
图632位锁存器元器件图
③计数器程序如下:
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;
ARCHITECTUREbehaveOFCOUNTER32BIS
SIGNALCQI:
STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
PROCESS(FIN,CLR,ENABL)
BEGIN
IFCLR='1'THENCQI<=(OTHERS=>'0');--清零
ELSIFFIN'EVENTANDFIN='1'
THENIFENABL='1'THENCQI<=CQI+1;
ENDIF;
ENDIF;
ENDPROCESS;
DOUT<=CQI;
ENDbehave;
图732位计数器的RTL图
图832位计数器的时序仿真图
图932位计数器的元器件图
4频率计顶层文件设计
程序如下:
LIBRARYIEEE;--频率计顶层文件
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFREQTESTIS
PORT(CLK1HZ:
INSTD_LOGIC;
FSIN:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDFREQTEST;
ARCHITECTUREstrucOFFREQTESTIS
COMPONENTFTCTRL
PORT(CLKK:
INSTD_LOGIC;--1HZ
CNT_EN:
OUTSTD_LOGIC;--计数器时钟使能
RST_CNT:
OUTSTD_LOGIC;--计数器清零
Load:
OUTSTD_LOGIC);--输出锁存信号
ENDCOMPONENT;
COMPONENTCOUNTER32B
PORT(FIN:
INSTD_LOGIC;--时钟信号
CLR:
INSTD_LOGIC;--清零信号
ENABL:
INSTD_LOGIC;--计数使能信号
DOUT:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));--计数结果
ENDCOMPONENT;
COMPONENTREG32B
PORT(LK:
INSTD_LOGIC;
DIN:
OUTSTD_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;
图108位十六进制频率计电路图
六.实验结果及分析
工程编译通过后,必须对其功能和时序性质进行仿真测试。
打开波形编辑器,选择File→new命令,在New窗口中选择VectorWaveformFile选项。
设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。
8位十六进制频率计时序仿真波形如下,仿真结果说明十六进制频率计设计成功。
图118位十六进制频率计时序仿真波形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA实验报告 4位全加器16位频率计数器 EDA 实验 报告 全加器 16 频率 计数器