电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx

上传人:wj 文档编号:13131079 上传时间:2022-10-06 格式:PPTX 页数:127 大小:1.72MB
下载 相关 举报
电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx_第1页
第1页 / 共127页
电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx_第2页
第2页 / 共127页
电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx_第3页
第3页 / 共127页
电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx_第4页
第4页 / 共127页
电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx_第5页
第5页 / 共127页
点击查看更多>>
下载资源
资源描述

电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx

《电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx》由会员分享,可在线阅读,更多相关《电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx(127页珍藏版)》请在冰豆网上搜索。

电子科技大学EDA技术课件 3_2PPT格式课件下载.pptx

4)记录域名,如my_record.a_field;

5)集合,如(my_var1,my_var2)。

所有对象均分为:

变量和信号对象:

=表达式;

对象=表达式;

-变量赋值-信号赋值要求:

表达式的值必须与对象的类型、宽度一致。

2、变量赋值与信号赋值变量与信号的差异:

1赋值标识符的不同变量:

信号=表达式;

2硬件实现的功能不同信号代表电路单元、功能模块间的互联,代表实际的硬件连线;

变量代表电路单元内部的操作,代表暂存的临时数据。

43)有效范围的不同信号:

程序包、实体、结构体;

全局量。

变量:

进程、子程序;

局部量。

ARCHITECTURESIGNALDeclarationslabel1:

PROCESSVARIABLEDeclarationslabel2:

PROCESSVARIABLEDeclarations54赋值行为的不同信号赋值延迟更新数值、时序或组合电路;

变量赋值立即更新数值、组合或时序电路。

5多次赋值a.一个进程:

最后一次赋值有效b.多个进程:

多源驱动线与、线或、三态6例:

信号的多次赋值architecturertlofexissignala:

std_logic;

beginprocess()begina=b;

a=c;

endprocess;

endrtl;

architecturertlofexissignala:

process()begina=c;

.endprocess;

endex;

7例:

信号赋值与变量赋值的比较信号赋值:

architecturertlofsigissignala,b:

-定义信号beginprocess(a,b)begina=b;

b=a;

endrtl;

-结果是a和b的值互换8-定义变量9变量赋值:

architecturertlofvarisbeginprocessvariablea,b:

begina:

=b;

b:

=a;

endprocess;

-结果是a和b的值都等于b的初值例:

变量赋值实现循环语句功能process(indicator,sig)variabletemp:

begintemp:

=0;

foriin0to3looptemp:

=tempxor(sig(i)andindicator(i);

endloop;

output=temp;

10以上语句等效为:

process(indicator,sig)variabletemp:

temp:

=tempxor(sig(0)andindicator(0);

=tempxor(sig

(1)andindicator

(1);

=tempxor(sig

(2)andindicator

(2);

=tempxor(sig(3)andindicator(3);

11如改为信号,结果如何?

signaltemp:

process(indicator,sig,temp)begintemp=0;

temp=tempxor(sig(0)andindicator(0);

temp=tempxor(sig

(1)andindicator

(1);

temp=tempxor(sig

(2)andindicator

(2);

temp=tempxor(sig(3)andindicator(3);

123.4.2转向控制语句13转向控制语句通过条件控制开关决定是否执行一条或几条语句,或重新执行一条或几条语句,或跳过一条或几条语句。

分为五种:

if语句、case语句、loop语句、next语句、exit语句1、if语句if语句执行一系列的语句,其次序依赖于一个或多个条件的值。

1)if语句的门闩控制if条件then顺序处理语句;

endif;

例:

if(ena=1)thenq=d;

综合后生成锁存器(latch)14条件改为时钟沿,则生成D触发器:

152)if语句的二选择控制格式:

if条件then顺序处理语句;

else顺序处理语句;

用条件来选择两条不同程序执行的路径。

16此描述的典型电路是二选一电路:

architecturertlofmux2isbeginprocess(a,b,sel)beginif(sel=1)theny=a;

elsey=b;

endif;

173)if语句的多选择控制if语句的多选择控制又称为if语句的嵌套。

格式:

if条件then顺序处理语句;

elsif条件then顺序处理语句;

18典型电路是多选一电路(如:

四选一)。

19if_then_elsif语句中隐含了优先级别的判断,最先出现的条件优先级最高,可用于设计具有优先级的电路。

如8-3优先级编码器。

libraryieee;

useieee.std_logic_1164.all;

entitycoderisport(input:

instd_logic_vector(7downto0);

output:

outstd_logic_vector(2downto0);

endcoder;

20-最高优先级21architectureartofcoderisbeginprocess(input)beginifinput(7)=0thenoutput=“000”;

elsifinput(6)=0thenoutput=“001”;

elsifinput(5)=0thenoutput=“010”;

elsifinput(4)=0thenoutput=“011”;

elsifinput(3)=0thenoutput=“100”;

elsifinput

(2)=0thenoutput=“101”;

elsifinput

(1)=0thenoutput=“110”;

elseoutput顺序处理语句;

endcase;

分支条件=顺序处理语句;

其中的分支条件可有以下的形式:

24whenwhenwhen值=顺序处理语句;

值to值=顺序处理语句;

值|值|值|值=顺序处理语句;

以上三种方式的混合;

whenothers=顺序处理语句;

case语句使用注意:

1分支条件的值必须在表达式的取值范围内。

2两个分支条件不能重叠。

3case语句执行时必须选中,且只能选中一个分支条件。

4如果没有others分支条件存在,则分支条件必须覆盖表达式所有可能的值。

对std_logc,std_logic_vector数据类型要特别注意使用others分支条件。

25例:

用case语句描述四选一电路26例:

case语句的误用signalvalue:

integerrange0to15;

signalout_1:

bit;

casevalueis-缺少when条件语句endcase;

casevalueis-分支条件不包含2到15when0=out_1out_1out_1out_110;

endloopL2;

302)forloop语句标号:

for循环变量in31离散范围loop顺序处理语句;

endloop标号;

特点:

循环变量是loop内部自动声明的局部量,仅在loop内可见;

不能指定其变化方式。

离散范围必须是可计算的整数范围:

整数表达式to整数表达式整数表达式downto整数表达式例:

用forloop语句描述的8位奇偶校验电路-奇校验328位奇校验电路仿真结果:

33将变量tmp的初值改为0,则为偶校验电路:

343)whileloop语句标号:

while循环条件loop顺序处理语句;

sum:

i:

abcd:

while(i10)loopsum:

=sum+i;

=i+1;

endloopabcd;

注:

循环变量i需事先定义、赋初值、指定变化方式。

一般综合工具不支持whileloop语句。

35例:

用whileloop语句描述的8位奇偶校验电路364、Next语句在loop语句中next语句用来跳出本次循环。

next标号when条件表达式;

分三种情况:

1)next;

无条件终止当前的循环,跳回到本次循环LOOP语句开始处,开始下次循环。

372)next标号;

无条件终止当前的循环,跳转到指定标号的LOOP语句开始处,重新开始执行循环操作。

3)next标号when条件表达式;

当条件表达式的值为true,则执行next语句,进入跳转操作,否则继续向下执行。

38例:

L1:

whilei10loopL2:

whilejf);

b(k+8);

k:

=k+1;

endloopL_Y;

endloopL_X;

5、Exit语句exit语句将结束循环状态。

exit标号when条件表达式;

next语句与exit语句的格式相似。

区别是:

next语句跳向loop语句的起始点,exit语句跳向loop语句的终点。

41例:

process(a)variableint_a:

integer;

beginint_a:

foriin0tomax_limitloopif(int_a=0)thenexit;

elseint_a:

=int_a-1;

42例:

比较两个数的大小signala,b:

std_logic_vector(3downto0);

signala_less_than_b:

boolean;

a_less_than_b=false;

foriin3downto0loopifa(i)=1andb(i)=0thena_less_than_b=false;

exit;

elsifa(i)=0andb(i)=1thena_less_than_b=true;

elsenull;

endif;

endloop;

433.4.3wait语句44进程在仿真时的两个状态:

执行、挂起。

进程状态的变化受wait语句或敏感信号量变化的控制。

可设置4种不同的条件:

waitwaitonwaituntilwaitfor-无限等待-敏感信号量变化-条件满足(可综合)-时间到敏感信号量列表和wait语句只能选其一,两者不能同时使用。

1、waito

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

当前位置:首页 > 解决方案 > 学习计划

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

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