VHDL实验指导书.docx

上传人:b****8 文档编号:30037779 上传时间:2023-08-04 格式:DOCX 页数:50 大小:264.86KB
下载 相关 举报
VHDL实验指导书.docx_第1页
第1页 / 共50页
VHDL实验指导书.docx_第2页
第2页 / 共50页
VHDL实验指导书.docx_第3页
第3页 / 共50页
VHDL实验指导书.docx_第4页
第4页 / 共50页
VHDL实验指导书.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

VHDL实验指导书.docx

《VHDL实验指导书.docx》由会员分享,可在线阅读,更多相关《VHDL实验指导书.docx(50页珍藏版)》请在冰豆网上搜索。

VHDL实验指导书.docx

VHDL实验指导书

实验一MAXplusⅡ的使用

【实验目的】

1.掌握MAXplusⅡ的使用

2.掌握逻辑门的VHDL描述方法

【实验内容】

一、MAXplusⅡ的设计流程

1.创建设计输入文件

(1)在“MAX2work”目录下创建自己的工作目录“mywork”,使得以后自己做的设计都保存在这个目录下。

(2)单击“file”菜单中的“new”选项,出现图1-1所示的新建文件窗口。

图1-1新建文件窗口图

(3)选择“TextEditorfile”,单击“OK”按钮,出现文本编辑器,然后在文本编辑器里输入设计程序。

2.保存文件

单击工具栏上的保存按钮,出现如图1-2所示的保存窗口。

图1-2保存窗口图

选择自己的工作目录,建立自己的文件名,保存所做的设计。

3.设置项目

(1)选择菜单【File】/【Project】/【SetProjecttoCurrentFile】命令,出现图1-3所示的窗口。

图1-3设置项目窗口图

设置项目名与设计文件名相同,一般软件会自动填入此项目名,这是后续处理必不可少的一步。

4.设定器件

(1)选择菜单【Assign】/【Device】命令,出现图1-4所示的窗口。

图1-4设定器件窗口图

(2)在“DeviceFamily”选项中选择所使用的系列芯片;在“Devices”中选择“AUTO”,让软件自动选择具体器件。

单击“OK”按钮,即设定好器件。

(3)单击工具栏上的保存按钮,保存好以上所有的设计和设置。

5.编译项目

(1)选择菜单【MAXplusⅡ】/【Compiler】命令,出现编译窗口,然后选择菜单命令【Processing】/【FunctionalSNFExtractor】如图1-5所示。

(2)单击“Start”按钮,开始编译,编译成功后,会出现1-6所示的窗口。

6.功能仿真

(1)创建波形文件:

在菜单栏中选择命令【File】/【New】,出现新建文件窗口,选择“WaveformEditorFile”选项,如图1-7所示。

(2)单击“OK”按钮,创建一个无标题的波形文件。

图1-5编译窗口图

图1-6编译完成窗口

图1-7新建文件窗口图

(3)添加输入/输出信号节点:

在菜单栏中选择命令【Node】/【InsertNode】,单击“List”按钮,出现如图1-8所示的窗口。

选择列表中的信号节点,单击“OK”按纽,是输入/输出信号节点出现在波形编辑器窗口,如图1-9所示。

(4)编辑输入信号:

选择菜单命令【File】/【EndTime】,出现图1-10所示的对话框,在对话框中的文本框中输入仿真终止的时间。

选择菜单命令【Options】/【GridSize】,出现图1-11所示的对话框,在对话框中输入栅格尺寸,栅格尺寸是为了方便绘制波形而设的

图1-8插入节点窗口图

图1-9插入输入/输出节点的波形编辑器

图1-10仿真终止时间对话框

图1-11栅格尺寸对话框

设置输入信号参数或波形,选择菜单命令【Edit】/【Overwrite】。

单击工具栏中的保存按钮进行保存。

(5)功能仿真:

选择菜单命令【MAXplusⅡ】/【Simulator】,出现图1-12所示的窗口。

图1-12仿真窗口

单击“Start”按钮,开始仿真,仿真结束后出现如图1-13所示的窗口。

图1-13仿真结束窗口

仿真成功,单击“确定”按钮,关闭仿真结果提示窗口,再单击“OpenSCF”按钮,出现波形编辑器窗口。

选择菜单命令【View】/【FitinWindow】,使整个仿真波形在窗口中显示。

7.定时分析

选择菜单命令【MAXplusⅡ】/【TimingAnalyzer】,出现时间分析窗口,单击“Start”按钮,到进程条显示完成,出现如图1-14所示的窗口。

8.器件编程

选择菜单命令【MAXplusⅡ】/【Programmer】,出现如图1-15所示的窗口。

单击“Porgram”按钮,就可以把程序下载到所选择的器件中。

图1-14定时分析窗口

图1-15编程下载窗口

二、逻辑门的设计

1.下面是用行为法描述的三输入与门的VHDL程序,按照上面的叙述的设计流程进行练习。

libraryieee;

useieee.std_logic_1164.all;

entityand3_gateis

port(a,b,c:

instd_logic;

f:

outstd_logic);

endand3_gate;

architecturebehaveofand3_gateis

begin

f<=aandbandc;

endbehave;

2.用数据流法设计三输入与门。

要求自行设计VHDL程序,最后把仿真的结果写到实验报告上。

【实验要求】

1.要熟练掌握MAXplusⅡ的使用。

2.独立完成实验中要求的题目,作为实验成绩考查的依据。

 

实验二译码器的设计

【实验目的】

1.掌握二进制译码器的原理和设计。

2.掌握数字显示译码器的原理和设计

【实验内容】

一、二进制译码器的原理和设计

1.二进制译码器的原理

二进制译码器的逻辑功能是把输入的二进制代码的各种组合状态翻译成对应的输出信号,有时也称为变量译码器。

在数字电路中,最常用的是74LS138。

(1)74LS138的输入和输出信号

输入信号:

A、B、C、G1、G2A、G2B

输出信号:

Y0~Y7

(2)74LS138的功能表

G1

G2A

G2B

C

B

A

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

*

1

*

*

*

*

1

1

1

1

1

1

1

1

*

*

1

*

*

*

1

1

1

1

1

1

1

1

0

*

*

*

*

*

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

1

1

0

1

1

1

1

1

1

1

0

0

0

1

0

1

1

0

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

1

1

1

1

1

0

0

1

0

0

1

1

1

1

0

1

1

1

1

0

0

1

0

1

1

1

1

1

1

0

1

1

1

0

0

1

1

0

1

1

1

1

1

1

0

1

1

0

0

1

1

1

1

1

1

1

1

1

1

0

从功能表可以看出,当G1=1、G2A=0、G2B=0时,译码器将处于译码状态;否则译码器将被禁止,所有的输出端将被封锁在高电平。

2.二进制译码器74LS138的设计。

下面是74LS138的程序,根据上面的工作原理和功能表把程序中的空缺出添上,使程序完整,上机调试,把仿真波形画在实验报告上。

LIBRARYieee;

USEieee.std_logic_1164.all;

entitydecoder38is

port(a,b,c,g1,g2a,g2b:

instd_logic;

y:

outstd_logic_vector(7downto0));

enddecoder38;

architecturebehave38OFdecoder38is

signalindata:

std_logic_vector(2downto0);

begin

indata<=c&b&a;

process(indata,g1,g2a,g2b)

begin

if(g1=’1’andg2a=’0’andg2b=”0”)then

caseindatais

when"000"=>y<="11111110";

when"001"=>y<="11111101";

when"010"=>y<="11111011";

when"011"=>y<="11110111";

when"100"=>y<="11101111";

when"101"=>y<="11011111";

when"110"=>y<="10111111";

when"111"=>y<="01111111";

whenothers=>y<=”XXXXXXXXXX”④;

endcase;

else

y<=“111111111”⑤;

endif;

endprocess;

二、数字显示译码器的原理和设计

1.数字显示译码器的原理

在数字系统中,经常需要将数字、文字、符号的二进制代码翻译成人们习惯的形式,直观地显示出来,以便直接进行读数。

目前广泛使用的是七段字符显示器,或者称为七段数码管。

通常为了使七段数码管能够显示出所要表示的数值,需要使用数字显示译码器将所要表示的数值译成数码管所需要的驱动信号。

(1)七段数码管的输入输出信号

输入信号:

A0~A3

输出信号:

YA、YB、YC、YD、YE、YF、YG

(2)七段数码管的功能表

A3

A2

A1

A0

YA

YB

YC

YD

YE

YF

YG

0

0

0

0

1

1

1

1

1

1

0

0

0

0

1

0

1

1

0

0

0

0

0

0

1

0

1

1

0

1

1

0

1

0

0

1

1

1

1

1

1

0

0

1

0

1

0

0

0

1

1

0

0

1

1

0

1

0

1

1

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

0

1

1

1

1

1

1

0

0

1

0

1

0

0

0

1

1

1

1

1

1

1

1

0

0

1

1

1

1

1

0

1

1

2.七段数码管的设计

根据七段数码管的原理和功能,自行设计程序,并上机调试把仿真波形画在实验报告上。

【实验要求】

1.掌握数译码器的工作原理和设计方法。

2.独立完成实验中的题目,作为实验成绩考查的依据。

 

实验三数据选择器的设计

【实验目的】

1.掌握数据选择器的原理和设计

2.熟练使用IF语句、CASE语句、选择信号赋值语句和条件信号赋值语句。

【实验内容】

一、数据选择器的原理

在数字电路中,数字选择器也被称为多路选择器或者多路开关,其逻辑功能是在地址选择信号的控制下从输入的多路数据中选择一路数据作为输出。

在数字电路中使用广泛的是四选一数据选择器。

1.四选一数据选择器的输入输出信号

输入信号:

D0~D4、S0、S1

输出信号:

Q

2.四选一数据选择器的功能表

S1

S0

Q

0

0

D0

0

1

D1

1

0

D2

1

1

D3

*

*

Z

二、数据选择器的设计

1.下面是用IF语句实现的四选一数据选择器的程序,上机调试并把仿真波形画在实验报告上。

libraryieee;

useieee.std_logic_1164.all;

entitymux4is

port(d0,d1,d2,d3:

instd_logic;

s0,s1:

instd_logic;

q:

outstd_logic);

endmux4;

architecturertlofmux4is

begin

process(d0,d1,d2,d3,s0,s1)

begin

if(s1=’0’ands0=’0’)then

q<=d0;

elsif(s1=’0’ands0=’1’)then

q<=d1;

elsif(s1=’1’ands0=’0’)then

q<=d2;

elsif(s1=’1’ands0=’1’)then

q<=d3;

else

q<=’Z’;

endif;

endprocess;

endrtl;

2.根据“1”中的程序使用CASE语句和选择信号赋值语句各实现四选一数据选择器。

【实验要求】

1.掌握数据选择器的原理和设计。

2.独立完成实验中的题目,作为实验成绩考查的依据。

 

实验四全加器的设计

【实验目的】

1.掌握半加器的原理和设计

2.掌握全加器的原理和设计

3.熟练掌握例化元件的使用。

【实验内容】

一、半加器的基本原理

1.半加器的逻辑表达式

S=A⊕B

Co=AB

2.半加器的逻辑符号

 

二、全加器的基本原理

1.全加器的逻辑表达式

S=A⊕B⊕Cin

Co=(A⊕B)Cin+AB

2.全加器的功能表

A

B

Cin

S

Co

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1

3.由半加器构成全加器的电路图

 

三、全加器的设计

根据半加器构成全加器的电路图设计一位全加器。

上机调试并把仿真波形画在实验报告上。

提示:

半加器的实现程序。

libraryieee;

useieee.std_logic_1164.all;

entityhalf_adderis

port(A,B:

instd_logic;

S,Co:

outstd_logic);

endhalf_adder;

architecturertlofhalf_adderis

begin

S<=AxorB;

Co<=AandB;

endrtl;

【实验要求】

1.掌握全加器的原理和设计。

2.独立完成实验中的题目,作为实验成绩考查的依据。

 

实验五D触发器的设计

【实验目的】

1.掌握D触发器的原理设计。

2.熟练掌握同步、异步、置位和复位的应用。

【实验内容】

一、D触发器的原理

1.基本D触发器的原理

D

CP

Q

NOT(Q)

*

0

保持

保持

*

1

保持

保持

0

上升沿

0

1

1

上升沿

1

0

从上面的D触发器的功能表看出,基本D触发器只有在时钟信号CP的上升沿到来时,输入端口D的数据才能会传递给输出Q和对应的反相输出端口;否则输出端口将保持原来的值。

2.异步复位D触发器的原理

R

D

CP

Q

NOT(Q)

0

*

*

0

1

1

*

0

保持

保持

1

*

1

保持

保持

1

0

上升沿

0

1

1

1

上升沿

1

0

从功能表看出,只要复位控制端口的信号有效,D触发器将会立即进行复位操作,这种操作是与时钟信号无关的,因此是“异步”的。

3.同步D触发器的原理//xie

R

D

CP

Q

NOT(Q)

0

*

上升沿

0

1

1

*

0

保持

保持

1

*

1

保持

保持

1

0

上升沿

0

1

1

1

上升沿

1

0

从功能表看出,只有时钟的上升沿到来并且复位控制端口的信号有效时,D触发器会进行复位操作,否则不进行相应的复位操作。

这种操作是与时钟信号相关的,因此是“同步”的。

4.同步复位/置位D触发器的原理

R

S

D

CP

Q

NOT(Q)

0

1

*

上升沿

1

0

0

0

*

上升沿

0

1

0

1

*

0

保持

保持

0

1

0

上升沿

0

1

0

1

1

上升沿

1

0

从功能表看出,只有时钟的上升沿到来并且复位控制端口或者置位控制端口的信号有效时,D触发器会进行复位操作或者置位操作,否则不进行相应的复位操作。

这种操作是与时钟信号相关的,因此是“同步”的。

二、D触发器的设计

1.基本D触发器的设计

下面是基本D触发器的程序,上机调试并把仿真波形画在实验报告上。

libraryieee;

useieee.std_logic_1164.all;

entitybasic_dffis

port(d,cp:

instd_logic;

q,qb:

outstd_logic);

endbasic_dff;

architecturertlofbasic_dffis

begin

process(cp)

begin

if(cp’eventandcp=’1’)then

q<=d;

qb<=notd;

endif;

endprocess;

endrtl;

2.根据基本D触发器的程序和异步D触发器的原理自行设计异步D触发器的程序,上机调试并把仿真波形画在实验报告上。

3.根据基本D触发器的程序和同步D触发器的原理自行设计同步D触发器的程序,上机调试并把仿真波形画在实验报告上。

4.根据基本D触发器的程序和同步复位/置位D触发器的原理自行设计同步复位/置位D触发器的程序,上机调试并把仿真波形画在实验报告上。

【实验要求】

1.掌握D触发器原理和设计。

2.独立完成实验中的题目,作为实验成绩考查的依据。

 

实验六寄存器的设计

【实验目的】

1.掌握寄存器的原理和设计。

2.掌握生成语句的使用。

3.练习D触发器的设计。

【实验内容】

一、寄存器的原理

1.普通寄存器的原理

在数字电路的设计中,D触发器只能来传输或存储一位数据,而在实际设计中常常需要同时对多位数据进行传输或存储,这时可以把多个D触发器的时钟端口连接起来,然后采用一个公共的信号来进行控制。

如果公共控制信号是一个时钟信号,即采用边沿进行触发,那么这种时序电路称为寄存器。

在数字电路中,应用较为广泛的寄存器是8位寄存器74LS374。

其逻辑符号和功能表如下:

(1)74LS374的逻辑符号

 

(2)74LS374的功能表//hua

OE

CP

数据传输

0

上升沿

DQ

0

*

保持

1

*

高阻

2.移位寄存器的原理

在数字电路中,移位寄存器是指除了具有存储二进制数据的功能外,同时还具有移位功能的触发器组。

移位功能是指寄存器里面存储二进制数据能够在时钟信号的控制下依次左移或者右移。

本实验主要实现串入/串出移位寄存器。

在数字电路中,串入/串出移位寄存器是指具有一个数据输入端口、一个同步时钟输入端口和一个数据输出端口的移位寄存器。

对于这种移位寄存器来说,功能主要是体现在输入数据将在时钟边沿的触发下逐级向后移动,然后从输出端口串行输出。

下面是4位串入/串出移位寄存器的逻辑电路。

//hua

 

从逻辑电路图可以看出,4位串入/串出移位寄存器是由D触发器构成的,因此进行具体VHDL设计之前首先要进行D触发器的VHDL设计,然后才能在4位串入/串出移位寄存器的VHDL设计来调用D触发器元件。

二、寄存器的设计

1.普通寄存器的设计/xu/cheng

根据上面的给出的74LS374的逻辑图和功能表自行设计一个74LS374的VHDL程序,上机调试并把仿真波形画在实验报告上。

2.4位串入/串出移位寄存器的设计

根据给出的逻辑电路图把下面的程序补充完整,上机调试并仿真波形画在实验报告上。

Libraryieee;

Useieee.std_logic_1164.all;

Entityshiftreg4is

Port(din:

instd_logic;

Cp:

instd_logic;

Dout:

outstd_logic);

Endshiftreg4;

Architecturebehaveshiftreg4is

Componentb_dff

Port(d,cp:

instd_logic;

Q:

outstd_logic);

Endcomponent;

Begin

G1:

ForIin0to3generate

P1:

if(i=0)generate

Endgeneratep1;

P2:

if(i=3)generate

Endgeneratep2;

P3:

if((i/=0)and(i/=3)generate

Endgeneratep3;

Endgenerateg1;

Endbehave;

提示:

D触发器的设计自行设计。

【实验要求】

1.掌握寄存器的原理。

2.独立完成实验中的题目,作为实验成绩考查的依据。

 

实验七计数器的设计

【实验目的】

1.掌握基本同步计数器的原理和设计。

2.掌握可逆同步计数器的原理和设计。

3.掌握IF嵌套语句的使用。

【实验内容】

一、计数器的原理

1.基本同步计数器的原理

在数字电路中,是指在时钟脉冲的作用下,组成计数器的各个触发器的状态同时发生变化的一类计数器,即时钟输入时触发器的翻转同时发生的。

常用的是4位同步加法计数器,其输入输出信号和功能表如下:

输入信号:

CP

输出信号:

Q0~Q3、Co(进位输出端口)

CP

Q3Q2Q1Q0

Co

*

保持

保持

上升沿

计数值加1

0

上升沿

计数值计满

1

2.同步可逆计数器的原理

在数字电路中,在时钟脉冲的作用下即可递增计数又可以递减计数的计数器称为可逆计数器。

一般来说,计数器需要定义一个用来控制计数器方向的控制端口UPDOWN,可逆计数器的控制方向由它来决定,从而完成可逆计数器不同方式的计数。

下面是4位同步可逆计数器的输入输出信号和功能表:

输入信号:

R(复位端口)、S(置位端口)、EN(使能端口)、UPDOWN(计数方向的控制端口)

输出信号:

Q3~Q0、Co

R

S

EN

UPDOWN

CP

Q3~Q0

Co

1

*

*

*

*

0000

0

0

1

*

*

上升沿

1010

保持

0

0

1

1

上升沿

计数值加1

0

0

0

1

0

上升沿

计数值减1

0

0

0

1

0,1

上升沿

1111

1

0

0

0

*

*

保持

保持

二、计数器的设计

1.基本同步计数器的设计

下面是4位基本同步计数器的VHDL程序,上机调试并仿真波形画在实验报告上。

libraryie

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

当前位置:首页 > 解决方案 > 学习计划

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

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