VHDL实验指导书.docx

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

VHDL实验指导书.docx

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

VHDL实验指导书.docx

VHDL实验指导书

 

硬件描述语言及应用

实验指导书

 

河南科技大学

电子信息工程学院

VHDL语言及应用实验指导书

 

宋潇主编

齐晶晶副主编

 

电工电子实验教学中心

2010年3月

目录

实验一MAX+PLUSⅡ基本应用练习1

实验二VHDL基本结构设计练习6

实验三基本语句编程练习一8

实验四基本语句编程练习二10

实验五VHDL组合逻辑电路设计12

实验六VHDL时序逻辑电路设计14

实验七VHDL有限状态机设计16

附录各种下载板与主板主要器件连接关系表18

实验一MAX+PLUSⅡ基本应用练习

为了使读者快速学会使用Altera公司的EDA工具软件MAX+PLUSⅡ,下面将以简单组合逻辑的设计为例,讲解如何利用MAX+PLUSⅡ软件进行设计和测试的全过程。

一、实验目的

1、初步了解VHDL语言;

2、了解VHDL语言的编程环境及开发软件MAX+PLUSⅡ的运行;

3、了解开发软件MAX+PLUSⅡ的编译、仿真等。

二、实验环境

本指导书中的VHDL语言均在MAX+PLUSⅡ中进行编译仿真,有需要实验箱的情况下使用SE-5型实验箱,管脚的连接参照附录中《各种下载板与主板主要器件连接关系表》。

三、预习要求

初步掌握VHDL语言的基本结构,熟悉该数据类型与运算操作符,了解MAX+PLUSⅡ的运行过程。

四、实验内容及步骤

简单组合逻辑包括两个输入、三个输出,如下表1-1。

表1-1使用的信号及功能

输入信号名

功能

输出信号名

功能

in1

开关输入

out1

in1

in2

开关输入

out2

非in1

out3

in1与in2

out4

in1或in2

out5

in1异或in2

 

1、原理图设计

图1-1简单组合逻辑的原理图设计

2、VHDL源程序

(1)创建新目录及启动MAX+PLUSⅡ

a、建立新目录

在创建新项目之前,首先要为该设计(项目)建立一个新目录,如“e:

\example”。

b、启动MAX+PLUSⅡ软件

从“开始”菜单选择“程序”中的MAX+PLUSⅡ项,或双击桌面上“max2win.exe”图标,就进入到MAX+PLUSⅡ软件的集成环境界面。

(2)创建源文件

a、生成一个新的文本文件

选择菜单“File”→“New”或单击工具条中的

图标,出现如图1-2所示的对话框。

图1-2New对话框

选择“TextEditorfile”(文本编辑方式),然后单击“OK”按钮,会出现一个如图1-4所示的无标题文本编辑窗口“Untitled-TextEditor”。

图1-3文本编辑窗口

b、输入简单组合逻辑的源程序exp.vhd

在出现的“Untitled-TextEditor”文本编辑窗口中输入如下简单组合逻辑的VHDL源程序exp.vhd。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYexpIS

PORT(in1,in2:

INSTD_LOGIC;

out1,out2,out3,out4,out5:

OUTSTD_LOGIC);

ENDexp;

ARCHITECTUREart1OFexpIS

BEGIN

out1<=in1;

out2<=NOTin1;

out3<=in1ANDin2;

out4<=in1ORin2;

out5<=in1XORin2;

ENDARCHITECTUREart1;

c、保存文件

输入完毕后,选择菜单“File→“Save”或单击工具条中的

图标,首先在“FileName”栏中输入文件名“exp.vhd”。

(注意文件后缀的选择,在MAX+PLUSⅡ中,文件的后缀决定所使用的语言。

后缀“.vhd”表示VHDL文件,“.tdf”表示AHDL文件,“.v”表示Verilog文件。

然后在“Drives”驱动器选择栏中选择刚刚建立的项目路径所在的驱动器“e:

”,在“Directories”路径栏中选择所建立的项目路径“example”,最后在“AutomaticExtension”(自动扩展名)的下拉菜单中选择“.vhd”,再单击“OK”按钮,即把两输入或门的源程序“exp.vhd”保存在目录“e:

\example”中。

d、设定项目及编译

选择菜单“File”→“Project”→“SetProjecttoCurrentFile”,使当前的项目名为exp,即软件自动使项目名与源程序名一致,这时源程序就处于该项目下。

选择菜单“MAX+PLUSⅡ”→“Compiler”出现图1-4对话框。

图1-4编译对话框

点击“Start”,对源文件进行编译。

编译成功后可生成时序模拟文件及器件编程文件。

若有错误,编译器将停止编译,并在下面的信息框中给出错误信息,双击错误信息条,一般可给出错误之处。

(注意:

在改正源程序错误的时候,应该按照错误提示中行数从上到下纠正,每纠正一个,就需要保存编译,再查看出错地方,直到没有错误为止。

这样做的原因是,很多后续错误可能是由于前面某行出错引起的)。

e、项目校验

项目校验包括以下几步:

(a)建立输入波形文件;

(b)编辑输入节点波形,即为输入信号建立输入波形;

(由于在数字电子技术实验中已经学会使用这部分功能,不再作详细介绍,可参照《MAX+PLUSⅡ及VHDL实用教程》。

(c)记录输入、输出的波形图。

f、创建元件图形符号

选择菜单“File”→“EditSymbol”会出现如图1-5所示创建的元件符号,从符号中可以看出,该元件有两个输入in1、in2,五个输出out1、out2、out3、out4、out5,正是源程序中所描述的。

图1-5创建的orm2元件图形符号

3、目标器件选择与管脚锁定

本实验中采用SE-5型实验箱,选择FLEX10K器件系列中的EPF10K10LC84-3器件。

管脚锁定将输入锁定到数据开关K1~K10中的任意两个,输出锁定到发光管l1~l10的任意五个,参照附录中《各种下载板与主板主要器件连接关系表》自行锁定管脚,记录管脚锁定情况。

注意:

完成管脚锁定后,需要重新编译使之生效。

重新编译之后,再重新进行项目校验(时序仿真),若正确,可进行下一步:

器件编程/配置。

5、器件编程/配置

通过数据开关及发光管是否点亮验证简单逻辑组合功能的实现情况。

(由于在数字电子技术实验中已经学会使用这部分功能,不再作详细介绍,可参照《MAX+PLUSⅡ及VHDL实用教程》。

五、思考题

1、本次实验中采取了先建立源程序文件,再使其成为顶层项目的办法(即使项目名与源程序文件名一致)。

是否可以先建立新项目,再在该项目下建立源文件?

写出操作步骤。

2、写出VHDL源程序在MAX+PLUSⅡ软件环境中的主要操作步骤。

六、实验报告要求

1、写出实验题目、实验目的、实验原理、实验仪器、实验内容。

2、记录简单逻辑组合的仿真波形图。

3、记录管脚连接及实现情况。

实验二VHDL基本结构设计练习

一、实验目的

1、了解VHDL的基本结构。

2、了解实体、结构体的格式及功能。

3、了解二选一选择电路的VHDL描述。

二、预习要求

1、预习使用VHDL语言描述基本结构。

2、掌握实体、结构体的格式及功能。

3、理解本实验中二选一选择电路的原理和VHDL描述方式。

三、实验内容及步骤

二选一选择器具有一个两位的输入input,选择输入sel,输出y。

当sel=0时,y输出input(0);当sel=1时,y输出input

(1)。

以下两个源程序均是描述二选一选择器的,程序mux2从功能角度来描述,程序mux_2从内部电路结构来描述。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux2IS

PORT(input:

INSTD_LOGIC_VECTOR(1DOWNTO0);

sel:

INSTD_LOGIC;

y:

OUTSTD_LOGIC);

ENDENTITYmux2;

ARCHITECTURErtlOFmux2IS

BEGIN

y<=input(0)WHENsel='1'ELSE

input

(1);

ENDrtl;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux_2IS

PORT(input:

INSTD_LOGIC_VECTOR(1DOWNTO0);

sel:

INSTD_LOGIC;

y:

OUTSTD_LOGIC);

ENDENTITYmux_2;

ARCHITECTURErtlOFmux_2IS

SIGNALtmp1,tmp2,tmp3:

STD_LOGIC;

BEGIN

tmp1<=input(0)ANDsel;

tmp2<=input

(1)AND(notsel);

tmp3<=tmp1ORtmp2;

y<=tmp3;

ENDrtl;

1、将上述mux2.vhd和mux_2.vhd源程序在MAX+PLUSⅡ环境中运行,包括编译、仿真,通过产生的波形图验证其功能,并分别记录输入输出波形图,其中波形输入自行设定。

*2、基于已经实现二选一选择器,试设计一个四选一选择器。

四、思考题

1、写出实体、结构体的格式。

2、根据mux_2.vhd,画出二选一选择器的电路图,包括内部的门级结构和输入输出引脚,并标出内部各导线及输入输出引脚的名称。

五、实验报告要求

1、写出实验题目、实验目的、实验原理、实验仪器、实验内容。

2、写出两个源程序。

3、记录波形仿真图。

*4、记录实验内容2中的波形仿真图和传输延时分析。

实验三基本语句编程练习一

一、实验目的

1、了解VHDL语言中的顺序语句。

2、了解顺序语句中的PROCESS、IF格式及功能。

3、了解优先编码器的原理及VHDL的描述方式。

二、预习要求

1、预习VHDL语言中的顺序语句。

2、掌握优先编码器的原理结构和用VHDL实现。

3、预习顺序语句中的PROCESS、IF的格式及功能。

三、实验内容及步骤

设计一个8输入的优先编码器,输入分别为a7、a6、a5、a4、a3、a2、a1、a0,输出b(三位),其真值表如表3-1,元件图形符号如图3-1。

表3-18输入的优先编码器真值表

输入

输出

a7

a6

a5

a4

a3

A2

a1

a0

b2

b1

b0

1

×

×

×

×

×

×

×

1

1

1

0

1

×

×

×

×

×

×

1

1

0

0

0

1

×

×

×

×

×

1

0

1

0

0

0

1

×

×

×

×

1

0

0

0

0

0

0

1

×

×

×

0

1

1

0

0

0

0

0

1

×

×

0

1

0

0

0

0

0

0

0

1

×

0

0

1

0

0

0

0

0

0

0

1

0

0

0

图3-18输入的优先编码器元件图形符号

根据以上真值表和元件图形符号设计一个优先编码器,要求分别使用IF…ELSIF…ENDIF语句和IF…ENDIF语句两种方式实现,注意其中a0~a7的顺序。

如果改变顺序,是否仍然能够实现功能。

1、用VHDL语言设计上述优先编码器。

2、将已设计好的两个源程序在MAX+PLUSⅡ环境中运行,包括编译、仿真,通过产生的波形图验证其功能,并记录输入输出波形图,其中波形输入自行设定。

3、分别改变两个源程序中a0~a7的顺序,再进行仿真,观察其结果是否改变。

四、思考题

1、写出顺序语句中的PROCESS、IF的格式

2、两种实现方法中a0~a7的顺序分别是什么?

代表了什么原理?

五、实验报告要求

1、写出实验题目、实验目的、实验原理、实验仪器、实验内容。

2、写出两个源程序。

3、记录波形仿真图。

实验四基本语句编程练习二

一、实验目的

1、了解VHDL语言中的并行语句。

2、了解并行语句中的ARCHITECTURE内部PROCESS之间的并行以及PROCESS内部的顺序。

3、了解BCD码六十进制同步计数器的原理及VHDL的描述方式。

二、预习要求

1、预习VHDL语言中并行语句的格式及功能

2、预习PROCESS进程之间的同步。

3、根据实验内容设计两进程的BCD码六十进制同步计数器。

三、实验内容及步骤

设计一个BCD码六十进制同步计数器,个位显示0~9,使用进程p1,十位显示0~5,使用进程p2,两个进程PROCESS的敏感信号均为clk,个位十位均用4位二进制数表示。

个位每计到9,十位就自动计一个数。

十位计到5,个位计到9,整个计数器就清零,并输出一个进位信号。

该器件具有的端口及功能如下:

clk:

输入时钟

clr:

同步清零

oc:

六十进制的进位输出

y0:

四位,计数个位

y1:

四位,计数十位

BCD码六十进制同步计数器的元件图形符号如图4-1所示。

图4-1BCD码六十进制同步计数器的元件图形符号

1、将上述源程序在MAX+PLUSⅡ环境中运行,包括编译、仿真,通过产生的波形图验证其功能,并记录输入输出波形图,其中波形输入自行设定。

2、进行传输延时分析并记录之。

3、将该设计进行目标器件选择、管脚锁定、器件编程/配置。

验证是否实现六十计数。

记录管脚锁定情况。

参考附录中《各种下载板与主板主要器件连接关系表》。

*4、如果将十位计数进程的敏感信号改为个位计数的进位信号,那么编写该源程序,在MAX+PLUSⅡ环境中运行,包括编译、仿真,通过产生的波形图验证其功能,并记录输入输出波形图,其中波形输入自行设定。

四、思考题

1、在两个进程之间是如何配合工作的?

哪些语句完成了这个功能?

2、如果改为异步清零,在源程序中怎么改?

3、画出源程序的流程图。

*4、画出实验内容(四)的流程图。

五、实验报告要求

1、写出实验题目、实验目的、实验原理、实验仪器、实验内容。

2、写出源程序。

3、记录波形仿真图分析。

4、记录管脚锁定情况。

*5、写出实验内容(四)的源程序,并记录仿真波形。

实验五VHDL组合逻辑电路设计

一、实验目的

1、了解VHDL组合逻辑电路设计。

2、掌握一位全加器的VHDL实现方法。

3、学习使用COMPONENT语句实现组合逻辑电路。

二、预习要求

1、预习如何使用VHDL语言设计组合逻辑电路。

2、掌握一位全加器的原理及结构。

3、预习COMPONENT语句的格式及功能。

4、根据实验原理写出一位全加器的VHDL源程序。

三、实验内容及步骤

一位全加器的真值表5-1,ain、bin是一位的加数与被加数,cin是低位向本位的进位,cout是本位向更高位的进位,sum是本位和。

一位全加器如图5-2所示的f_adder、它由半加器、或门实现系统,图5-1是半加器h_adder的电路结构图,使用VHDL分别写出h_adder.vhd和f_adder.vhd的源程序实现一位全加器。

表5-1一位全加器真值表

ain

bin

cin

cout

sum

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

图5-1半加器h_adder

图5-2一位全加器f_adder

1、将上述源程序在MAX+PLUSⅡ环境中运行,包括编译、仿真,通过产生的波形图验证其功能,并记录输入输出波形图,其中波形输入自行设定。

2、将该设计进行目标器件选择、管脚锁定、器件编程/配置。

验证是否实现一位全加其功能。

记录管脚锁定情况。

参考附录中《各种下载板与主板主要器件连接关系表》。

*3、根据表5-1写出输入输出之间的逻辑表达式,通过该逻辑表达式重新编写VHDL代码,并编译仿真。

四、思考题

1、根据表5-1写出输入输出之间的逻辑表达式。

2、通过该逻辑表达式编写一位全加器的VHDL代码。

五、实验报告要求

1、写出实验题目、实验目的、实验原理、实验仪器、实验内容。

2、写出半加器和一位全加器两个源程序。

3、记录波形仿真图。

4、记录管脚锁定情况。

实验六VHDL时序逻辑电路设计

一、实验目的

1、了解VHDL时序逻辑电路设计。

2、掌握四位移位寄存器的VHDL实现方法。

3、了解信号赋值语句生成寄存器的功能。

二、预习要求

1、预习如何使用VHDL设计时序电路。

2、掌握时钟clk设置的方法。

3、根据实验原理使用VHDL语言设计一个四位移位寄存器。

三、实验内容及步骤

图6-1四位移位寄存器

图6-1为四位移位寄存器,串行输入串行输出,由四个D触发器组成。

具有两个输入端(数据输入端d和时钟输入端clk)与一个数据输出端q,在时钟信号的作用下,前级的信号向后级移动。

编写VHDL源程序。

要求:

(1)首先编写D触发器的VHDL代码,然后使用COMPONENT调用D触发器设计四位移位寄存器的VHDL源程序;

(2)观察各D触发器之间的信号连接情况,使用信号赋值语句完成四位移位寄存器的VHDL源程序。

将上述源程序在MAX+PLUSⅡ环境中运行,包括编译、仿真,通过产生的波形图验证其功能,并记录输入输出波形图,其中波形输入自行设定。

四、思考题

1、根据实验内容

(2),如果将内部连接的信号设置成变量,是否能够实现该四位移位寄存器?

2、如果将输入及输出改为并口,图5-1应该如何改变?

五、实验报告要求

1、写出实验题目、实验目的、实验原理、实验仪器、实验内容。

2、写出实验内容的源程序。

3、记录波形仿真图。

实验七VHDL有限状态机设计

一、实验目的

1、本实验为综合性实验,在了解有限状态机的原理与功能的基础上,巩固前面各章所学的知识,如语言基本结构、顺序语句、数据类型、时序逻辑、组合逻辑描述等。

2、了解序列检测器的原理和设计方法。

3、掌握根据状态转换图设计有限状态机。

二、预习要求

1、预习有限状态机的几种不同风格,并比较它们之间的差别。

2、根据序列检测器的功能,画出状态转换图。

3、根据序列检测器的状态转换图自行设计有限状态机。

三、实验内容及步骤

设计实现一个序列检测器,输入是一个串行位流。

当出现序列“111”时,输出d为‘1’。

这里必须考虑出现长连‘1’的问题,也就是说,如果出现“0111110”,则输出就要保持连续三个时钟周期的‘1’。

图5-1给出了这个状态机的状态转换图,这里由四个状态,命名为:

zero,one,two和three,分别对应检测到的连续‘1’的个数。

图7-1序列检测器状态转换图

2、将已设计好的源程序在MAX+PLUSⅡ环境中运行,包括编译、仿真,通过产生的波形图验证其功能,并记录输入输出波形图,其中波形输入自行设定。

四、思考题

1、分别写出Moore状态机和Mearly状态机的原理和功能,并比较它们之间的差别。

2、若检测到四个或四个以上的连‘1’时,输出d=‘0’,那么状态转换图该如何更改?

五、实验报告要求

1、写出实验题目、实验目的、实验原理、实验仪器、实验内容。

2、写出源程序。

3、记录波形仿真图。

附录各种下载板与主板主要器件连接关系表

P1

序号

主要器件名称

信号名

兼容器件名

兼容信号名

F10K10

1

电源正极

VCC

VCC

2

输出发光管

L16

U12

2864

CS1

25

3

输出发光管

L15

CS2

24

4

输出发光管

L14

WE

23

5

输出发光管

L13

TLC

7528

WR

22

6

输出发光管

L12

DACA/B

21

7

输出发光管

L11

TLC

549

CS

19

8

输出发光管

L10

OUT

18

9

输出发光管

L9

CLK

17

10

数码管

M6

M6A

MS1~MS8

8段显示器信号

a

16

11

M6B

b

11

12

M6C

c

10

13

M6D

d

9

14

数码管

M5

M5A

e

8

15

M5B

f

7

16

M5C

g

6

17

M5D

dp

5

18

数码管

M4

M4A

MS1~MS8

动态扫描控制线

MS8

3

19

M4B

MS7

83

20

M4C

MS6

81

21

M4D

MS5

80

22

数码管

M3

M3A

MS4

79

23

M3B

MS3

78

24

M3C

MS2

73

25

M3D

MS1

72

26

数码管

M2

M2A

VGA

V-SY

71

27

M2B

ADM20E

(RS232)

RXD

70

28

M2C

TXD

69

29

M2D

67

序号

主要器件名称

信号名

兼容器件名

兼容信号名

F10K10

30

数码管

M1

M1A

VGA

RED/JK1

66

31

M1B

GRE/JK2

65

32

M1C

BLU

64

33

M1D

H-SY

62

34

输出发光管

L8

TLC

7528

D7

61

35

输出发光管

L7

D6

60

36

输出发光管

L6

D5

59

37

输出发光管

L5

D4

58

38

输出发光管

L4

D3

54

39

输出发光管

L3

D2

53

40

地端

GND

GND

P2

41

电源正极

VCC

VCC

42

43

44

45

46

47

48

49

50

扬声器

SP

U12

2864

A12

27

51

数据开关

K1

A0

28

52

数据开关

K2

A1

29

53

数据开关

K3

A2

30

54

数据开关

K4

A3

35

55

数据开关

K5

A4

36

56

数据开关

K6

A5

37

57

数据开关

K7

A6

38

58

数据开关

K8

A7

39

59

数据开关

K9

A8

47

60

数据开关

K10

A9

48

6

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

当前位置:首页 > 医药卫生 > 基础医学

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

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