EDA实验报告 4位全加器16位频率计数器.docx

上传人:b****5 文档编号:11793619 上传时间:2023-04-02 格式:DOCX 页数:15 大小:221.06KB
下载 相关 举报
EDA实验报告 4位全加器16位频率计数器.docx_第1页
第1页 / 共15页
EDA实验报告 4位全加器16位频率计数器.docx_第2页
第2页 / 共15页
EDA实验报告 4位全加器16位频率计数器.docx_第3页
第3页 / 共15页
EDA实验报告 4位全加器16位频率计数器.docx_第4页
第4页 / 共15页
EDA实验报告 4位全加器16位频率计数器.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

EDA实验报告 4位全加器16位频率计数器.docx

《EDA实验报告 4位全加器16位频率计数器.docx》由会员分享,可在线阅读,更多相关《EDA实验报告 4位全加器16位频率计数器.docx(15页珍藏版)》请在冰豆网上搜索。

EDA实验报告 4位全加器16位频率计数器.docx

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位十六进制频率计时序仿真波形

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1