vhdl实验报告.docx

上传人:b****1 文档编号:322202 上传时间:2022-10-08 格式:DOCX 页数:13 大小:92.96KB
下载 相关 举报
vhdl实验报告.docx_第1页
第1页 / 共13页
vhdl实验报告.docx_第2页
第2页 / 共13页
vhdl实验报告.docx_第3页
第3页 / 共13页
vhdl实验报告.docx_第4页
第4页 / 共13页
vhdl实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

vhdl实验报告.docx

《vhdl实验报告.docx》由会员分享,可在线阅读,更多相关《vhdl实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

vhdl实验报告.docx

vhdl实验报告

 

专用集成电路实验报告

 

13050Z01

1305024237

X德文

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

实验内容

1、本实验以三线八线译码器〔LS74138〕为例,在XilinxISE9.2软件平台上完成设计电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。

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

2、用1中所设计的的三线八线译码器〔LS74138〕生成一个LS74138元件,在XilinxISE9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器〔LS74138〕,实现编译,仿真,管脚分配和编程下载等操作。

源程序:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

--Unmentthefollowinglinestousethedeclarationsthatare

--providedforinstantiatingXilinxprimitiveponents.

--libraryUNISIM;

--useUNISIM.Vponents.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;

波形文件:

生成元器件及连接电路

思考:

有程序可以看出,定义了三个输入端,一个输出端。

g1,g2为使能输入端,当全为一时,开场执行宽度为三的输入inp,并听过程序实现三八译码器的功能。

通过实验,分别用了原理图和vhdl语言两种方式进展调试。

两种方法各有优缺点。

对于原理图而言,可以清晰直观的看出电路各局部的构造,但却只能在原有的根底上进展而无法随意修改元器件功能;vhdl语言那么可以按照实际的需求进展编写程序,从而可以实现开发者想要实现的功能。

 

实验二组合逻辑电路的VHDL语言实现

实验内容:

1.用VHDL语言实现优先编码器的设计并实现功能仿真

2.用VHDL语言实现四选一选择器的设计并实现功能仿真。

1.优先编码器源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYpriorityencoderIS

PORT(input:

INSTD_LOGIC_VECTOR(7DOWNTO0);

y:

OUTSTD_LOGIC_VECTOR(2DOWNTO0));

ENDpriorityencoder;

ARCHITECTURErtlOFpriorityencoderIS

BEGIN

PROCESS(input)

BEGIN

IF(input(0)='0')THEN

y<="111";

ELSIF(input

(1)='0')THEN

y<="110";

ELSIF(input

(2)='0')THEN

y<="101";

ELSIF(input(3)='0')THEN

y<="100";

ELSIF(input(4)='0')THEN

y<="011";

ELSIF(input(5)='0')THEN

y<="010";

ELSIF(input(6)='0')THEN

y<="001";

ELSE

y<="000";

ENDIF;

ENDPROCESS;

ENDrtl;

波形图

原理图:

 

2.四选一选择器源程序:

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;

波形图

原理图

思考:

1.优先编码器:

通过程序定义了一个八位的输入端和一个三位的输入端。

首先是通过八位的

输入端的最低位开场判断,如果是0,那么输出为:

111;如果是1,那么判断第

二位,以此类推,直到最后一位,如果都不满足,那么输出:

000。

2.四选一选择器:

一共有三个输入,其中一个是宽度为四的可供选择的输入端,将一个四位宽度的二进制码赋值给input端,通过a与b的输入选择input的输出。

如ab为00时,那么输出为:

input(0),以此类推。

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

实验内容:

〔3选1〕

(一)、设计一个60进制的计数器

(二)设计一带使能的同步复位清零的递增8位二进制计数器

(三)设计一带使能的异步清零复位的递增8位二进制计数器

六十进制〔异步清零〕源程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityycounteris

port(clk,clear,enable:

instd_logic;

--ld:

instd_logic;

--d:

instd_logic_vector(7downto0);

qk:

outstd_logic_vector(7downto0));

endycounter;

architecturea_ycounterofycounteris

begin

PROCESS(clk)

VARIABLEt:

std_logic_vector(7downto0);

BEGIN

IF(clk'EVENTANDclk='1')THEN

IF(clear='0')THEN

t:

="00000000";

--ELSE

--IF(ld='0')THEN

--t:

=d;

ELSE

IF(enable='1')THEN

t:

=t+"00000001";

if(t="00111100")then

t:

="00000000";

endif;

ENDIF;

--ENDIF;

ENDIF;

ENDIF;

qk<=t;

ENDPROCESS;

enda_ycounter;

波形图:

六十进制〔同步置数〕源程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityycounteris

port(clk,clear,enable:

instd_logic;

ld:

instd_logic;

d:

instd_logic_vector(7downto0);

qk:

outstd_logic_vector(7downto0));

endycounter;

architecturea_ycounterofycounteris

begin

PROCESS(clk)

VARIABLEt:

std_logic_vector(7downto0);

BEGIN

IF(clk'EVENTANDclk='1')THEN

IF(clear='0')THEN

t:

="00000000";

ELSE

IF(ld='0')THEN

t:

=d;

ELSE

IF(enable='1')THEN

t:

=t+"00000001";

if(t="00111011")then

Ld:

=1;

endif;

ENDIF;

ENDIF;

ENDIF;

ENDIF;

qk<=t;

ENDPROCESS;

enda_ycounter;

波形图:

思考:

六十进制计数器的实现,1〕异步清零程序的实现:

通过判断最后一个状态,因为该计数器位六十进制,所以最后一个状态为59,用二进制码表示为:

"00111011",即当计数器的状态为六十,即"00111100"状态时,计数器清零,输出00000000。

2〕同步置数程序的实现:

当计数器到达状态,当计数器到达状态"00111011"时,ld被赋值为0,执行置数功能,将d的值赋值给y,计数器从零开场计数。

 

实验四VHDL层次化设计方法实验

实验内容:

设计一个8位移位存放器。

各个D触发器模块采用VHDL语言编写,分别用原理图、VHDL语言元件例化语句和生成语句的方法实现8位移位存放器的设计。

D触发器源程序:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

--Unmentthefollowinglinestousethedeclarationsthatare

--providedforinstantiatingXilinxprimitiveponents.

--libraryUNISIM;

--useUNISIM.Vponents.all;

entityDchuis

Port(CLK:

inST

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

当前位置:首页 > 高中教育 > 语文

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

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