专用集成电路.docx

上传人:b****6 文档编号:8469936 上传时间:2023-01-31 格式:DOCX 页数:25 大小:22.92KB
下载 相关 举报
专用集成电路.docx_第1页
第1页 / 共25页
专用集成电路.docx_第2页
第2页 / 共25页
专用集成电路.docx_第3页
第3页 / 共25页
专用集成电路.docx_第4页
第4页 / 共25页
专用集成电路.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

专用集成电路.docx

《专用集成电路.docx》由会员分享,可在线阅读,更多相关《专用集成电路.docx(25页珍藏版)》请在冰豆网上搜索。

专用集成电路.docx

专用集成电路

优选文档

 

实验一EDA软件实验

 

一、实验目的:

1、掌握的VHDL输入方法、原理图文件输入和元件库的调用方法。

2、掌握软件元件的生成方法和调用方法、编译、功能仿真和时序仿真。

3、掌握原理图设计、管脚分配、综合与实现、数据流下载方法。

二、实验器材:

计算机、QuartusII软件或xilinxISE

 

三、实验内容:

1、本实验以三线八线译码器〔LS74138〕为例,在XilinxISE9.2软件平台上完成设计电

路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。

下载芯片

选择Xilinx公司的CoolRunnerII系列XC2C256-7PQ208作为目标仿真芯片。

2、用1中所设计的的三线八线译码器〔LS74138〕生成一个LS74138元件,在XilinxISE

9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器〔LS74138〕,实现编译,仿真,管脚分配和编程下载等操作。

四、实验步骤:

 

1、三线八线译码器〔LS74138〕VHDL电路设计

(1)三线八线译码器〔LS74138〕的VHDL源程序的输入

翻开编程环境软件ProjectNavigator,执行“file〞菜单中的【New

Project】命令,为三线八线译码器〔LS74138〕建立设计工程。

工程名称【ProjectName】

为“Shiyan〞,工程建立路径为“C:

\Xilinx\bin\Shiyan1〞,其中“顶层模块种类〔Top-Level

ModuleType〕〞为硬件描述语言〔HDL〕,如图1所示。

 

图1

 

点击【下一步】,弹出【SelecttheDeviceandDesignFlowfortheProject】对话框,在该

 

对话框内进行硬件芯片选择与工程设计工具配置过程。

 

优选文档

优选文档

 

图2

 

完成详尽选择后点击【下一步】弹出如图3所示对话框,在该对话框内创立文件资源。

 

图3图4

 

翻开【NewSource】标签,弹出如图4所示对话框

在【File】标签下对话框内写入用户自定义的文件名称,标签【Locatior】下显示了

新定义文件的创立路径,选中标签【Addtoproje】前的对号标志,将新创立的文件74ls138

增加到工程“Shiyan〞中。

点击【下一步】,弹出如图5所示对话框,在此对话框中输入三线八线译码器〔LS74138〕的的端口信息。

 

图5

 

点击【下一步】弹出【NewSourceInformation】对话框,在该对话框内显示了新建文

件的属性及信息,如图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:

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;

elseY<="00000000";

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;

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:

PROCESSwaitfor15us;

BEGININP<="010";

G1<='0';waitfor15us;

 

优选文档

优选文档

 

waitfor15us;INP<="011";

G1<='1';waitfor15us;

waitfor100us;INP<="100";

G1<='0';waitfor15us;

waitfor15us;INP<="101";

G1<='1';waitfor15us;

wait;INP<="110";

ENDPROCESSu1;waitfor15us;

u2:

PROCESSINP<="111";

BEGINwaitfor30us;

G2<='0';INP<="000";

waitfor15us;wait;

G2<='1';endPROCESSu3;

waitfor100us;--***EndTestBench-UserDefinedSection***

G2<='0';ENDbehavior;

waitfor15us;

G2<='1';

wait;

ENDPROCESSu2;

u3:

PROCESS

BEGIN

INP<="000";

waitfor30us;

INP<="001";

 

〔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

0

0

0

x

x

x

0

0

0

1

x

x

x

1

0

1

x

0

x

x

0

0

1

x

1

x

x

1

1

0

x

x

0

x

0

1

0

x

x

1

x

1

1

1

x

x

x

0

0

1

1

x

x

x

1

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

BEGIN

se1<=B&A;

PROCESS(INPUT,se1)

BEGIN

IF(se1="00")THEN

y<=INPUT(0);

ELSIF(se1="01")THEN

y<=INPUT

(1);

ELSIF(se1="10")THEN

y<=INPUT

(2);

ELSE

y<=INPUT(3);

ENDIF;

ENDPROCESS;

ENDrt1;

测试向量程序以下:

––

--Notes:

--Thistestbenchhasbeenautomaticallygeneratedusingtypesstd_logicand

--std_logic_vectorfortheportsoftheunitundertest.Xilinxrecommends

--thatthesetypesalwaysbeusedforthetop-levelI/Oofadesigninorder

--toguaranteethatthetestbenchwillbindcorrectlytothepost-implementation

--simulationmodel.

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.numeric_std.ALL;

ENTITYmux4_mux4_vhd_tbIS

ENDmux4_mux4_vhd_tb;

ARCHITECTUREbehaviorOFmux4_mux4_vhd_tbIS

COMPONENTmux4

PORT(

INPUT:

INstd_logic_vector(3downto0);

A:

INstd_logic;

B:

INstd_logic;

Y:

OUTstd_logic

);

ENDCOMPONENT;

SIGNALINPUT:

std_logic_vector(3downto0);

SIGNALA:

std_logic;

 

优选文档

优选文档

 

SIGNALB:

std_logic;

SIGNALY:

std_logic;

BEGIN

uut:

mux4PORTMAP(

INPUT=>INPUT,

A=>A,

B=>B,

Y=>Y

);

--***TestBench-UserDefinedSection***

u1:

PROCESSBEGIN

A<='0';B<='1';

waitfor15us;waitfor5us;

A<='1';B<='0';

waitfor15us;waitfor5us;

A<='0';B<='1';

waitfor5us;wait;

A<='1';endprocessu2;

waitfor5us;u3:

process

A<='0';begin

wait;INPUT<="1101";

ENDPROCESSu1;waitfor10us;

u2:

processINPUT<="1010";

beginwaitfor10us;

B<='0';INPUT<="0111";

waitfor10us;waitfor20us;

B<='1';INPUT<="0001";

waitfor20us;waitfor10us;

B<='0';INPUT<="0010";

waitfor5us;wait;

endprocessu3;

--***EndTestBench-UserDefinedSection***

ENDbehavior;

仿真结果以以下列图:

 

优选文档

优选文档

 

实验三时序逻辑电路的VHDL语言实验

 

一、实验目的:

1、掌握用VHDL语言设计根本的时序逻辑电路及仿真。

2、掌握VHDL序次语句和并行语句的异同

3、掌握触发器同步复位和异步复位的实现方式。

4、掌握软件时钟的参加方法。

二、实验器材:

计算机、QuartusII软件或xilinxISE

三、实验内容:

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

begin

PROCESS(clk)

VARIABLEcnt:

std_logic_vector(7downto0);

BEGIN

IF(clk'EVENTANDclk='1')THEN

IF(clear='0')THEN

cnt:

="00000000";ELSE

IF(ld='0')THENcnt:

=d;

ELSEIF(enable='1')THEN

cnt:

=cnt+"00000001";ENDIF;

ENDIF;ENDIF;

ENDIF;qk<=cnt;

ENDPROCESS;enda_ycounter;

测试向量以下:

--VHDLTestBenchCreatedfromsourcefileycounter.vhd--16:

50:

5503/24/2021

--Notes:

--Thistestbenchhasbeenautomaticallygeneratedusingtypesstd_logicand

--std_logic_vectorfortheportsoftheunitundertest.Xilinxrecommends

--thatthesetypesalwaysbeusedforthetop-levelI/Oofadesigninorder

--toguaranteethatthetestbenchwillbindcorrectlytothepost-implementation

--simulationmodel.

 

优选文档

优选文档

 

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.numeric_std.ALL;

ENTITYycounter_a_ycounter_vhd_tbIS

ENDycounter_a_ycounter_vhd_tb;

ARCHITECTUREbehaviorOFycounter_a_ycounter_vhd_tbISCOMPONENTycounter

PORT(

clk:

INstd_logic;

clear:

INstd_logic;

ld:

INstd_logic;

enable:

INstd_logic;

d:

INstd_logic_vector(7downto0);

qk:

OUTstd_logic_vector(7downto0)

);

ENDCOMPONENT;

constantclk_cycle:

time:

=20us;

SIGNALclk:

std_logic;

SIGNALclear:

std_logic;

SIGNALld:

std_logic;

SIGNALenable:

std_logic;

SIGNALd:

std_logic_vector(7downto0);

SIGNALqk:

std_logic_vector(7downto0);

BEGIN

uut:

ycounterPORTMAP(

clk=>clk,

clear=>clear,

ld=>ld,

enable=>enable,

d=>d,

qk=>qk

);

--***TestBench-UserDefi

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

当前位置:首页 > IT计算机 > 互联网

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

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