专用集成电路试验指导书gai.docx

上传人:b****3 文档编号:3893691 上传时间:2022-11-26 格式:DOCX 页数:50 大小:870.34KB
下载 相关 举报
专用集成电路试验指导书gai.docx_第1页
第1页 / 共50页
专用集成电路试验指导书gai.docx_第2页
第2页 / 共50页
专用集成电路试验指导书gai.docx_第3页
第3页 / 共50页
专用集成电路试验指导书gai.docx_第4页
第4页 / 共50页
专用集成电路试验指导书gai.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

专用集成电路试验指导书gai.docx

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

专用集成电路试验指导书gai.docx

专用集成电路试验指导书gai

实验一 开发平台软件安装与认知实验

实验性质:

验证性实验级别:

必做

开课单位:

信息与通信工程学院通信工程系学时:

2学时

一、实验目的:

1、了解XilinxISE9.2/QuartusII软件的功能。

2、掌握XilinxISE9.2/QuartusII的VHDL输入方法。

3、掌握XilinxISE9.2/QuartusII的原理图文件输入和元件库的调用方法。

4、掌握XilinxISE9.2/QuartusII软件元件的生成方法和调用方法。

5、掌握XilinxISE9.2/QuartusII编译、功能仿真和时序仿真。

6、掌握XilinxISE9.2/QuartusII原理图设计、管脚分配、综合与实现、数据流下载方法。

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源程序的输入

打开XilinxISE9.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

图2的选项卡中“simulator”选项,如果选择xilinx自带的仿真器,则选择“ISEsimulator”,如果选择第三方仿真软件,则如图所示。

完成具体选择后点击【下一步】弹出如图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)。

(6)编程下载

本试验用并行电缆将开发实验平台与计算机接在一起。

确认下载电缆连接无误后执行XilinxISE的【iMPACT】命令,将三线八线译码器(LS74138)设计文件下载到目标芯片XC2C256-7PQ208中,硬件验证所设计电路功能。

2、元件的生成、调用和仿真

如图19所示,选择“createschematicsymbol”双击,将新建立的实体ls74138生成元件,放在库中;新建原理图文件,命名为“Sch_LS74138”并添加到工程“Shiyan”中,如图20。

点击【下一步】完成原理图文件的创建。

在弹出的原理图编辑框内选择【Symbols】标签,在其目录列表内显示了所有可用电路器件,其中包括了我们所设计的LS74138(图21)。

图19图20

图21

双击“ls74138”将其放置到原理图编辑区内。

点击

为器件添加外围端口,如图22所示。

图22

将原理图文件保存后返回【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

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

当前位置:首页 > 工程科技 > 能源化工

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

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