VHDL语言技术实验指导书.docx
- 文档编号:23672036
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:38
- 大小:655.28KB
VHDL语言技术实验指导书.docx
《VHDL语言技术实验指导书.docx》由会员分享,可在线阅读,更多相关《VHDL语言技术实验指导书.docx(38页珍藏版)》请在冰豆网上搜索。
VHDL语言技术实验指导书
序言
PLD(可编程逻辑器件)是与ISP(在系统可编程)技术和EDA(电子设计自动化)工具紧密结合、同时进行的。
它代表了数字系统设计领域的最高水平,给数字电路的设计带来了革命性的变化。
从70年代第一片可编程逻辑器件PROM的诞生到现在的CPLD/FPGA,数字系统的设计发生了本质的变化。
从传统的对电路板的设计到现在的基于芯片的设计,使得数字系统设计的效率大大提高,产品更新速度大大加快,设计周期大大变短。
所以,同学们学习本课程有着非常重要的意义。
本实验不同于其它实验,他的实验手段和实验方法都有了重大的变化,主要体现在以下几个方面:
首先:
实验方法不同
本实验是在PC平台上,用原理图或文本进行输入,然后进行编译,通过之后再进行波形仿真,如有缺陷,再回过头去对源文件进行修改。
其流程图如下:
其次:
实验手段不同
本实验是利用ISP技术、采用EDA工具、应用PLD器件,在PC平台上进行的。
第三:
本实验课的目的
学生学习完本实验课后,应达到如下的要求:
1、能熟练使用本实验的配套EDA软件ISE;
2、掌握PLD芯片的基本使用方法,能用现代数字系统的设计方法进行基本的数
字系统设计;
3、掌握图形编辑和VHDL文本编辑,重点是VHDL文本编辑;
4、具备基本的开发能力,为后续学习打下坚实的基础;
实验一数据选择器的设计
一、实试验目的
1、熟悉ISE软件的使用方法;
2、通过二选一数据选择器的设计了解PLD设计的全过程;
二、实验器材:
PC机一台,EDA教学实验系统一台,导线若干
三、实验原理
数字系统设计系列实验是建立在数字电路基础上的一个更高层次的设计性实验。
它是借助可编程逻辑器件(PLD),采用在系统可编程技术(ISP),利用电子设计自动化软件(EDA),在计算机(PC)平台上进行的。
因为本实验是在计算机平台上进行,因此实验方式,实验手段和实验仪器与传统的实验有很大的区别,主要体现在以下几个方面:
1、实验器材集中化,所有实验基本上在一套实验设备上进行。
传统的实验每作完一个实验,实验器材基本上都要变动(个别除外)。
而做本实验时,只要在计算机上把不同的程序输进去,其它步骤所有实验都一致;
2、实验耗材极小(基本上没有耗材);
3、在计算机上进行,自动化程度高,人机交互性好,修改、验证实验简单;
4、下载后,实验结果清晰;
5、实验仪器损耗少,维护简单;
四、实验内容
熟悉ISE软件的使用方法:
(一)新建工程
1.1点击File----〉NewProject,如图所示:
1.2在弹出的对话框ProjectName中输入工程名称,ProjectLocation为工程保存位置,可以默认位置或自行更改位置。
Top-levelsourcetype为顶层资源类型,默认为HDL,不必更改。
如图所示:
1.3点击Next按钮,进入工程的进一步设置,如图所示:
选择器件家族(Family)、具体器件名称(Device)、封装形式(Package)、速度(Speed)、综合工具(默认就行)、仿真工具(Simulator)(默认使用ISE自带的仿真工具、也可以选择使用Modesim)。
1.4设置完成点击Next,一路Next直到点击Finish。
(二)建立VHDL源程序
2.1新建工程后,在ISE软件左侧Source中的器件名上单击右键弹出对话框,如图所示:
选择NewSource。
2.2在弹出的对话框中选择VHDLModule,FileName中键入VHDL文件名称。
如图所示:
Location默认就行,一路点击Next完成新建VHDL模块。
2.3回到ISE环境,我们可以看到一个有待完成的VHDL程序,该程序已经包含了头文件,实体和结构体的定义,需要我们添加端口和结构体的具体实现。
也可以删除这些内容,拷贝已经写好的VHDL程序到其中,然后保存文件。
(二)VHDL程序的综合与仿真
3.1程序的综合
双击ISE环境左侧Processes下的Implementdesign中的Synthesize-XST,或右键点击再选择Run,如果程序没有错误则会综合通过,如果程序出错,可点击ISE环境左下的Errors进行查看。
如图所示:
3.2综合通过后,建立波形仿真文件进行观察,在ISE软件左侧Source下的VHDL程序名上右键单击,选择NewSource,在弹出的对话框中选择Testbenchwaveform,键入波形图文件名,点击Next进入下一步设置,如图:
一路Next直到弹出对话框,将Initiallengthoftestbench设为10000或更高以便于观察仿真结果,其他的可以用默认值。
点击Finish.
3.3在ISE环境下进行波形图的进一步设置,根据要求进行相应设置即可。
完成后保存文件。
如图:
3.4波形文件仿真
在ISE软件环境左侧Source中的Sourcefor的下拉菜单中选择Behavioralsimulation,点击需要仿真的波形文件名(点击波形文件名前面的+号可以看到目前这个波形文件对哪个VHDL程序进行仿真)如图所示:
在Process中点击左下的Processes,然后将XilinxISESimulator展开,双击SimulateBehavioralmodel或右键单击选择Run.如图所示:
仿真结果出来后,可点击ZoomIn进行放大或Zoomout缩小方便观察,如图:
(三)引脚锁定与下载
4.1在ISE环境下,在左侧Source下的Sourcefor中可以选择post-routsimulation进行时序仿真,具体过程参考功能仿真。
无误后进行引脚锁定。
4.2在sourcefor中选择synthesis/implementation,在Processes中展开UserConstraints,选择Assignpackagepins.如图:
4.3在弹出的引脚锁定框中将列出所要锁定的引脚名称,根据具体要求在左侧Designobjectlist----I/Opins中的LOC中直接输入引脚锁定位置。
如图:
完成后点击保存,然后关闭该窗口。
4.4回到ISE环境,在processes下展开Implementdesign-optionalimplementationtools-LOCKPINS进行引脚锁定。
4.5在processes下展开Implementdesign-generateprogrammingfile-ConfigureDevice(Impact),默认使用JTAG直接点击Finish即可。
五、实验步骤
自己按照实验过程总结实验步骤。
六、、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会—本次实验中你的感受;你从实验中获得了哪些收益;本次实验你的成功之处;本次实验有待改进的地方;下次实验应从哪些地方进行改进;怎样提高实验效率和实验水平等。
4、完成实验思考题。
七、问题与思考
与传统的数字电路设计相比,基于PLD的现代数字系统设计的优越性在哪些地方
实验二编、译码器设计
一、实验目的
1、掌握VHDL基本语法规则;
2、熟悉并学会使用并行语句和顺序语句;
3、进一步掌握ISE软件全过程;
二、实验器材:
PC机一台,EDA教学实验系统一台,导线若干
三、、实验内容
1、编写编码器的VHDL源程序
参考程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYpriorityencoderIS
PORT(input:
INSTD_LOGIC_VECTOR(7DOWNTO0);
y:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDpriorityencoder;
ARCHITECTURErtlOFpriorityencoderIS
BEGIN
PROCESS(input)
BEGIN
IF(input(0)='0')THEN
y<="111";
ELSIF(input
(1)='0')THEN
y<="110";
ELSIF(input
(2)='0')THEN
y<="101";
ELSIF(input(3)='0')THEN
y<="100";
ELSIF(input(4)='0')THEN
y<="011";
ELSIF(input(5)='0')THEN
y<="010";
ELSIF(input(6)='0')THEN
y<="001";
ELSE
y<="000";
ENDIF;
ENDPROCESS;
ENDrtl;
2、编写译码器的VHDL源程序
参考程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdecode_3to8IS
PORT(a,b,c,G1,G2A,G2B:
INSTD_LOGIC;
y:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdecode_3to8;
ARCHITECTURErtlOFdecode_3to8IS
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<="XXXXXXXX";
ENDCASE;
ELSE
y<="11111111";
ENDIF;
ENDPROCESS;
ENDrtl;
3、进行编译和功能仿真;
四、实验步骤
自己按照实验过程总结实验步骤。
五、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会—本次实验中你的感受;你从实验中获得了哪些收益;本次实验你的成功之处;本次实验有待改进的地方;下次实验应从哪些地方进行改进;怎样提高实验效率和实验水平等。
4、完成实验思考题。
七、问题与思考
试比较IF语句和CASE语句使用场合的差别。
实验三数码管显示电路
一、实验目的
1、掌握七段译码器的工作原理;
2、学会用VHDL硬件描述语言进行数字系统设计;
3、学习硬件扫描显示电路的设计;
二、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验要求
1、用VHDL语言进行描写;
2、进行波形仿真测试;
3、严格按照实验流程进行;
4、管脚映射按芯片要求进行,在数码管上显示译码后的数字;
5、查看资料,描述七段译码器的工作原理;
四、实验原理与内容
图所示的是8位数码扫描显示电路,其中每个数码管的8个段:
h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。
被选通的数码管显示数据,其余关闭。
如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。
根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
五、实验步骤
1、写出扫描显示的源程序,编译通过;
2、进行波形仿真;
3、选定器件、映射管脚、编译、下载;
六、参考程序:
(略)
七、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会;
4、完成实验思考题。
八、问题与思考
只要求译出数字0~9和“-”,怎样修改程序?
实验四八位加法器的设计
二、实验目的
1、掌握加法器的原理及设计方法;
2、设计一个八位二进制加法器;
3、利用实验三的数码扫描显示电路进行显示;
4、能进行多位加法器的设计。
二、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验原理与内容
1、原理:
加法器是数字系统中的基本逻辑器件。
例如:
为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
在此,我们从CPLD的特点出发,应用CPLD器件设计一个8位加法器。
2、可行性分析:
众所周知,CPLD的最高工作频率可达18MHz或更高,门与门之间的延时只有几个纳秒,可以满足速度的要求;多位加法器的构成有两种方式:
并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
实验表明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位数加法器由4位二进制并行加法器级联构成是较好的折中选择。
因此本实验中的8位加法器采用两个4位二进制并行加法器级联而成。
3、实验方框图
五、实验步骤
1、对每个元件进行设计;
2、进行元件例化(顶层文件);
3、编译、仿真、下载。
六、参考程序:
(略)
七、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会
4、实验思考题。
八、问题与思考
试设计一由8位二进制加法器为基本元件构成的8位减法器。
提示:
根据二进制数相减等于补码相加的原理,将减数的每一位取反,同时将加法器的借位输入置高电平(这种方法占用资源最少)。
注意:
这种结构的减法器,其溢出或借位的输出电平为0。
实验五、加法计数器的设计
一、实验目的
1、掌握计数器的设计与使用;
2、掌握时序电路的设计、仿真和硬件测试;
3、进一步熟悉VHDL设计技术;
二、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验要求
1、带有使能端,有异步清零,同步置数的模为10进制加法计数器
2、在功能允许的情况下,可自由发挥;
四、参考程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjishuqiIS
PORT(clr,clk,load,en:
INSTD_LOGIC;
data:
INSTD_LOGIC_VECTOR(3DOWNTO0);
cout:
OUTSTD_LOGIC;
qout:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjishuqi;
ARCHITECTURErtlOFjishuqiIS
BEGIN
PROCESS(clk,clr)
VARIABLEtemp:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFclr='1'THEN
temp:
=(OTHERS=>'0');
ELSIFclk'EVENTANDclk='1'THEN
IFload='1'THENtemp:
=data;
ELSIFen='1'THEN
IFtemp<9THEN
temp:
=temp+'1';
ELSEtemp:
=(OTHERS=>'0');
ENDIF;
ENDIF;
ENDIF;
IFtemp=9THENcout<='1';
ELSEcout<='0';
ENDIF;
qout<=temp;
ENDPROCESS;
ENDrtl;
五、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会;
4、完成实验思考题。
六、问题与思考
设计一个带有使能端,有异步清零,同步置数的模为6进制加法计数器。
实验六、秒表的设计
一、实验目的
1、熟练利用VHDL语言进行数字系统设计;
4、根据秒表的功能要求设计一个秒表;
二、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验要求
1、有秒、分计数,数码扫描显示输出;
2、有清零端和计数使能端;
3、在功能允许的情况下,可自由发挥;
四、实验原理
1、功能描述:
秒表是一种计时的工具,有着很广泛的用途。
本实验中的秒表要求有两个功能按钮:
一个是计数和停止计数按钮,当第一次按下此按钮时,秒表开始计数,再一次按下时,秒表停止计数,并显示所计的数字;另一个是清零按钮,当按下此按钮时,秒表清零。
在数码管上采用扫描显示输出。
2、基本原理:
本实验中用到的主要元件有计数器、控制逻辑、数据选择器和译码器等。
秒、分都是60进制计数,所以必须采用两个60进制的计数器(或6进制计数器与10进制计数器的组合);控制逻辑主要是用来实现计数和清零。
基本方框图
注意、计数器必须有进位输出、计数使能端和清零端。
五、参考程序
--控制逻辑电路
六、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会;
4、完成实验思考题。
八、问题与思考
设计一个60~0的递减计数器。
实验七IP核设计
一、实验目的
掌握IP核设计技术;
二、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验原理
IP(知识产权)核将一些在数字电路中常用,但比较复杂的功能块,如FIR滤波器、SDRAM控制器、PCI接口等设计做成一个“黑盒”或者是可修改参数的模块,供设计者使用。
IP核包括硬IP与软IP。
调用IP核能避免重复劳动,大大减轻设计人员的工作量。
XilinxCoreGenerator采用了SmartIP技术和友好的用户参数设置界面。
使IP从生成到使用的过程简单,灵活,易用,高效,而且可以对IP使用的资源做一定估计。
四、实验过程
以一个10进制计数器为例,讲解如何在ISE中生成IP和使用IP,实现设计。
1.设计要求
设计一个10进制计数器:
(1)计数频率为1Hz
(2)外部晶振为30MHz(3)使用7段LED显示计数器的值。
其原理框图如右所示。
2.新建工程
3.新建VHDL(分频器)文件
4.编写分频器的VHDL源程序
5.建立一个IP文件
6.IP参数设置
7.生成IP
8.译码器设计
9.顶层映射
到此已经使用IP完成了整个设计。
七、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会;
4、完成实验思考题。
八、问题与思考
IP核技术的好处。
实验八、A/D变换控制器的设计
一、实验目的
1、掌握A/D变换集成电路ADC0809的各引脚功能和A/D变换的原理;
2、设计一个控制器控制ADC0809,使其正常工作。
二、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干
三、实验原理与内容
1、ADC0809的内部结构及其工作原理:
a、ADC0809是逐次逼近型的数模转换集成电路,逐次逼近法的结构方框图:
当模拟量Vx送入比较器后,启动信号通过控制逻辑电路启动A/D开始转换。
首先置N位寄存器最高位(Dn-1)位‘1’,其余位清‘0’。
N位寄存器的内容经D/A转换后得到整个量程一半的模拟电压Vn与输入电压Vx比较,若Vx≥Vn,则保留Dn-1=1,若Vx<Vn,则Dn-1位清零,然后控制逻辑使下一位置‘1’,与上次的结果一起经D/A转换后与Vx比较,重复上述过程,直到判别出D0位是‘0’还是‘1’为止。
此时,控制逻辑电路发出转换结束信号,这样经过N次比较后,N位寄存器的内容就是转换后的数字量数据,经输出缓冲器读出。
b、ADC0809的内部逻辑方框图
2、ADC0809的引脚图及其功能
IN0~IN7:
8路模拟量输入端;A,B,C:
8路模拟通道选择地址;ALE:
地址锁存允许信号,在转换开始前将地址锁入锁存器中;D0~D7:
8位转换输出数据;
OE:
输出允许信号;EOC:
转换结束信号;START:
转换开始信号;REF+、REF-:
基准参考电压;CLOCK:
ADC转换时钟;
4、控制器的具体实现:
A/D转换控制器是根据ADC0809的工作原理来控制其正常工作。
由ADC0809的引脚功能和内部工作原理可知:
START,OE,ADDA…C及ALE为ADC0809的输入控制端,按照一定的时序控制ADC0809进行正常工作,也即我们设计的控制器的输出端,控制器输出这样一系列时序波形来进行控制。
EOC为ADC0809的输出,即我们设计的控制器的输入端,使控制器知道什么时候A/D转换完成,从而进行下一次的转换控制。
在控制器里面还可以设计一个8位寄存器,用来保存D0~D7的8个数字量输出。
当EOC为高电平(一次转换完毕)时,将其输出到总线或RAM存储器。
所以我们得出控制器的逻辑图:
(本实验中,只要求用第一路模拟信号输入端作为模拟信号输入)
EOC:
接ADC0809的EOC输出,EOC为高电平时,表示转换结束;ST:
控制器时钟;D7~D0:
接ADC0809的8个输出端;ADDA,OE,STA,ALE:
接ADC0809的相应端口;Q7~Q0:
寄存器输出。
四、实验步骤
1、充分了解ADC0809的工作原理,画出控制器的原理图;
2、写出控制器的VHDL源程序;
3、描述实验结果。
五、参考程序:
(略)
六、实验报告
1、写出实验源程序,画出仿真波形;
2、总结实验步骤和实验结果;
3、心得体会;
4、完成实验思考题。
七、问题与思考
如果不用有限状态机进行设计,考虑能否用其它的方法进行本实验的VHDL设计。
实验九、数字频率计的设计
一、实验目的
1、学会数字频率计的设计方法;
2、设计一个计数范围在0~1MHz的数字频率计;
3、进一步掌握自顶向下的数字系统设计方法,并体会其优越性;
二、实验器材
PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 语言 技术 实验 指导书