《EDA技术》复习期末Word格式文档下载.docx

上传人:b****5 文档编号:18899112 上传时间:2023-01-02 格式:DOCX 页数:17 大小:54.30KB
下载 相关 举报
《EDA技术》复习期末Word格式文档下载.docx_第1页
第1页 / 共17页
《EDA技术》复习期末Word格式文档下载.docx_第2页
第2页 / 共17页
《EDA技术》复习期末Word格式文档下载.docx_第3页
第3页 / 共17页
《EDA技术》复习期末Word格式文档下载.docx_第4页
第4页 / 共17页
《EDA技术》复习期末Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《EDA技术》复习期末Word格式文档下载.docx

《《EDA技术》复习期末Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《EDA技术》复习期末Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

《EDA技术》复习期末Word格式文档下载.docx

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

xin

diff_out

b

a

图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<

,则选择通道IN1

LOCK_T<

=LOCK;

COM:

PROCESS(cs,EOC)BEGIN--规定各状态转换方式

CASEcsIS

WHENst0=>

ALE<

START<

LOCK<

OE<

next_state<

=st1;

--0809初始化

WHENst1=>

=st2;

--启动采样

WHENst2=>

OE<

IF(EOC='

)THENnext_state<

=st3;

--EOC=1表明转换结束

ELSEnext_state<

=st2;

--转换未结束,继续等待

WHENst3=>

=st4;

--开启OE,输出转换好的数据

WHENst4=>

next_state<

WHENOTHERS=>

ENDPROCESSCOM;

REG:

PROCESS(CLK,RST)

IF(RST='

)THENcs<

=next_state;

ELSIF(CLK'

EVENTANDCLK='

ENDPROCESSREG;

--由信号cs将当前状态值带出此进程:

REG

LATCH1:

PROCESS(LOCK)--此进程中,在LOCK的上升沿,将转换好的数据锁入

IFLOCK='

ANDLOCK'

EVENTTHENREGL<

=D;

ENDPROCESSLATCH1;

Q<

=REGL;

ENDbehav;

【例7-4】捡测数据11010011,高位在前。

(双进程)

ENTITYSCHKIS

PORT(DIN,CLK,RST:

--串行输入数据位/工作时钟/复位信号

SOUT:

--检测结果输出

ENDSCHK;

ARCHITECTUREbehavOFSCHKIS

TYPEstatesIS(s0,s1,s2,s3,s4,s5,s6,s7,s8);

--定义各状态

SIGNALST,NST:

=s0;

--设定各状态变量和次态变量

PROCESS(ST,DIN)--组合进程,规定各状态转换方式

CASESTIS

WHENs0=>

IFDIN='

THENNST<

=s1;

ELSENST<

WHENs1=>

=s2;

WHENs2=>

=s3;

WHENs3=>

=s4;

WHENs4=>

=s5;

WHENs5=>

=s6;

WHENs6=>

=s7;

WHENs7=>

=s8;

WHENs8=>

NST<

PROCESS(CLK,RST)--时序进程

IFRST='

THENST<

--状态复位到s0

ELSIFCLK'

=NST;

--进入下一状态

SOUT<

WHENST=s8ELSE'

【例7-7】高位在前的序列11010011捡测器“例7-4(双进程)”改进为单进程状态机。

IFST=s8THENSOUT<

;

ELSESOUT<

7-1根据图7-30(a)所示的状态图,分别按照图7-30(b)和图7-30(c)写出对应结构的VHDL状态机。

图7-30习题7-1状态图

--解:

根据图7-30(a)所示的状态图,按照图7-30(b)单进程状态机端口形式,编写的VHDL程序代码如下:

ENTITYstate_8_16_a_bIS

PORT(ina:

INSTD_LOGIC_VECTOR(2DOWNTO0);

CLK,RESET:

outa:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITYstate_8_16_a_b;

ARCHITECTUREbehavOFstate_8_16_a_bIS

TYPEST_TYPEIS(S0,S1,S2,S3);

SIGNALC_ST:

ST_TYPE;

FSM:

PROCESS(CLK,RESET)

IFRESET='

THENC_ST<

=S0;

CASEC_STIS

WHENS0=>

C_ST<

=S1;

IFina="

101"

THENouta<

="

0010"

ELSIFina="

111"

1100"

WHENS1=>

110"

=S2;

ELSEC_ST<

outa<

1001"

WHENS2=>

011"

100"

=S3;

1111"

WHENS3=>

1101"

1110"

ELSEouta<

C_ST<

ENDPROCESSFSM;

ENDARCHITECTUREbehav;

根据图7-30(a)所示的状态图,按照图7-30(c)双进程状态机端口形式,编写的VHDL程序代码如下:

ENTITYstate_8_16_a_cIS

ENDstate_8_16_a_c;

ARCHITECTUREbehavOFstate_8_16_a_cIS

TYPEST_TYPEIS(S0,S1,S2,S3);

SIGNALC_ST,N_ST:

PROCESS(CLK,RESET)--主控时序进程

--检测异步复位信号

ELSIFCLK='

ANDCLK'

EVENTTHEN

=N_ST;

PROCESS(C_ST,ina)--主控组合进程

N_ST<

THEN

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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