实验一实用计数器的VHDL设计说明Word下载.docx

上传人:b****2 文档编号:13767674 上传时间:2022-10-13 格式:DOCX 页数:27 大小:594.72KB
下载 相关 举报
实验一实用计数器的VHDL设计说明Word下载.docx_第1页
第1页 / 共27页
实验一实用计数器的VHDL设计说明Word下载.docx_第2页
第2页 / 共27页
实验一实用计数器的VHDL设计说明Word下载.docx_第3页
第3页 / 共27页
实验一实用计数器的VHDL设计说明Word下载.docx_第4页
第4页 / 共27页
实验一实用计数器的VHDL设计说明Word下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

实验一实用计数器的VHDL设计说明Word下载.docx

《实验一实用计数器的VHDL设计说明Word下载.docx》由会员分享,可在线阅读,更多相关《实验一实用计数器的VHDL设计说明Word下载.docx(27页珍藏版)》请在冰豆网上搜索。

实验一实用计数器的VHDL设计说明Word下载.docx

BEGIN

PROCESS(CLK,RST,EN,LOAD)

VARIABLEQ:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFRST='

0'

THENQ:

=(OTHERS=>

'

);

ELSIFCLK'

EVENTANDCLK='

1'

THEN

IFEN='

IF(LOAD='

)THENQ:

=DATA;

ELSE

IFQ<

9THENQ:

=Q+1;

ELSEQ:

ENDIF;

ENDIF;

ENDIF;

ENDIF;

IFQ="

1001"

THENCOUT<

='

;

ELSECOUT<

DOUT<

=Q;

ENDPROCESS;

ENDBEHAV;

四.程序分析

该程序的进程语句中含有两个独立的IF语句。

第一个IF语句是非完整性条件语句,因而将产生计数器时序电路;

第二个IF语句产生一个纯组合逻辑的多路选择器。

五.RTL电路图

六.工作时序图

通过对上图的观察可知:

(1)当计数器使能EN为高电平时允许计数;

RST低电平时计数器被清零。

(2)图中出现的加载信号LOAD由于是同步加载控制信号,其第一个负脉冲恰好在CLK的上升沿处,故将5加载于计数器,此后由5到9,出现了第一个进位脉冲。

由于LOAD第二个负脉冲未在CLK上升沿处,故没有发生加载操作,而第3,第4个负脉冲都出现了加载操作,这是因为它们都处于CLK上升沿处。

 

实验二LPM计数器模块使用方法

熟悉调用quartusII中的LPM计数器,掌握流程的设置以及时序仿真。

掌握LPM计数器的调用方法,流程的测试,同类宏模块的一般使用方法及不同特性的仿真测试方法。

三.设计过程

(1)LMP_COUNTER计数器模块文本调用

(2)生成的计数器文件

LIBRARYieee;

USEieee.std_logic_1164.all;

LIBRARYlpm;

USElpm.all;

ENTITYCNT4BIS

PORT

aclr:

INSTD_LOGIC;

clk_en:

clock:

data:

INSTD_LOGIC_VECTOR(3DOWNTO0);

sload:

updown:

cout:

OUTSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)

);

ENDCNT4B;

ARCHITECTURESYNOFcnt4bIS

SIGNALsub_wire0:

STD_LOGIC;

SIGNALsub_wire1:

STD_LOGIC_VECTOR(3DOWNTO0);

COMPONENTlpm_counter

GENERIC(

lpm_direction:

STRING;

lpm_modulus:

NATURAL;

lpm_port_updown:

lpm_type:

lpm_width:

NATURAL

PORT(

sload:

clk_en:

aclr:

clock:

cout:

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

data:

updown:

INSTD_LOGIC

ENDCOMPONENT;

cout<

=sub_wire0;

q<

=sub_wire1(3DOWNTO0);

lpm_counter_component:

lpm_counter

GENERICMAP(

lpm_direction=>

"

UNUSED"

lpm_modulus=>

12,

lpm_port_updown=>

PORT_USED"

lpm_type=>

LPM_COUNTER"

lpm_width=>

4

PORTMAP(

sload=>

sload,

clk_en=>

clk_en,

aclr=>

aclr,

clock=>

clock,

data=>

data,

updown=>

updown,

cout=>

sub_wire0,

q=>

sub_wire1

ENDSYN;

四.时序仿真

五.原理图输入设计

实验三基于LPM的流水线乘法累加器设计

一.实验目的

通过一个八位流水线乘法累加器的实例介绍顶层原理图工程,VHDL文本描述和宏功能块为原理图元件的输入和设计方法。

二.实验原理

通过TOOLS中的MegaWizardPlug-InManager命令分别生成LPM加法器模块,乘法模块及寄存器模块。

最后有序的将他们连接在一起构成八位乘法累加器顶层文件。

三.设计过程

(1)LPM加法器模块设置调用

(2)LPM乘法器模块设置调用

(3)各模块的symbol

ADD16B

MULT8B

FF8B

四.8位乘法累加器顶层设计

五.乘法累加器的时序仿真

由上述波形可知:

在clk的第四个上升沿后才得到第一个计算数据,之前都是0,这就是流水线结构的计算结果。

第四个上升沿得到结果为,而第五个上升沿后得到结果为,第六个上升沿后得到的结果为。

实验四全加器

熟悉quartusII的原理图输入设计方法,学会进行底层元件设计和层次化设计的主要步骤。

1位全加器可以用两个半加器及一个或门链接而成,而一个半加器是由两个输入端,两个输出端,一个与门及一个异或门。

三.实验内容

(1)半加器原理图

(2)半加器仿真波形

(3)半加器元件

(4)全加器原理图

(5)全加器时序仿真波形

实验五异步清零和同步加载与时钟使能的计数器

熟悉quartusII的VHDL文本设计流程全过程,学习计数器的设计,仿真和硬件测试,掌握原理图与文本混合设计方法

(1)程序分析

--4位预置数

--计数值输出

--计数进位输出

--复位低电平时,计数寄存器清0

THEN--测试时钟上升沿

THEN--计数使能高电平,允许计数

ELSE--预置控制低电平,允许加载

--计数小于9,继续累加

--否则计数清0

--当计数位9时,进位输出1

--否则进位输出0

--计数寄存器的值输出端口

四.编译仿真波形

(图一)

(图二)

五.原理图示意图

六.原理图时序仿真

七.分析结果

选用CycloneIII系列高速FPGA出现的时序仿真图(如图一),没有出现毛刺现象,而选择Cyclone系列FPGA就会出现毛刺现象(如图二)

实验六4选1多路选择器设计

进一步熟悉QuartusII的VHDL文本设计流程,组合电路的设计仿真和测试。

数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路,可以采用数据选择器进行选择再对该路信号加以利用。

从多路输入信号中选择其中一路进行输出的电路称为数据选择器。

或:

在地址信号控制下,从多路输入信息中选择其中的某一路信息作为输出的电路

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

当前位置:首页 > 自然科学 > 化学

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

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