VHDL实验 课程设计未排版.docx
《VHDL实验 课程设计未排版.docx》由会员分享,可在线阅读,更多相关《VHDL实验 课程设计未排版.docx(13页珍藏版)》请在冰豆网上搜索。
VHDL实验课程设计未排版
VHDL实验报告
学院:
信息科学技术学院
专业:
电子信息工程
学号:
2010162067
姓名:
张忠
高文元2010162066
邱康2010162069
刘滨河2009152027
1、QuartusII软件介绍
QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
二、[VHDL]半加器和全加器
加器是能够计算低位进位的二进制加法电路
一位全加器由2个半加器组成,其电路原理如图4-2所示
一位全加器(FA)的逻辑表达式为:
S=A⊕B⊕Cin
Co=AB+BCin+ACin
其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;
如果要实现多位加法可以进行级联,就是串起来使用;比如32位+32位,就需要32个全加器;这种级联就是串行结构速度慢,如果要并行快速相加可以用超前进位加法,
超前进位加法前查阅相关资料;
如果将全加器的输入置换成A和B的组合函数Xi和Y(S0…S3控制),然后再将X,Y和进位数通过全加器进行全加,就是ALU的逻辑结构结构。
即X=f(A,B)
Y=f(A,B)
不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。
表2-1一位全加器的真值表
DD1
0
0
1
1
0
0
1
1
ADD2
0
1
0
1
0
1
0
1
CARRY_OUT
0
0
0
0
1
1
1
1
SUM<
0
1
1
0
1
0
0
1
一、实验目的
1.熟悉QUARTUSII软件的使用;
2.熟悉实验箱的使用;
3.掌握利用层次结构描述法设计电路。
二、实验原理及说明
由数字电路知识可知,一位全加器可由两个一位半加器与一个或门构成,其原理图如图1所示。
该设计利用层次结构描述法,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验箱,其中a,b,cin信号可采用实验箱上键1、键2和键3进行输入,s,co信号采用D1与D2发光二极管来显示。
三、实验步骤
1.建立full_adder的工程(project)
在QUARTUSII软件下创建一工程,工程名为full_adder,芯片名为EP1C3T144,选择FPGA目标器件,根据DE2的平台情况,选择cycloneII系列的EP2C35F672C6,注意工程路径不要放到安装路径;
2.设计half_adder的VHDL模块
新建VHDL语言文件,输入如下半加器VHDL语言源程序,并存盘为half_adder.vhd;
3.验证half_adder.vhd的正确与否,进行仿真
一般先进行功能仿真,再进行时序仿真。
为了仿真,首先编辑测试文件。
本次实验由于系统简单,采用对输入信号进行输入波形编辑的方法得到激励文件
4.进行功能仿真
(1)设置仿真器进行功能仿真:
•Assignments—>setting,选择simulationsetting,在simulationmode中选择functional
•在对话框中的simulationinput中选择half_adder.vwf,指定激励文件
•由Processing—>generatfunctionalsimulationnetlist得到功能仿真的网表文件
•由Processing—>startsimulation得到功能仿真波形
(2)设置仿真器进行时序仿真:
•改变仿真器的设置,Assignments—>setting
•选择仿真器设置,更改仿真模式,选择timing
•由Processing—>startCompilation对设计进行编译
•由Processing—>startsimulation得到时序仿真波形
5.封装
6.编辑全加器的原理图
由file->new,打开原理图文件,并存盘为full_adder.bdf
在原理图中调用半加器与或门模块,按照图1.1所示连接电路,完成后另保存full_adder。
7.对设计进行全编译,如出现错误请按照错误提示进行修改。
•由Processing->StartCompilation对设计进行全编译。
•编辑波形文件对全加器模块进行功能仿真和时序仿真。
8.锁定引脚,下载
实验采用模式5,锁定引脚对照表如下
信号引脚号
1键1
2键2
3键3
11D1
32D2
执行ASSIGNMENT-PINS,设置完成后,执行下载。
下载:
采用JATG方式进行下载,通过键1、键2与键3的输入,观察D1,D2的亮灭验证全加器的逻辑功能。
(此时,电脑与下载线都要连接到实验箱上,且每次连线都必须先关掉电源)
半加器
VHDL语言描述语句为:
so<=axorb;
co<=aandb
程序设计:
libraryieee;
useieee.std_logic_1164.all;
entityh_adderis
port(a,b:
instd_logic;
so,co:
outstd_logic);――定义输入、输出端口
endh_adder;
architecturebhofh_adderis
begin
so<=axorb;――“异或”运算
co<=aandb;――“与”运算
endbh;
全加器
1位全加器可由两个半加器组成
在半加器的基础上,采用元件调用和例化语句,将件连接起来,而实现全加器的VHDL编程和整体功能。
全加器包含了两个半加器和一个或门
程序设计:
libraryieee;
useieee.std_logic_1164.all;
entityh_adderis
port(a,b:
instd_logic;
so,co:
outstd_logic);――定义半加器实体的输入、输出端口
endh_adder;
architecturebhofh_adderis
begin
so<=axorb;――“异或”运算
co<=aandb;――“与”运算
endbh;
libraryieee;
useieee.std_logic_1164.all;
entityor1is
port(a,b:
instd_logic;
c:
outstd_logic);
――定义或门的输入、输出端口
endentityor1;
architectureoneofor1is
begin
c<=aorb;――“或”运算
endarchitectureone;
libraryieee;
useieee.std_logic_1164.all;
entityf_adderis
port(ain,bin,cin:
instd_logic;
cout,sum:
outstd_logic);
――定义全加器的输入输出端口
endentityf_adder;
architecturehhoff_adderis
componenth_adder――调用库元件“半加器”
port(a,b:
instd_logic;
so,co:
outstd_logic);
endcomponenth_adder;
componentor1――调用库元件“或门”
port(a,b:
instd_logic;c:
outstd_logic);
endcomponent;
signalx,y,z:
std_logic;――信号赋值语句
begin
w1:
h_adderportmap(a=>ain,b=>bin,co=>x,so=>y);
――元件例化
w2:
h_adderportmap(a=>cin,b=>y,co=>z,so=>sum);
――元件例化
w3:
or1portmap(a=>x,b=>z,c=>cout);
――元件例化
endarchitecturehh;
三、设计4位二进制同步加法计数器
一、实验目的
1、熟悉在EDA平台上进行数字电路集成设计的整个流程。
2、掌握Max+PlusⅡ软件环境下简单的图形、VHDL文本等输入设计方法。
3、熟悉VHDL设计实体的基本结构、语言要素、设计流程等。
4、掌握利用Max+PlusⅡ的波形仿真工具验证设计的过程。
5、学习使用JTAG接口下载逻辑电路到可编程芯片,并能调试到芯片正常工作为止。
二、实验设备
1.软件
操作系统:
Windows2000
EDA软件:
MAX+plusII10.2
2.硬件
EDA实验箱:
革新EDAPRO/240H
三、实验原理
1.设计分析
4位同步二进制加法计数器的工作原理是指当时钟信号clk的上升沿到来时,且复位信号clr低电平有效时,就把计数器的状态清0。
在clr复位信号无效(即此时高电平有效)的前提下,当clk的上升沿到来时,如果计数器原态是15,计数器回到0态,否则计数器的状态将加1.
2.VHDL源程序
libraryieee;
useieee.std_logic_1164.all;
entitycnt4eis
port(clk,clr:
instd_logic;
cout:
outstd_logic;
q:
bufferintegerrange0to15);
endcnt4e;
architectureoneofcnt4eis
begin
process(clk,clr)
begin
ifclk'eventandclk='1'then
ifclr='1'then
ifq=15thenq<=0;
cout<='0';
elsifq=14thenq<=q+1;
cout<='1';
elseq<=q+1;
endif;
elseq<=0;
cout<='0';
endif;
endif;
endprocess;
endone;
四、实验步骤
1:
VHDL文本编辑
在MAX+PLUS集成环境下,执行“file”->“new”命令,弹出编辑文件类型的对话框,选择”texteditorfile”后单击“ok”按钮。
先采用VHDL文本输入设计法实现4位同步二进制加法计数器的数字逻辑电路,并将文件cnt4e.vhd保存在创建的目录下。
再生成工程。
2.编译设计图形文件
执行“MAX+plus”->“Compiler”命令,对“cnt4e.vhd”设计文件进行编译,进而实现译4位同步二进制加法计数器的数字逻辑电路,
生成元件符号,再在顶层原理图文件中调用该元件符号。
如下图所示:
说明:
其中clr是复位信号,clk是时钟信号,上升沿是有效边沿。
co是进位输出信号,cnt[3..0]是4位二进制输出信号
3.功能仿真
(1)建立波形
执行“File”“New”命令,弹出编辑文件类型对话框,选择“wavefromeditorfile”后按“OK”。
(2)导入输入输出端
执行”node”->”nodesfromsnf“弹出”enternodesfromsnf“对话框,选择“list->”=>”后按“OK”。
(3)设置波形参数
(4)设定仿真时间宽度
(5)运行仿真器
先进行保存,执行MAX+plusII选项中的仿真器”Simulator”命令,仿真波形如图
4.引脚锁定
(1)执行“Assign”-->“Device…”命令,选择下载芯片型号。
在“DeviceFamily”中选择“ACEX1K”,在Device列表中选择“EP1K30QC208-3”芯片型号。
(2)执行“assign”->“pin\location\chip”命令,在对话框中的“nodename”栏中输入各个端口名;在“pin”栏中,输入相应的引脚编号。
根据功能模块结构及引脚定义对照表,对输入输出端口进行引脚锁定:
用空的IO口(MBIO_XXX)来锁定时钟信号clk,并用导线连接到实验箱上的频率组模块上的21脚
(具体频率选择可以参考本手册第3页频率组及对应频率表);
8位数字开关组(A)的SW1接复位信号clr;
红色信号指示灯L5接进位输出信号co;
红色信号指示灯L4-L1分别接cnt3、cnt2、cnt1、cnt0。
(3)在引脚锁定后,再对文件编译一次,并将引脚信息编入编程下载文件中。
5.时序仿真
执行MAX+plusII–>”Simulator”命令。
6.编程下载、硬件调试
(1)编程下载
AlteraByteBlaster下载电览一头接至计算机并行口(打印口)上,另一端接至实验箱JTAG接口。
打开实验箱电源。
在MAX+plusII软件上,执行“MAX+plussII”->“Programmer”->“Configure”按钮。
当提示“Configurationcomplete”表示下载完成。
(2)硬件调试
拨动实验板上的高低电平输入开关“SW1”,4位同步二进制加法计数器的工作原理,观察L1-L5发光二极管显示的结果是否符合4位同步二进制加法计数器的工作原理。