专用集成电路Word文档下载推荐.docx
《专用集成电路Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《专用集成电路Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
![专用集成电路Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/28/5dcce35a-b905-45b5-a1a7-57d65805006e/5dcce35a-b905-45b5-a1a7-57d65805006e1.gif)
件的属性及信息,如图6所示。
图6
点击【完成】标签结束新建工程过程。
进入XilinxISE文本编写方式,在文本框中编
辑输入3线8线译码器的VHDL源程序。
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:
INP:
instd_logic_vector(2downto0);
Y:
outstd_logic_vector(7downto0));
endls74138;
architectureBehavioralofls74138is
begin
process(G1,G2,INP)
if((G1andG2)='
1'
)then
caseINPis
when"
000"
=>
Y<
="
00000001"
;
when"
001"
00000010"
010"
00000100"
011"
00001000"
100"
00010000"
101"
00100000"
110"
01000000"
111"
10000000"
whenothers=>
00000000"
endcase;
elseY<
endif;
endprocess;
endBehavioral;
在VHDL源程序中,G1和G2为两个使能控制信号,INP为命令码输入信号,Y为8
位译码输出信号。
〔2〕、设计文件存盘与语法检查
完成程序代码输入后单击高亮“ls74138-behavioral〞标签,此时工具窗口将显示“Process
forSource(ls74138-behavioral)〞。
用鼠标右键点击Process窗口中【CheckSyntax】标签,点
击运行选项,进行程序语法检查,当显示一绿色对号标志时即表示程序中不存在语法问题。
或双击【Synthesize-XST】当显示一绿色对号标志时即表示程序综合成功。
〔3〕、仿真文件设计
为了考据所设计电路功能,需要输入测试文件对电行程序功能进行测试。
在【Process】
菜单中选择【NewSource】选项,即可弹出对话框,选择【VHDLTestBench】增加测试向
量文件,并将文件增加到LS74138模块中
运行行为仿真选项卡【BehavioralSimulation】,在测试向量文件中填写代码,完成后
保存,XilinxISE自动调用仿真平台作为仿真工具。
运行ModelSimSE
6.1c,。
在【transcript】窗口中输入仿真时间。
在波形【Wave】窗口内使
用按钮实现仿真图的“放大〞“减小〞“全局〞功能,由图中时序及逻辑关系可知
该三线八线译码器行为仿真切常。
图11
测试向量参照程序以下:
--VHDLTestBenchCreatedfromsourcefilels74138.vhd--
--Notes:
--Thistestbenchhasbeenautomaticallygeneratedusingtypesstd_logicand
--std_logic_vectorfortheportsoftheunitundertest.Xilinxrecommends
--thatthesetypesalwaysbeusedforthetop-levelI/Oofadesigninorder
--toguaranteethatthetestbenchwillbindcorrectlytothe
post-implementation
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.numeric_std.ALL;
ENTITYls74138_ls74138_vhd_tbIS
ENDls74138_ls74138_vhd_tb;
ARCHITECTUREbehaviorOFls74138_ls74138_vhd_tbIS
COMPONENTls74138
PORT(G1:
INstd_logic;
INstd_logic_vector(2downto0);
OUTstd_logic_vector(7downto0));
ENDCOMPONENT;
SIGNALG1:
std_logic;
SIGNALG2:
SIGNALINP:
std_logic_vector(2downto0);
SIGNALY:
std_logic_vector(7downto0);
BEGIN
uut:
ls74138PORTMAP(
G1=>
G1,
G2=>
G2,
INP=>
INP,
Y=>
Y
);
--***TestBench-UserDefinedSection***
u1:
PROCESSwaitfor15us;
BEGININP<
G1<
='
0'
waitfor15us;
waitfor15us;
INP<
waitfor100us;
wait;
ENDPROCESSu1;
u2:
PROCESSINP<
BEGINwaitfor30us;
G2<
wait;
endPROCESSu3;
--***EndTestBench-UserDefinedSection***
ENDbehavior;
ENDPROCESSu2;
u3:
PROCESS
INP<
waitfor30us;
〔4〕芯片管脚定义
如前所述增加用户定义限制文件,运行【AssignPackagePins】选项卡,XilinxISE
将弹出管脚分配窗口,输入各个端口管脚地址并保存,完成芯片管脚定义。
〔5〕编译与综合
图16图17
运行【ProcessforSource】中的【ImplementDesign】〔图16〕,ISE将自动完成编译
并调用内嵌的综合工具XST完成综合过程,运行结果如图17所示。
编译通过后即自动生成了电路烧录下载文件〔*.jed〕以及资源耗资报告,经过该报告
即可认识所设计电路的资源耗资情况。
由图可知,在三线八线译码器〔74LS138〕的设计中使用了8个宏单元,9个乘积项,8
个存放器单元,13个用户引脚及5个功能输入块。
2、元件的生成、调用和仿真
新建原理图文件,命名为“Sch_LS74138〞并增加到工程“Shiyan〞中。
点击【下一步】完
成原理图文件的创立。
在弹出的原理图编写框内选择【Symbols】标签,在其目录列表内显
示了所有可用电路器件,其中包括了我们所设计的LS74138。
双击“ls74138〞将其放置到原理图编写区内。
点击为器件增加外面端口。
将原理图文件保存后返回【XilinxProjectNavigator】平台,此时已经将程序所设计的器
件“LS74138〞配置给了原理图文件“sch_ls74138〞。
实验二组合逻辑电路的VHDL语言实现
1、掌握VHDL语言设计根本单元及其构成
2、掌握用VHDL语言设计根本的组合逻辑电路的方法。
计算机、QuartusII软件或XilinxISE
1、以四选一选择器为例,在XilinxISE软件平台上完成设计电路的VHDL文本输入,编写,
编译,仿真,管脚分配和编程下载等操作。
〔一〕、用VHDL语言实现四选一选择器的设计并实现功
能仿真。
选择器常用于信号的切换,四选一选择器可以用于
4路
信号的切换。
其真值表以下所示:
表3
四选一真值表
选择输入
数据输入
数据输出
b
a
Input0
Input1
Input2
Input3
y
x
1
用VHDL语言实现四选一选择器的设计并实现功能仿真。
参照程序以下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux4IS
PORT(INPUT:
INSTD_LOGIC_VECTOR(3DOWNTO0);
A,B:
INSTD_LOGIC;
Y:
OUTSTD_LOGIC);
ENDmux4;
ARCHITECTURErt1OFmux4IS
SIGNALse1:
STD_LOGIC_VECTOR(1DOWNTO0);
se1<
=B&
A;
PROCESS(INPUT,se1)
IF(se1="
00"
)THEN
y<
=INPUT(0);
ELSIF(se1="
01"
=INPUT
(1);
10"
=INPUT
(2);
ELSE
=INPUT(3);
ENDIF;
ENDPROCESS;
ENDrt1;
测试向量程序以下:
––
--toguaranteethatthetestbenchwillbindcorrectlytothepost-implementation
--simulationmodel.
ENTITYmux4_mux4_vhd_tbIS
ENDmux4_mux4_vhd_tb;
ARCHITECTUREbehaviorOFmux4_mux4_vhd_tbIS
COMPONENTmux4
PORT(
INPUT:
INstd_logic_vector(3downto0);
A:
B:
OUTstd_logic
SIGNALINPUT:
std_logic_vector(3downto0);
SIGNALA:
SIGNALB:
mux4PORTMAP(
INPUT=>
INPUT,
A=>
A,
B=>
B,
--***TestBench-UserDefinedSection***
PROCESSBEGIN
A<
B<
waitfor5us;
waitfor5us;
endprocessu2;
u3:
process
begin
INPUT<
1101"
waitfor10us;
processINPUT<
1010"
beginwaitfor10us;
B<
INPUT<
0111"
waitfor10us;
waitfor20us;
0001"
waitfor20us;
0010"
wait;
endprocessu3;
--***EndTestBench-UserDefinedSection***
ENDbehavior;
仿真结果以以下列图:
实验三时序逻辑电路的VHDL语言实验
1、掌握用VHDL语言设计根本的时序逻辑电路及仿真。
2、掌握VHDL序次语句和并行语句的异同
3、掌握触发器同步复位和异步复位的实现方式。
4、掌握软件时钟的参加方法。
1、设计带使能的递加计数器
2、在步骤1的基础上设计一带使能的同步〔异步〕复位的递加〔递减〕计数器
参照程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityycounteris
port(clk,clear,ld,enable:
instd_logic;
d:
instd_logic_vector(7downto0);
qk:
outstd_logic_vector(7downto0));
endycounter;
architecturea_ycounterofycounteris
PROCESS(clk)
VARIABLEcnt:
std_logic_vector(7downto0);
IF(clk'
EVENTANDclk='
)THEN
IF(clear='
cnt:
="
ELSE
IF(ld='
)THENcnt:
=d;
ELSEIF(enable='
=cnt+"
ENDIF;
qk<
=cnt;
enda_ycounter;
测试向量以下:
--VHDLTestBenchCreatedfromsourcefileycounter.vhd--16:
50:
5503/24/2021
ENTITYycounter_a_ycounter_vhd_tbIS
ENDycounter_a_ycounter_vhd_tb;
ARCHITECTUREbehaviorOFycounter_a_ycounter_vhd_tbISCOMPONENTycounter
clk:
clear:
ld:
enable:
d:
INstd_logic_vector(7downto0);
qk:
OUTstd_logic_vector(7downto0)
constantclk_cycle:
time:
=20us;
SIGNALclk:
SIGNALclear:
SIGNALld:
SIGNALenable:
SIGNALd:
SIGNALqk:
ycounterPORTMAP(
clk=>
clk,
clear=>
clear,
ld=>
ld,
enable=>
enable,
d=>
d,
qk=>
qk
--***TestBench-UserDefi