VHDL实验报告范本模板Word格式.docx
- 文档编号:7819264
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:15
- 大小:93.56KB
VHDL实验报告范本模板Word格式.docx
《VHDL实验报告范本模板Word格式.docx》由会员分享,可在线阅读,更多相关《VHDL实验报告范本模板Word格式.docx(15页珍藏版)》请在冰点文库上搜索。
outstd_logic_vector(7downto0));
endls74138;
architectureBehavioralofls74138is
begin
process(g1,g2,inp)
if((g1andg2)=’1'
)then
caseinpis
when"
000"
=〉y〈=”00000001"
;
when”001"
=〉y<
=”00000010”;
when”010”=〉y〈=”00000100"
011"
=>
y<
="
00001000"
when”100”=〉y<
00010000"
;
101"
=〉y〈=”00100000"
110”=>
=”01000000”;
when”111"
=”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。
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'
110”;
ELSIF(input
(2)='
y〈="
101”;
ELSIF(input(3)=’0’)THEN
=”100”;
ELSIF(input(4)='
ELSIF(input(5)=’0’)THEN
010"
ELSIF(input(6)='
y〈=”001"
ELSE
y〈=”000"
ENDIF;
ENDPROCESS;
ENDrtl;
波形图
原理图:
2.四选一选择器源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux4IS
INSTD_LOGIC_VECTOR(3DOWNTO0);
a,b:
INSTD_LOGIC;
OUTSTD_LOGIC);
ENDmux4;
ARCHITECTURErt1OFmux4IS
SIGNALse1:
STD_LOGIC_VECTOR(1DOWNTO0);
se1〈=b&
a;
PROCESS(input,se1)
IF(se1="
00”)THEN
=input(0);
ELSIF(se1="
01”)THEN
=input
(1);
ELSIF(se1=”10"
)THEN
y〈=input
(2);
=input(3);
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:
--d:
instd_logic_vector(7downto0);
qk:
outstd_logic_vector(7downto0));
endycounter;
architecturea_ycounterofycounteris
PROCESS(clk)
VARIABLEcnt:
std_logic_vector(7downto0);
IF(clk'
EVENTANDclk=’1'
IF(clear='
cnt:
=”00000000”;
-—ELSE
——IF(ld=’0'
——cnt:
=d;
IF(enable='
1’)THEN
cnt:
=cnt+"
00000001”;
if(cnt="
00111100"
)then
="
00000000”;
ENDIF;
—-ENDIF;
qk〈=cnt;
enda_ycounter;
波形图:
六十进制(同步置数)源程序:
libraryieee;
useieee.std_logic_1164.all;
std_logic_unsigned.all;
port(clk,clear,enable:
instd_logic;
ld:
d:
outstd_logic_vector(7downto0));
endycounter;
IF(clk’EVENTANDclk='
1'
00000000"
IF(ld=’0’)THEN
=d;
=cnt+”00000001”;
00111011”)then
Ld:
=1;
endif;
qk<
=cnt;
六十进制计数器的实现,1)异步清零程序的实现:
通过判断最后一个状态,因为该计数器位六十进制,所以最后一个状态为59,用二进制码表示为:
"
00111011”,即当计数器的状态为六十,即"
状态时,计数器清零,输出00000000。
2)同步置数程序的实现:
当计数器达到状态,当计数器达到状态"
00111011”时,ld被赋值为0,执行置数功能,将d的值赋值给y,计数器从零开始计数。
实验四VHDL层次化设计方法实验
设计一个8位移位寄存器。
各个D触发器模块采用VHDL语言编写,分别用原理图、VHDL语言元件例化语句和生成语句的方法实现8位移位寄存器的设计。
D触发器源程序:
libraryIEEE;
useIEEE.STD_LOGIC_ARITH.ALL;
--Uncommentthefollowinglinestousethedeclarationsthatare
--providedforinstantiatingXilinxprimitivecomponents.
——libraryUNISIM;
-—useUNISIM.VComponents.all;
entityDchuis
Port(CLK:
inSTD_LOGIC;
D:
inSTD_LOGIC;
Q:
outSTD_LOGIC;
CLEAR:
Q_N:
outSTD_LOGIC);
endDchu;
ARCHITECTUREBEHOFDchuIS
SIGNALQ1:
STD_LOGIC;
PROCESS(CLEAR,CLK,Q1)
IFCLEAR='
THENQ1<
=’0'
ELSIFCLK’EVENTANDCLK='
1’
THENQ1<
=D;
Q<
=Q1;
Q_N〈=notQ1;
ENDBEH;
波形图:
D触发器:
八位移位寄存器:
八位移位寄存器原理图:
元件例化:
STD_LOGIC_UNSIGNED.ALL;
——providedforinstantiatingXilinxprimitivecomponents.
-—useUNISIM。
entityshift_reg_8_comis
Port(a,clk,rst:
b:
outSTD_LOGIC);
endshift_reg_8_com;
ARCHITECTUREBEHOFshift_reg_8_comIS
Componentdff1
Port(d,clk,rst:
q:
Endcomponent;
Signalq:
STD_LOGIC_VECTOR(8DOWNTO0);
q(0)<
=a;
d0:
dff1PORTMAP(q(0),clk,rst,q
(1));
d1:
dff1PORTMAP(q
(1),clk,rst,q
(2));
d2:
dff1PORTMAP(q
(2),clk,rst,q(3));
d3:
dff1PORTMAP(q(3),clk,rst,q(4));
d4:
dff1PORTMAP(q(4),clk,rst,q(5));
d5:
dff1PORTMAP(q(5),clk,rst,q(6));
d6:
dff1PORTMAP(q(6),clk,rst,q(7));
d7:
dff1PORTMAP(q(7),clk,rst,q(8));
b〈=q(4);
Endstr;
生成语句:
libraryIEEE;
useIEEE.STD_LOGIC_1164。
STD_LOGIC_ARITH.ALL;
STD_LOGIC_UNSIGNED。
--providedforinstantiatingXilinxprimitivecomponents。
—-libraryUNISIM;
—-useUNISIM.VComponents。
all;
Port(a,clk,rst:
Signalq:
q(0)〈=a;
g1:
FORIIN0TO7GENERATE
dx:
dff1PORTMAP(q(i),clk,rst,q(i+1));
Endgenerateg1;
b<
=q(4);
Endstr;
实验结果(仿真结果)与分析
元件例化语句由两部分组成,元件说明语句和元件例化语句.首先要设计被上层电路调用的电路块,即D触发器模块,八位移位寄存器就是通过程序调用八个D触发器,每个D触发器都相当于一个模块。
生成语句是将已设计好的D触发器的逻辑语句进行复制,从而生成一组结构上完全相同的设计单元的电路结构。
从上面的两个程序可以看出,当所需要的组件比较少时,两种语句的大小差不多,但当所需要的组件比较多时,生成语句的执行效率明显的要变高,而且程序所占内存明显减少。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 实验 报告 范本 模板