VHDL实验指导书.docx

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

VHDL实验指导书.docx

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

VHDL实验指导书.docx

VHDL实验指导书

VHDL语言

实验指导书

 

指导老师:

宾心华

 

湖南科技大学信息与电气工程学院

通信工程系

2007年8月

1实验软件操作介绍

所有实验内容均采用Maxplus2软件来完成,首先我们对该软件的使用与操作进行一个详细的介绍:

Max+plus2是Altera公司推出的的第三代PLD开发系统(Altera第四代PLD开发系统被称为:

QuartusII,主要用于设计新器件和大规模CPLD/FPGA).使用MAX+PLUSII的设计者不需精通器件内部的复杂结构。

设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MAX+PLUSII把这些设计转自动换成最终所需的格式。

其设计速度非常快。

对于一般几千门的电路设计,使用MAX+PLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。

设计处理一般在数分钟内内完成。

特别是在原理图输入等方面,Maxplus2被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用。

下面我们通过具体的图例和操作步骤介绍Max+plus2的使用方法:

以一个最简单的例子,用ALTERA的EPLD——EPM7128S实现二分频器,来示范用MAX+PLUSII进行开发的全过程。

首先启动MAX+PLUSII,进入集成开发环境

运行:

maxstart.exe

设计输入

建立一个新设计输入文件,这里我们采用原理图方式GraphicEditorfile(*.gdf)来进行设计输入,这是最方便,最直观的逻辑输入方法

选择“OK”进入编辑状态

接着输入逻辑元件,在编辑区的空白处双击鼠标。

在SymbolName栏输入dff,表示D触发器

选择“OK”,D触发器就被放在编辑区

放置器件时,在SymbolLibraries框中选择mf库,就可以选择常用的74系列逻辑芯片。

下面再放一个反相器,输入名称:

not

在反相器上按鼠标右键,将反相器旋转180度

下面放置I/O脚,输入脚:

input,输出脚:

output

在PING_NAME上双击,编辑管脚名为in、out

鼠标移动到器件的端上就变为小十字,拖动即可画线,如图连接

好了,设计输入告一段落,将设计文件存盘,命名为myfirst.gdf

编译

上面已经完成了原理图的输入,需要给设计指定一个工程名,选择File->Project->SetProjecttoCurrentFile,将当前工程名设为当前文件名

下面定义器件,即定义用哪种EPLD来实现设计,选择Assign->Device,在弹出窗口中选择MAX7000系列的EPM7128SLC84-10,确认

准备开始编译,选择MAX+plusII->Compiler,弹出编译窗口,按Start开始编译。

编译结束之后,在编译窗口中的rpt图标上双击,可打开编译报告文件,其中有便宜后的管脚分配图,可看到我们定义的管脚in和out

分配I/O脚

上面MAX+PLUSII完成了编译,把我们定义的I/O脚自动分配给了器件EPM7128SLC84,也许你对MAX+PLUSII自动分配的管脚不满意,没关系,自己定义,选择MAX+plusII->FloorplanEditor,进入底层编辑工具,再选择Layout->DeviceView和Layout->CurrentAssignmentsFloorplan,显示当前的管脚分配情况

可看到EPLD的底层图,右上角为UnassignedNodes&Pins

可以直接将UnassignedNodes&Pins中的管脚拖到合适的地方。

 

编辑后结果如下

然后需要按前面所述将工程重新编译一遍,在rpt报告文件里可以看到新定义的管脚分配图。

仿真

设计已经完成,但功能是否完全正确呢?

只要进行一下仿真就能知道

首先,要编辑一个波形文件,打开MAX+plusII->WaveformEditor

然后确定仿真的时长,选择File->EndTime,输入100us,确定

还需要确定仿真的最小时间单位,选择Option->GridSize,输入50ns,确定

下面开始输入要仿真的信号名称,选择Node->EnterNodeFromSNF,在弹出的对话框中按List按钮,可以看到我们前面定义的I/O:

in、out

按=>选择要增加的Nodes,把in、out都加入,确定,in、out出现在WaveEditor中。

按in的图标,选中信号in,在左侧的工具按钮上选择时钟工具。

在弹出的对话框中按确认。

用左侧工具调整显示比例,得到以下波形。

这就在in脚上加入了一个周期是100ns的信号

将波形文件存盘为myfirst.scf,选择MAX+plusII->Simulator调入仿真器

直接按Start启动仿真,仿真结束后按OpenSCF,可以看到仿真结果

可以看出out脚输出正确,实现了二分频,另外,输出和输入之间的实际时延也被仿真出来了

编程

至此,一个设计已经全部完成,你可以在设计目录下找到生成的编程文件*.pof,要将它实现需要对EPM7128进行编程,最方便又廉价的方法是用Altera的ByteBlaster下载电缆将编程文件.pof从电脑的并行口直接写入器件。

选择MAX+plusII->Programmer,再选择Options->HardwareSetup,如下配置硬件。

可以看到myfirst.pof已经自动被Programmer选中了

这时,确认硬件正确连接,目标板电源打开,按下Program即可开始对目标板上的EPLD进行编程了。

2VHDL语言实验项目与具体内容

实验一基本逻辑门、编译码器的设计

1.实验目的

(1)编写VHDL语言程序,熟悉程序编写调试的一般过程。

通过具体实验巩固所学VHDL语言程序的理论知识。

(2)了解编译与仿真的作用与意义。

(3)熟练掌握简单的VHDL语言语句与程序结构。

2.实验内容

(1)利用所提供的简单门电路、编码器、译码器源程序进行编译、仿真操作,温习巩固实验一的内容。

(2)自己动手编制程序设计简单的门电路、编码器,译码器程序。

(3)将编写的程序进行编译并调试。

(4)将编译通过的程序进行仿真,观察仿真结果。

3.实验设备

PC机一台,max-plus2软件。

4.实验步骤

(1)参考所提供的源程序,在理解程序的前提下进行编译、仿真

(2)按要求编写门电路、编码器、译码器的程序。

(3)输入源程序,进行编译并调试。

(4)编译通过对程序进行仿真并观察仿真结果,分析程序与仿真结果。

5.实验报告要求

(1)列出源程序。

(2)说明所用到的VHDL语言语句功能,并对构造体的描述方式进行简单分析。

(3)观察并记录仿真结果,并分析原因与联系。

6.参考程序

1.与非门电路程序

libraryieee;

useieee.std_logic_1164.all;

entitynand2is

port(a,b:

instd_logic;

y:

outstd_logic);

endnand2;

architecturenand2_1ofnand2is

begin

y<=aandb;

endnand2_1;

2.编码器程序

LIBRARYieee;

USEieee.std_logic_1164.all;

entitybianma8_3is

port(a:

instd_logic_vector(7downto0);

b:

outstd_logic_vector(2downto0));

endbianma8_3;

architecturertlofbianma8_3is

begin

process(a)

begin

caseais

when"00000001"=>b<="000";

when"00000010"=>b<="001";

when"00000100"=>b<="010";

when"00001000"=>b<="011";

when"00010000"=>b<="100";

when"00100000"=>b<="101";

when"01000000"=>b<="110";

whenothers=>b<="111";

endcase;

endprocess;

endrtl;

3.译码器3_8设计

libraryieee;

useieee.std_logic_1164.all;

entityym3_8is

port(a0,a1,a2:

inbit;

s1,s2,s3:

inbit;

y0,y1,y2,y3,y4,y5,y6,y7:

outbit);

endym3_8;

architecturertlofym3_8is

signals:

bit;

signala:

bit_vector(2downto0);

signaly:

bit_vector(7downto0);

begin

process(a,s1,s2,s3)

begin

s<=s2ors3;

a<=a2&a1&a0;

ifs1='0'then

y<="11111111";

elsifs='1'then

y<="11111111";

else

caseais

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";

whenothers=>y<="01111111";

endcase;

endif;

endprocess;

y0<=y(0);

y1<=y

(1);

y2<=y

(2);

y3<=y(3);

y4<=y(4);

y5<=y(5);

y6<=y(6);

y7<=y(7);

endrtl;

7.其他实验要求:

(1)学生根据在利用参考程序进行实验仿真之后编写其他逻辑门电路VHDL语言程序进行仿真并观察仿真结果。

(2)参考8-3编码器与3-8译码器的实验程序,编写其他类型编码器如2-4译码,4-2编码器VHDL语言程序,进行仿真实验,观察结果。

 

实验二交通灯控制器的设计

1.实验目的

(1)初步了解复杂控制电路设计的方法与流程,进一步熟练VHDL程序编写与调试的过程。

(2)对状态机的概念有基本的认识。

(3)对于复杂的时序逻辑电路仿真应该对相应参数做修改,以使得程序较容易调试。

2.实验内容

(1)利用所提供的参考程序,了解交通灯控制器的设计思路与方法,在此基础上自己进行设计与改善。

(2)将所编程序进行编译并调试改错。

(3)思考如何能有效对复杂的时序逻辑电路进行仿真实现。

需要修改相应参数。

(4)将编译通过的程序进行仿真,观察仿真结果。

看是否与预期一致,并思考如何改善电路。

3.实验任务

在十字路口的两个方向上各设一组红绿黄灯,显示顺序为:

其中一个方向是绿灯、

黄灯、红灯,另一个方向是红灯、绿灯、黄灯。

其中绿灯、红灯、黄灯的持续显示时间分别是20s、5s、25s。

选做内容:

当各条路中任意一条上出现特殊情况,例如消防车。

救护车或其他需要优先放行的车辆时,各方向上均是红灯亮;增加数码显示功能,将每个路口交通灯点亮时间以倒计时的方式通过数码管显示出来。

4.实验设备

PC机一台,max-plus2软件。

5.实验步骤

a)参考所提供的源程序,在理解程序的前提下进行编译、仿真

b)按要求编写交通灯控制器的程序。

c)输入源程序,进行编译并调试。

d)编译通过对程序进行仿真并观察仿真结果,分析程序与仿真结果。

6.实验报告要求

(1)列出源程序,并具体介绍程序原理,设计思路。

(2)说明所用到的VHDL语言语句功能,并对构造体的描述方式进行简单分析。

(3)改变主要参数使得能够进行仿真调试,并解释修改参数的原因与理由。

(4)观察并记录仿真结果,并分析原因与联系。

7.参考程序:

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITYnclightIS

 Port(clk:

instd_logic;

 ra,rb,ya,yb,ga,gb:

outstd_logic);

 ENDnclight;

Architectureaofnclightis

 typestateis(S0,S1,S2,S3);

 signalpresentstate,nextstate:

state;

 signaltmp1,tmp2:

integerrange0to60;

 signaltimeout1,timeout2:

std_logic;

 signalq:

std_logic_vector(21downto0);

 signalsec:

std_logic;

Begin --get1hzclockpulse

process(clk)

begin

ifclk'eventandclk='1'thenq<=q+1;endif;

sec<=q(21);--get1hzclockpulse

endprocess;

timing:

process(sec)

begin

ifsec'eventandsec='1'then

iftmp1=9thentimeout1<='1';timeout2<='0';tmp1<=0;else

iftimeout1='1'theniftmp2=4thentimeout2<='1';timeout1<='0';tmp2<=0;

elsetmp2<=tmp2+1;endif;

elsetmp1<=tmp1+1;endif;

endif;endif;

endprocess;

ToNextstate:

process(sec)

begin

ifsec'eventandsec='1'thenpresentstate<=nextstate;endif;

endprocess;

changestate:

process(presentstate)

begin

casepresentstateis

whenS0=>iftimeout1='0'then

nextstate<=s0;ra<='0';rb<='1';ya<='0';yb<='0';ga<='1';gb<='0';

elsenextstate<=s1;endif;

whenS1=>iftimeout2='0'then

nextstate<=s1;ra<='0';rb<='1';ya<='1';yb<='0';ga<='0';gb<='0';

elsenextstate<=s2;endif;

whenS2=>iftimeout1='0'then

nextstate<=s2;ra<='1';rb<='0';ya<='0';yb<='0';ga<='0';gb<='1';

elsenextstate<=s3;endif;

whenS3=>iftimeout2='0'then

nextstate<=s3;ra<='1';rb<='0';ya<='0';yb<='1';ga<='0';gb<='0';

elsenextstate<=s0;endif;

whenothers=>nextstate<=s0;timeout1<='0';timeout2<='0';

endcase;

endprocess;

enda;

8.其他实验要求:

(1)通过行为描述方式,利用有限状态机自主进行一个交通灯控制器的设计。

(2)将参考程序的设计思想由行为描述方式描述的VHDL语言转变为由寄存器传输描述方式,并尽可能实现模块化。

 

实验三数字频率计的设计

1.实验目的

(1)初步开始掌握利用VHDL语言进行应用程序设计的方法,开始独立设计

VHDL语言程序。

(2)能对自己编写的程序进行进一步改进,根据要求,能增加或完善一些具体功

能。

(3)能够从实验过程中理解VHDL语言三种描述方式的不同,并能利用结构描述

方式构建一些程序模块。

2.实验内容

(1)通过分析所给出的具体设计框图,对每个模块进行编程,在此基础上自己进行设计与改善。

(2)将所编程序进行编译并调试改错,最终实现正确仿真。

(3)分析所编写的程序属于哪种描述方式,并尝试用其他描述方式进行编程,并

分析不同描述方式的差异。

3.实验任务

设计一个四位十进制数字显示的数字式频率计,其频率测量范围为10MHz。

满刻度量程分别为10KHz、100KHz、1MHz和10MHz四档,即最大读数分别为9.999KHz,99.99KHz,999.9KHz,9999KHz,要求量程能够自动转换。

选做改进方向:

增加显示位数,增大测频范围。

4.实验设备

PC机一台,max-plus2软件。

5.实验步骤

a)分析给出框图结构,并绘制程序流程。

b)按要求编写数字频率计程序。

c)输入源程序,进行编译并调试,完成调试,观察仿真结果。

d)对已通过程序进行改进,增加或完善程序功能。

6.实验报告要求

(1)列出源程序,并以此得出具体设计模块图,并具体介绍设计思路。

(2)对模块进行分析,得出设计优势,分析可能改进方向。

(3)分析仿真的结果,就仿真结果与具体程序进行对应说明。

7.系统结构框图及简单介绍

被测频率信号

时钟信号

系统结构框图如上。

图中,分配器用于对时钟信号进行分频得到0.5Hz的时钟,为计数器模块提供1s的闸门时间;计数器模块为核心模块,完成在1s的时间里对被测信号技术的功能,并通过选择输出数据实现换挡功能;锁存器模块实现锁存功能,在经过1s计数时间后将锁存器送来的计数值进行锁存并送数码管显示模块;数码管显示模块对应于数码管片选信号,将相应的数据送译码器译码;译码输出模块完成对接收信号的译码并送数码管显示。

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

当前位置:首页 > 小学教育 > 小升初

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

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