专用集成电路试验指导书gai1.docx
- 文档编号:25872213
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:55
- 大小:449.23KB
专用集成电路试验指导书gai1.docx
《专用集成电路试验指导书gai1.docx》由会员分享,可在线阅读,更多相关《专用集成电路试验指导书gai1.docx(55页珍藏版)》请在冰豆网上搜索。
专用集成电路试验指导书gai1
实验一 EDA软件实验
实验性质:
验证性实验级别:
必做
开课单位:
信息与通信工程学院通信工程系学时:
4学时
一、实验目的:
1、了解XilinxISE9.2软件的功能。
2、掌握XilinxISE9.2的VHDL输入方法。
3、掌握XilinxISE9.2的原理图文件输入和元件库的调用方法。
4、掌握XilinxISE9.2软件元件的生成方法和调用方法。
5、掌握XilinxISE9.2编译、功能仿真和时序仿真。
6、掌握XilinxISE9.2原理图设计、管脚分配、综合与实现、数据流下载方法。
7、了解所编电路器件资源的消耗情况。
二、实验器材:
计算机、QuartusII软件或xilinxISE
三、实验内容:
1、本实验以三线八线译码器(LS74138)为例,在XilinxISE9.2软件平台上完成设计电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。
下载芯片选择Xilinx公司的CoolRunnerII系列XC2C256-7PQ208作为目标仿真芯片。
2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在XilinxISE9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。
四、实验步骤:
1、三线八线译码器(LS74138)VHDL电路设计
(1)、三线八线译码器(LS74138)的VHDL源程序的输入
打开XilinxISE6.2编程环境软件ProjectNavigator,执行“file”菜单中的【NewProject】命令,为三线八线译码器(LS74138)建立设计项目。
项目名称【ProjectName】为“Shiyan”,工程建立路径为“C:
\Xilinx\bin\Shiyan”,其中“顶层模块类型(Top-LevelModuleType)”为硬件描述语言(HDL),如图1所示。
图1
点击【下一步】,弹出【SelecttheDeviceandDesignFlowfortheProject】对话框,在该对话框内进行硬件芯片选择与工程设计工具配置过程。
各标签具体含义如下:
●【DeviceFamily】:
定义所选芯片器件族
●【Device】:
定义器件名
●【Package】:
定义器件封装形式
●【SpeedGrade】:
定义芯片工作速度等级
●【Top-LevelModuleType】:
定义顶层模块类型
●【SynthesisTool】:
定义综合工具
●【Simulator】:
定义仿真测试工具
●【GeneratedSimulationLanguage】:
定义硬件描述语言
针对本试验所用开发板我们选择“CoolRunner2CPLDs”系列的“XC2C256-7PQ208”器件作为目标芯片进行仿真,如图2所示。
图2
完成具体选择后点击【下一步】弹出如图3所示对话框,在该对话框内创建文件资源。
图3
打开【NewSource】标签,弹出如图4所示对话框,在左侧方框中包含了用户可以创建的文件类型,包括以下内容:
●【Schematic】:
原理图类型文件
●【StateDiagram】:
状态图类型文件
●【TestBenchWaveform】:
波形类型测试文件
●【UserDocument】:
用户类型文件
●【VerilogModule】:
Verilog类型文件
●【VerilogTestFixture】:
Verilog语言描述类型测试文件
●【VHDLLibrary】:
VHDL库文件
●【VHDLModule】:
VHDL类型模块文件
●【VHDLPackage】:
VHDL类型文件封装库
●【VHDLTestBench】:
VHDL语言描述类型测试文件
图4
在【File】 标签下对话框内写入用户自定义的文件名称,标签【Locatior】下显示了新定义文件的创建路径,选中标签【Addtoproje】前的对号标记,将新创建的文件74ls138添加到工程“Shiyan”中。
点击【下一步】,弹出如图5所示对话框,在此对话框中输入三线八线译码器(LS74138)的的端口信息。
图5
点击【下一步】弹出【NewSourceInformation】对话框,在该对话框内显示了新建文件的属性及信息,如图6所示。
图6
点击【完成】返回资源创建对话框,
图7
点击【完成】标签结束新建工程过程。
进入XilinxISE文本编辑方式,在文本框中编辑输入3线8线译码器的VHDL源程序,如图7所示:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
--Uncommentthefollowinglinestousethedeclarationsthatare
--providedforinstantiatingXilinxprimitivecomponents.
--libraryUNISIM;
--useUNISIM.VComponents.all;
entityls74138is
Port(g1:
instd_logic;
g2:
instd_logic;
inp:
instd_logic_vector(2downto0);
y:
outstd_logic_vector(7downto0));
endls74138;
architectureBehavioralofls74138is
begin
process(g1,g2,inp)
begin
if((g1andg2)='1')then
caseinpis
when"000"=>y<="00000001";
when"001"=>y<="00000010";
when"010"=>y<="00000100";
when"011"=>y<="00001000";
when"100"=>y<="00010000";
when"101"=>y<="00100000";
when"110"=>y<="01000000";
when"111"=>y<="10000000";
whenothers=>y<="00000000";
endcase;
else
y<="00000000";
endif;
endprocess;
endBehavioral;
在VHDL源程序中,G1和G2为两个使能控制信号,INP为命令码输入信号,Y为8位译码输出信号。
(2)、设计文件存盘与语法检查
图8图9
完成程序代码输入后单击高亮“ls74138-behavioral(LS74138.vhdl)”标签(图8),此时工具窗口将显示“ProcessforSource(ls74138-behavioral)”。
用鼠标右键点击Process窗口中【CheckSyntax】标签,点击运行选项,进行程序语法检查,当显示一绿色对号标志时即表示程序中不存在语法问题,如图9所示。
或双击【Synthesize-XST】,当显示一绿色对号标志时即表示程序综合成功。
如图10所示
图10
(3)、仿真文件设计
为了验证所设计电路功能,需要输入测试文件对电路程序功能进行测试。
在【Process】菜单中选择【NewSource】选项,即可弹出如图5所示对话框,选择【VHDLTestBench】添加测试向量文件,并将文件添加到LS74138模块中,如图11所示
图11
运行行为仿真选项卡【BehavioralSimulation】,如图12所示,在测试向量文件中填写代码,完成后保存,XilinxISE自动调用ModelSimSE6.1c仿真平台作为仿真工具。
运行ModelSimSE6.1c,。
在【transcript】窗口中输入仿真时间
。
在波形【Wave】窗口内使用
按钮实现仿真图的“放大”“缩小”“全局”功能。
图13即为电路仿真结果,由图中时序及逻辑关系可知该三线八线译码器行为仿真正常。
图12
图13
测试向量参考程序如下:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.numeric_std.ALL;
ENTITYls74138_tb_74138_vhd_tbIS
ENDls74138_tb_74138_vhd_tb;
ARCHITECTUREbehaviorOFls74138_tb_74138_vhd_tbIS
COMPONENTls74138
PORT(
G1:
INstd_logic;
G2:
INstd_logic;
INP:
INstd_logic_vector(2downto0);
Y:
OUTstd_logic_vector(7downto0)
);
ENDCOMPONENT;
SIGNALG1:
std_logic;
SIGNALG2:
std_logic;
SIGNALINP:
std_logic_vector(2downto0);
SIGNALY:
std_logic_vector(7downto0);
BEGIN
uut:
ls74138PORTMAP(
G1=>G1,
G2=>G2,
INP=>INP,
Y=>Y
);
--***TestBench-UserDefinedSection***
u1:
PROCESS
BEGIN
G1<='0';
waitfor10us;
G1<='1';
waitfor90us;
G1<='0';
wait;
ENDPROCESSu1;
u2:
PROCESS
BEGIN
G2<='0';
waitfor10us;
G2<='1';
waitfor90us;
G2<='0';
wait;
ENDPROCESSu2;
u3:
PROCESS
BEGIN
INP<="000";
waitfor20us;
INP<="001";
waitfor10us;
INP<="010";
waitfor10us;
INP<="011";
waitfor10us;
INP<="100";
waitfor10us;
INP<="101";
waitfor10us;
INP<="110";
waitfor10us;
INP<="111";
wait;
endPROCESSu3;
--***EndTestBench-UserDefinedSection***
ENDbehavior;
(4)芯片管脚定义
如前所述添加用户定义限制文件,如图14所示,运行【AssignPackagePins】选项卡,XilinxISE将弹出管脚分配窗口,在如图15,输入各个端口管脚位置并保存,完成芯片管脚定义。
图14
图15
(5)编译与综合
图16图17
运行【ProcessforSource】中的【ImplementDesign】(图16),ISE将自动完成编译并调用内嵌的综合工具XST完成综合过程,运行结果如图17所示。
编译通过后即自动生成了电路烧录下载文件(*.jed)以及资源消耗报告,通过该报告即可了解所设计电路的资源消耗情况。
即设计中使用了几个宏单元(Macrocells),几个乘积项(Pterms),几个寄存器单元(Registers),几个用户引脚(Pins)及几个功能输入块(FunctionBlock)。
(5)、编程下载
本试验用并行电缆将开发实验平台与计算机接在一起。
确认下载电缆连接无误后执行XilinxISE的【iMPACT】命令,将三线八线译码器(LS74138)设计文件下载到目标芯片XC2C256-7PQ208中,硬件验证所设计电路功能。
2、元件的生成、调用和仿真
1、新建原理图文件,命名为“Sch_LS74138”并添加到工程“Shiyan”中,如图19。
点击【下一步】完成原理图文件的创建。
在弹出的原理图编辑框内选择【Symbols】标签,在其目录列表内显示了所有可用电路器件,其中包括了我们所设计的LS74138(图20)。
图19
图20
双击“ls74138”将其放置到原理图编辑区内。
点击
为器件添加外围端口,如图21所示。
图21
将原理图文件保存后返回【XilinxProjectNavigator】平台,此时已经将程序所设计的器件“LS74138”配置给了原理图文件“sch_ls74138”,其余电路仿真、管脚配置、编译、综合以及电路下载等过程与文本设计方式一致,在此不在重复说明。
五、预习与思考:
思考:
比较VHDL语言和原理图的设计方法,这两种设计各有哪些优缺点。
实验二组合逻辑电路的VHDL语言实现
实验性质:
验证性实验级别:
必做
开课单位:
信息与通信工程学院通信工程系学时:
2学时
一、实验目的:
1、掌握VHDL语言设计基本单元及其构成
2、掌握用VHDL语言设计基本的组合逻辑电路的方法。
3、掌握VHDL语言的主要描述语句。
二、实验器材:
计算机、QuartusII软件或XilinxISE
三、实验内容:
以下三个内容选择一个完成
(一)、用VHDL语言实现八位加法器的设计并实现功能仿真。
(二)、用VHDL语言实现优先编码器的设计并实现功能仿真
(三)、用VHDL语言实现四选一选择器的设计并实现功能仿真。
四、实验步骤:
(一)、用VHDL语言实现八位加法器的设计并实现功能仿真。
1、完成1位全加器设计,在XilinxISE软件平台上完成设计电路的VHDL文本输入,编辑,编译,仿真,管脚分配和编程下载等操作。
下载芯片选择Xilinx公司的CoolRunnerII系列XC2C256-7PQ208作为目标仿真芯片。
2、用实验内容1所设计的全加器的VHDL文件生成一个adder的元件,在XilinxISE软件原理图设计平台上完成adder元件的调用,用原理图的方法设计一个8位二进制加法器,实现编译,仿真,管脚分配和编程下载等操作。
原理:
全加器是带进位信号的加法器,其逻辑表达式为:
。
它的真值表如表1所示,其中
和
为加数与被加数,
是输入的进位位信号,而
是和数,
是输出进位位信号。
参考真值表,实现八位全加器的功能。
表1
输入
输出
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
一)1位加法器的VHDL源程序参考如下:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
--Uncommentthefollowinglinestousethedeclarationsthatare
--providedforinstantiatingXilinxprimitivecomponents.
--libraryUNISIM;
--useUNISIM.VComponents.all;
entityadderis
Port(a:
instd_logic;
b:
instd_logic;
cin:
instd_logic;
sum:
outstd_logic;
cout:
outstd_logic);
endadder;
architectureBehavioralofadderis
begin
sum<=(axorb)xorcin;
cout<=(aandb)or(cinanda)or(cinandb);
endBehavioral;
测试向量参考程序如下:
--VHDLTestBenchCreatedfromsourcefileadder.vhd--21:
00:
5003/18/2008
--Notes:
--Thistestbenchhasbeenautomaticallygeneratedusingtypesstd_logicand
--std_logic_vectorfortheportsoftheunitundertest.Xilinxrecommends
--thatthesetypesalwaysbeusedforthetop-levelI/Oofadesigninorder
--toguaranteethatthetestbenchwillbindcorrectlytothepost-implementation
--simulationmodel.
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.numeric_std.ALL;
ENTITYadder_adder_vhd_tbIS
ENDadder_adder_vhd_tb;
ARCHITECTUREbehaviorOFadder_adder_vhd_tbIS
COMPONENTadder
PORT(
a:
INstd_logic;
b:
INstd_logic;
cin:
INstd_logic;
sum:
OUTstd_logic;
cout:
OUTstd_logic
);
ENDCOMPONENT;
SIGNALa:
std_logic;
SIGNALb:
std_logic;
SIGNALcin:
std_logic;
SIGNALsum:
std_logic;
SIGNALcout:
std_logic;
BEGIN
uut:
adderPORTMAP(
a=>a,
b=>b,
cin=>cin,
sum=>sum,
cout=>cout
);
u1:
PROCESS
BEGIN
a<='0';
waitfor10us;
a<='1';
waitfor20us;
a<='0';
waitfor10us;
a<='1';
waitfor10us;
a<='0';
waitfor20us;
a<='1';
waitfor10us;
a<='0';
waitfor10us;
a<='1';
wait;
ENDPROCESSu1;
u2:
process
begin
b<='1';
waitfor10us;
b<='0';
waitfor10us;
b<='1';
waitfor10us;
b<='0';
waitfor10us;
b<='1';
waitfor20us;
b<='0';
waitfor10us;
b<='1';
waitfor10us;
b<='0';
waitfor20us;
b<='1';
wait;
ENDPROCESSu2;
u3:
process
begin
cin<='0';
waitfor40us;
cin<='1';
waitfor20us;
cin<='0';
wait;
endprocessu3;
ENDbehavior;
仿真图如下图1所示:
图1
管脚分配和编程下载如实验一,这里不再累述。
二)用实验内容1所设计的全加器的VHDL文件生成一个adder的元件,在XilinxISE软件原理图设计平台上完成adder元件的调用,用原理图的方法设计一个8位二进制加法器:
步骤一)在processerforSource:
”adder”窗口点击CreateSchematicSymbol如下图2所示,生成adder的元件,在SourcesinProject窗口新建Schematic文件命名adder8,如下图3所示,在XilinxECS平台上点Symbols如图4所示,添加8个adder到原理图编辑区域,连接各元件并添加引脚,如图5
图2图3
图4
图5
仿真结果如下图:
(二)、用VHDL语言实现优先编码器的设计并实现功能仿真
优先计编码器常用于中断的优先级控制,以8位输入,3位二进制输出的优先级编码器为例,当其中一个输入有效时,就可以输出一个对应得3位二进制编码。
另外,当同时有几个输入有效时,将输出优先级最高的那个输入所对应得二进制编码。
其真值表如下所示:
表2优先编码器真值表
输入
二进制编码输出
Input7
Input6
Input5
Input4
Input3
Input2
Input1
Input0
Y2
Y1
Y0
x
x
x
x
x
x
x
0
1
1
1
x
x
x
x
x
x
0
1
1
1
0
x
x
x
x
x
0
1
1
1
0
1
x
x
x
x
0
1
1
1
1
0
0
x
x
x
0
1
1
1
1
0
1
1
x
x
0
1
1
1
1
1
0
1
0
x
0
1
1
1
1
1
1
0
0
1
x
1
1
1
1
1
1
1
0
0
0
用VHDL语言实现优先编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专用 集成电路 试验 指导书 gai1
![提示](https://static.bdocx.com/images/bang_tan.gif)