最新《EDA技术》复习期末资料Word格式.docx
《最新《EDA技术》复习期末资料Word格式.docx》由会员分享,可在线阅读,更多相关《最新《EDA技术》复习期末资料Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
SIGNALQQ:
STD_LOGIC;
BEGIN
PROCESS(RST)
IFRST’EVENTANDRST=‘1'
THEN
QQ<
=(Others=>
‘0’);
ENDIF;
ENDPROCESS;
Q1<
=QQ;
END;
………………………
(2)电平触发复位信号
PROCESS(CLK)
IFRST=‘1'
3判断下面三个程序中是否有错误,若有则指出错误所在,并给出完整程序。
程序1:
SignalA,EN:
std_logic;
…………………
Process(A,EN)
VariableB:
std_logic;
Begin
ifEN=lthenB<
=A;
endif;
--将“B<
=A”改成“B:
=A”
endprocess;
程序2:
Architectureoneofsampleis
variablea,b,c:
integer;
begin
c<
=a+b;
--将“c<
=a+b”改成“c:
=a+b”
end;
程序3:
libraryieee;
useieee.std_logic_1164.all;
entitymux21is
PORT(a,b:
instd_logic;
sel:
instd_loglc;
c:
outstd_logle;
);
--将“;
)”改成“)”
endsam2;
--将“sam2”改成“entitymux21”
architectureoneofmux2lis
--增加“process(a,b,sel)begin”
ifsel='
0'
thenc:
=a;
elsec:
=b;
--应改成“ifsel='
thenc<
elsec<
”
--增加“endprocess;
endtwo;
--将“two”改成“architectureone”
二、电路设计应用
【例3-1】2选1多路选择器
图3-1mux21a实体图3-2mux21a结构体
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux21aIS
PORT(a,b,s:
INBIT;
y:
OUTBIT);
ENDENTITYmux21a;
ARCHITECTUREone0Fmux21aIS
PROCESS(a,b,s)
IFs=‘0’THEN
y<
ELSE
ENDIF;
3-2图3-16所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序,选择控制信号s1和s0的数据类型为STD_LOGIC_VECTOR;
当s1=’0’,s0=’0’;
s1=’0’,s0=’1’;
s1=’1’,s0=’0’和s1=’1’,s0=’1’时,分别执行y<
=a、y<
=b、y<
=c、y<
=d。
图3-164选1多路选择器
--解1:
用IF_THEN语句实现4选1多路选择器
ENTITYmux41IS
PORT(a,b,c,d:
s0:
s1:
OUTSTD_LOGIC);
ENDENTITYmux41;
ARCHITECTUREif_mux41OFmux41IS
SIGNALs0s1:
STD_LOGIC_VECTOR(1DOWNTO0);
--定义标准逻辑位矢量数据
s0s1<
=s1&
s0;
--s1相并s0,即s1与s0并置操作
PROCESS(s0s1,a,b,c,d)
IFs0s1="
00"
THENy<
=a;
ELSIFs0s1="
01"
=b;
10"
=c;
ELSEy<
=d;
ENDARCHITECTUREif_mux41;
--解2:
用CASE语句实现4选1多路选择器
ARCHITECTUREcase_mux41OFmux41IS
--定义标准逻辑位矢量数据类型
CASEs0s1IS--类似于真值表的case语句
WHEN"
=>
y<
11"
WHENOTHERS=>
NULL;
ENDCASE;
ENDARCHITECTUREcase_mux41;
3-7给出1位全减器的VHDL描述;
最终实现8位全减器。
要求:
1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-20中h_suber是半减器,diff是输出差(diff=x-y),s_out是借位输出(s_out=1,x<
y),sub_in是借位输入。
yin
b
图3-191位全加器
c
--解(1.1):
实现1位半减器h_suber(diff=x-y;
s_out=1,x<
y)
--半减器描述
(1):
布尔方程描述方法
ENTITYh_suberIS
PORT(x,y:
diff,s_out:
ENDENTITYh_suber;
ARCHITECTUREhs1OFh_suberIS
Diff<
=xXOR(NOTy);
s_out<
=(NOTx)ANDy;
ENDARCHITECTUREhs1;
--解(1.2):
采用例化实现图4-20的1位全减器
--1位二进制全减器顺层设计描述
ENTITYf_suberIS
PORT(xin,yin,sub_in:
sub_out,diff_out:
ENDENTITYf_suber;
ARCHITECTUREfs1OFf_suberIS
COMPONENTh_suber--调用半减器声明语句
PORT(x,y:
ENDCOMPONENT;
SIGNALa,b,c:
STD_LOGIC;
--定义1个信号作为内部的连接线。
u1:
h_suberPORTMAP(x=>
xin,y=>
yin,diff=>
a,s_out=>
b);
u2:
a,y=>
sub_in,diff=>
diff_out,s_out=>
c);
sub_out<
=cORb;
ENDARCHITECTUREfs1;
三、状态机设计应用
【例7-2】根据图7-5状态图,采用Moore型状态机,设计ADC0809采样控制器。
图7-5控制ADC0809采样状态图
ENTITYADC0809IS
PORT(D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
--来自0809转换好的8位数据
CLK:
--状态机工作时钟
RST:
--系统复位控制
EOC:
--转换状态指示,低电平表示正在转换
ALE:
OUTSTD_LOGIC;
--8个模拟信号通道地址锁存信号
START:
--转换开始信号
OE:
--数据输出三态控制信号
ADDA:
--信号通道最低位控制信号
LOCK_T:
--观察数据锁存时钟
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
--8位数据输出
ENDADC0809;
ARCHITECTUREbehavOFADC0809IS
TYPEstatesIS(st0,st1,St2,st3,st4);
--定义各状态子类型
SIGNALcs,next_state:
states:
=st0;
SIGNALREGL:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALLOCK:
--转换后数据输出锁存时钟信号
ADDA<
='
1'
;
--当ADDA<
,选择模拟信号通道IN0;
当ADDA<