附录B-2计算机组成原理_第1页
附录B-2计算机组成原理_第2页
附录B-2计算机组成原理_第3页
附录B-2计算机组成原理_第4页
附录B-2计算机组成原理_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1顺序语句与并行语句

顺序执行的语句:并行执行的语句:某些语句既可当作并行语句,也可当作顺序语句,例如简单的信号赋值语句;断言语句;…..2顺序语句

--顺序语句只能出现在process中3顺序执行语句顺序语句只出现在进程和子程序(过程和函数)中;包括:wait语句;顺序赋值语句:信号赋值符号:“

<=

;变量赋值符号:“

=

”;顺序控制语句:

条件控制:if,case;

循环控制:loop,for…loop,while…loop,next,exit;断言语句:assert,report;过程调用:过程名(实际参数);返回语句:return;空语句:null;4(1)顺序信号赋值语句信号名<=[transport|inertial]波形{,波形};波形::=值表达式[after

时间表达式];

B<=transportA+C;B<=transportAafter5ns;Clock<='0',

'1'

after1ns,

'0'after2ns,

'1'

after3ns,

'0'after4ns,

'1'

after5ns;B<=A+C;B<=Aafter5ns;Clock<=transport‘0’,

'1'

after1ns,

'0'after2ns,

'1'

after3ns,

'0'after4ns,

'1'

after5ns;例:5信号赋值的特点信号赋值一定经过延时;信号赋值语句中如果缺少延时指定,则默认延迟时间为

0;

VHDL模拟器则将其按

对待。延时特性:如果缺少指定,则默认为惯性延迟;惯性延迟:

inertial传输延迟:transport

B<=A;A<=B;B<=Aafter0fs;A<=Bafter0fs;6信号特点与属性信号只能在进程外部定义,不能在进程内部或子程序内部定义。实体中声明端口信号。信号可以有预定义属性:信号自身的属性:

Delayed,Stable(t)关于事件的属性:

Event关于事项处理的属性:

Active7(2)变量赋值语句

--立即赋值ArchitectureAofEis

signalS:Bit:=‘0’;

signalOut1:Bit;

process(S)

begin S<=notS

after500ps;

end

process;process

variable

v:Integer:=1;

begin

wait

onS;

v:=v+1;

ifv=10

thenOut1<='1';

v:=1;

end

if;

end

process;endA;8变量特点无延迟特性,直接赋值一般情况下不允许有全程变量不能在实体和结构体声明中定义只能在进程内部或子程序中定义。进程挂起时,变量值保持不变。

(仅在第一次执行进程时初始化)子程序变量在每次调用时赋初值。9(3)条件控制1:if语句if条件1then语句;elsif条件2then语句;…else语句;…endif;关注else的用途!10case语句case值表达式

iswhen值

=>语句;when值|值

=>语句;when离散范围=>语句;whenothers=>语句;endcase;11CASE

语句

signalC:Integerrange1to20;

signalOut1:('0','1','2','3'

);process(C)

caseCis

when1=> Out1<='0';when2|4|8=> Out1<='1'

;

when3|5to7|10to15=>Out1<='2'

;

when

others=> Out1<='3'

;--9,16to20

end

case;end

process关注Others的用途!12case语句与if语句的比较if

语句各分支的执行顺序有优先级之分;case语句各分支的执行顺序无优先级之分,并行执行;综合工具必须考虑此特点if

语句中最后一个分支else

case语句中最后一个分支when

others

如果缺省,对综合工具产生什么影响?13(4)循环控制--loop无条件

loop语句:

标号:

loop<语句>endloop标号;for…loop语句:

标号:for循环变量

in

离散范围

loop<语句>endloop标号;while…

loop

语句:

标号:while条件表达式

loop<语句>endloop标号;14循环控制语句next语句:

next标号

[when条件];跳过下面的语句执行指定标号的下一个循环若不指定标号,指当前的循环。若有条件,则在不满足条件的情况下该语句无效。exit语句:

exit

标号;退出指定标号的循环若不指定标号,指当前的循环。15loop1:

forAin10downto1looploop2:whileB>=(A*A)loop

B:=B-A;

end

looploop2;

end

looploop1;loop1:

forAin10downto1looploop2:loopB:=B-A;

nextloop1whenB<(A*A);

end

looploop2 end

looploop1;16(5)断言语句意义:当不满足条件时输出指定信息和错误级别当严重级别是Failure时,模拟过程停止用途:验证添加限制条件(例:检测时间限制条件)。输出状态信息或出错报告。添加调试断点。assert条件表达式

report输出信息字符串

severity严重级别;typeSeverity_Levelis(Note,Warning,Error,Failure);17例assertnot(S=

1

andR=

1

)

report“BothSandRareHigh.”SeverityError;正常情况下不应同时S=

1

,R=

1

assertEnable/=

X

report

UnknownvalueonEnable

severitywarning;18(6)其他语句

过程调用过程名(参数关联表);返回语句──return语句过程体中:return;

函数体中:return表达式空语句──null语句(无任何动作)casexwhen1|0=>null;whenothers=>x:=

xmod2;endcase;19并行语句

--

并行语句只能出现在architecture中,

不可放在Process中!20

并行语句进程(process)语句;进程和进程之间并行执行。进程内部的语句顺序执行。简单的进程语句可以简化为并行信号赋值语句。

并行信号赋值语句;块(block)语句;断言(assert)语句;过程调用语句;生成(generate)语句;元件例化语句;21结构体(Architecture)中的进程

(进程之间并行执行)entitysubtracteris

port(in1,in2,in3:

in

integer; out1,out2:

out

integer);endsubtrcter;architecturesimplestofsubtracterisbegin

process(in1,in2

)--进程语句之一

beginout1<=in2-in1after5ns;endprocess;

process(in2,in3) --

进程语句之二

beginout2<=in2+in3after4ns;endprocess;endsimplest;进程之间并行执行进程内部顺序执行简单的进程语句可以简化为并行信号赋值语句。22简单进程化简为单个并行语句进程语句若满足以下2个特点:进程语句中只有一个信号赋值语句。该赋值语句右边的所有信号都是敏感信号。则可以简化为并行信号赋值语句

architecturesimplestofsubtracteris beginout1<=in2-in1after5ns;--并行信号赋值语句之一out2<=in2+in3after4ns;--并行信号赋值语句之二

endsimplest;23进程是一个无限循环;进程中的语句顺序执行;进程中允许有多个wait语句;遇到wait语句进程即被挂起,直到条件满足,进程被激活,接着向下执行;进程间通过信号而相互激励/通信;注意延迟时间的处理进程内部执行过程24block语句block语句可以出现在architecture中,相当于一个语法括号。例:加上这个语法括号与否不影响语义加上这个语法括号有助于概念清晰,增加可读性。25block语句(续)block中的声明部分(选项):

在保留字block和begin之间可以写入声明语句信号声明,变量声明,类属声明端口声明….,其可见范围限于该block之内。26block语句(续)block的相互嵌套注意这种情况下的可见范围

27Wait语句Wait: --休眠,直到永远;Waiton<敏感信号列表>: --休眠,直到敏感信号有事件发生;Waitfor<时间表达式>: --休眠一段时间;Waituntil<条件表达式>: --休眠,直到条件为真;Waiton语句的简化形式:processbeginOutput<=AorB;

waitonA,B;end

process;Process(A,B)beginOutput<=AorB;end

process;

位置在end之前

28(1)并行信号赋值语句(1)并行信号赋值语句:简单并行信号赋值语句;条件并行信号赋值语句;选择并行信号赋值语句;29(a)简单并行信号赋值语句信号<=

[选择项]波形{,波形};选择项::=[transport|inertial|guarded]等价于:process(敏感信号表)begin

信号<=

[选择项]波形{,波形};endprocess;举例:Clock<=transport‘0’,

'1'

after1ns,

'0'after2ns,

'1'

after3ns,

'0'after4ns,

'1'

after5ns;30(b)条件并行信号赋值语句并行语句顺序语句信号<=选择项

波形1when条件1else : :

波形n-1when条件n-1else

波形n;process(敏感信号表)beginif条件1then

信号

<=选择项波形1; : :elsif条件n-1then

信号<=选择项波形n-1;else

信号<=选择项波形n;endif;endprocess;31例:

y<=transport

1

afterDelaywhenA=

1

andB=

1

else

0

afterDelay;等价于

process(A,B)

begin ifA=

1

andB=

1

then

y<=transport

1

afterDelay;else

y<=transport

0

afterDelay;endprocess;顺序语句只能用在Process中并行语句只能用在Architecture中例32(c)选择并行信号赋值语句process(敏感信号表)begincase表达式

iswhen分支1=>

信号<=选择项波形1;::when分支n=>

信号<=选择项波形n;endcase;endprocess;并行语句顺序语句with表达式

select

信号<=选择项

波形1when分支1,::

波形nwhen分支n;33withSelselect

Dout<=

0001

when

00

,

0010”when

01

,

0100”when

10

,

1000”when

11

;process(Sel)begincaseSelis when

00

=>

Dout<=

0001

; when

01

=>

Dout<=

0010

; when

10

=>

Dout<=

0100

; when

11

=>

Dout<=

1000

;endcase;endprocess;例并行语句顺序语句34(2)并行断言语句

形式与顺序断言语句相同,可加标号,等价于一个被动进程。也可用在实体中。

entitySRFFis port(S,R:inBit;Q,Q_bar:outBit);begin

SRFF_constraint_check: assertnot(S=

1

andR=

1

) report

BothSandRequalto

1

.

severityError;endentitySRFF;为什么把assert语句放在entity中?35等价于

entitySRFFis port(S,R:inBit;Q,Q_bar:outBit);begin

SRFF_constraint_check:process(S,R) begin assertnot(S=

1

andR=

1

) report

BothSandRequalto

1

.

severityError; endprocess;endentitySRFF;36(3)并行过程调用语句形式与顺序调用语句相同可加标号。等价于一个进程,敏感信号为输入参数的信号。输入输出参数中不能有变量。37生成语句--规则结构并行语句的简写形式用途:使规则电路的描述简单,例如多位加法器。if生成语句:

标号:if

生成条件

generate

并行语句;

end

generate

标号;

for生成语句:

标号:for

生成标识符

in

离散范围

generate

并行语句;

endgenerate

标号;38生成语句的应用实例-用T型触发器组成的计数器--中间各位的结构相同,仅首尾2位不同……7160

T

Q

T

Q

T

Q

T

Q

clockVDDTied(H)T7T0T6T1S6S1S0Dout1Dout0Dout7Dout6●

39生成语句实例G1:forIin7downto0generateG2:if

I=7

generateTFF_7:TFF

port

map(CLK,S(I-1),Dout(I));

end

generate;G3:if

I=0

generateTFF_0:TFF

port

map(CLK,Tied_High,Dout(I));end

generate;G4:if

I>0andI<7

generateAnd_I:And2

port

map(S(I-1),Dout(I),S(I));TFF_I:TFF

port

map(CLK,S(I-1),Dout(I));end

generate;

end

generate;40元件声明(componentdeclaration

)元件例化(componentinstantiation):高层次设计描述中把低层次描述当作子元件调用配置指定(configurationspefication

)配置声明(configurationdeclaration)41元件例化与配置component42为什么要引入component?元件(component)可以看作是1个插座,定义了1个虚拟的设计实体,通过元件例化语句把元件例化于结构体中。

通过配置声明或配置指定语句,把元件和实体(以及结构体)连接起来。可看作通过配置把电路插入插座。43元件例化举例entityInverterisport(I1:inbit;

O1:outbit);endinverter;ArchitechtureInverter_bodyofInverterisbegin

O1<=notI1;

endInverter_body;这是一个已经定义的电路描述,下面要例化此元件

44元件例化语句举例:

实例元件模版元件设计实体-结构体元件例化语句配置指定语句component

Invport(In1:inbit;Out1:outbit);end

component;forU1:Invuse

entity

Work.Inverter(Inverter_body);--配置指定

portmap(In1=>I1,Out1=>O1);beginU1:Invportmap(S,S_bar);--元件例化end;位置关联,这是实际信号显式关联指定45设计分解举例4位计数器:46设计分解举例(续)1位计数器:entitycounter_elementis

port(c_in,clock:inbit; c_out,b_out:outbit);endcounter_element;47设计分解举例(续)1位计数器的Architecture:architecturedata_flowofcounter_elementis

signaldff_out:bit:='0';

signalexor_out:bit:='0';begin L1:b_out<=dff_out; --并行赋值语句

L2:exor_out<=dff_outxorcin;--进程的简略形式

L3:c_out<=dff_outandcin; L4:process(clock) --进程

begin

ifclock'eventandclock='1'then dff_out<=exor_out;

end

if;

end

process;enddata_flow;48有限状态机(FSM)模型Moore型有限状态机:输出是且仅是FSM当前状态的函数;

次态逻辑

状态寄存器

输出逻辑输入次态当前状态输出

clockreset49有限状态机(FSM)模型(续)Mealy型有限状态机:输出是FSM当前状态和输入变量当前值的函数。

次态逻辑

状态寄存器

输出逻辑输入次态当前状态输出

clock

reset50Moore型状态机--空调机控制器51Moore型状态机--空调机控制器(1)temp_high='0'ANDtemp_low='0'(2) temp_low='1'(3) temp_high='1'(4) reset='0'状态迁移图输出是且仅是FSM当前状态的函数52Moore型状态机--空调机控制器状态迁移表:输出是且仅是FSM当前状态的函数53Mealy型状态机状态迁移图:

输出是FSM当前状态和输入变量当前值的函数54Mealy型状态机状态迁移表:

输出是FSM当前状态和输入变量当前值的函数55

描述方法的若干建议:有1个状态变量,用它指定有限状态机的状态;有1个时钟(假设为单相、全局时钟);状态转移指定;输出指定;同步或异步(可选,异步更好)复位信号。状态编码的策略:1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论