VHDL语言的描述语句实用教案_第1页
VHDL语言的描述语句实用教案_第2页
VHDL语言的描述语句实用教案_第3页
VHDL语言的描述语句实用教案_第4页
VHDL语言的描述语句实用教案_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

1、1VHDL有如下六类基本顺序有如下六类基本顺序(shnx)语句:语句:信号(xnho)赋值语句变量赋值语句1、赋值语句(yj)2、流程控制语句3、等待语句4、子程序调用语句5、返回语句6、空操作语句IF语句CASE语句LOOP语句NEXT语句EXIT语句RETURN语句NULL语句WAIT语句过程调用函数调用第1页/共96页第一页,共97页。2 赋值语句的功能是将一个值或一个表达式的运算结果传递给某一数据对象,如信号、变量或由它们组成的数组。 通过赋值语句,可以(ky)(ky)实现设计实体内部的数据传送,以及端口外部数据的读写。 赋值语句由赋值源、赋值目标和赋值符构成。 要求赋值源和赋值目标的

2、数据类型必须相同。 根据赋值对象(赋值目标)的不同,赋值语句可分为信号赋值和变量赋值两种。 1. 赋值语句(yj) 第2页/共96页第二页,共97页。3 信号(xnho)(xnho)赋值具有延时性、全局性,赋值符用“=”表示。 (1 1)信号(xnho)(xnho)赋值语句 格式:格式: 目标信号名目标信号名= 赋值源;赋值源; 该语句是将赋值源的当前值赋给目标信号。要求赋值号两边信号量的类型和长度应该一致。 例如: Y Y =11; X X = Y Y; A A = B B ANDAND C C;- - 字符赋值,信号Y Y被赋值为1 1- - 信号赋值,将信号Y Y的当前值赋给目标信号X

3、X- - 表达式赋值,将B B和C C的与逻辑赋给目标信号A A第3页/共96页第三页,共97页。4 对于数组赋值,可采用下列(xili)(xili)格式: (1 1)信号(xnho)(xnho)赋值语句 SIGNALSIGNAL x x,y:y: STD_LOGIC_VECTOR (STD_LOGIC_VECTOR ( 0 0 TOTO 3 3 ) ); x x = “1011”“1011”; y y ( ( 0 0 TOTO 1 1 ) ) = “01”“01”; y y ( ( 2 2 TOTO 3 3 ) ) = x x ( ( 1 1 TOTO 2 2 ) ); -整体赋值,数组“1

4、011”1011”赋值x x -部分赋值, ,“01”01”赋值y y的部分位 - -位置关联赋值,x,x的部分位赋值y y的部分位 第4页/共96页第四页,共97页。5 变量赋值具有即时性、局部性,并且(bngqi)(bngqi)变量赋值只限定在进程和子程序中,赋值符用“:=:=”表示。 (2 2)变量(binling)(binling)赋值语句 格式:格式: 目标变量名目标变量名: := 赋值源;赋值源; 该语句是将赋值源的当前值赋给目标变量。要求赋值号两边变量的类型和长度应该一致。 例如: A A : := 5.05.0; Y Y : :=00; X X := Y Y;-将数值5.05.

5、0赋值给变量A A -变量Y Y被赋值为00 -将变量Y Y的当前值赋给目标变量X X 第5页/共96页第五页,共97页。6 对于(duy)(duy)数组赋值,可采用下列格式: (2 2)变量(binling)(binling)赋值语句 VARIBLEVARIBLE x x,y:y: STD_LOGIC_VECTOR (STD_LOGIC_VECTOR ( 0 0 TOTO 3 3 ) ); x x : := “1011”“1011”; y y ( ( 0 0 TOTO 1 1 ) :) := “10”“10”; y y ( ( 2 2 TOTO 3 3 ) ) : := x x ( ( 1

6、1 TOTO 2 2 ) ); -整体赋值,数组“1011”1011”赋值x x -部分赋值, ,“10”10”赋值y y的部分位 - -位置关联赋值,x,x的部分位赋值y y的部分位 第6页/共96页第六页,共97页。7A 变量的说明和赋值限定在顺序区域内,即只能在进程(jnchng)或子程序中使用,它无法传递到进程(jnchng)之外。B 信号赋值可以在顺序区域内作顺序语句,也可以在结构体中当作并行语句使用。变量(binling)赋值语句与信号赋值语句区别第7页/共96页第七页,共97页。8 流程(lichng)(lichng)控制语句通过条件控制来决定是否执行一条或几条语句,或重复执行一

7、条或几条语句,或跳过一条或几条语句。 2. 流程(lichng)控制语句 流程控制语句共有五种: IFIF语句 CASECASE语句 LOOPLOOP语句 NEXTNEXT语句 EXITEXIT语句 第8页/共96页第八页,共97页。9 IF IF语句是一种条件语句,在IFIF语句中至少应有一个条件句,该条件句必须由BOOLEANBOOLEAN表达式构成。 IF IF语句依据条件产生的判断结果TRUETRUE或FALSEFALSE,有选择地去执行(zhxng)(zhxng)指定的语句。 利用IFIF语句可以实现两个或两个以上的条件分支判断。其格式有三种: (1 1)IFIF语句(yj) (yj

8、) 单选择控制 二选择控制 多选择控制 第9页/共96页第九页,共97页。10 IF IF语句的单选择(xunz)(xunz)控制 格式:格式: IF IF 条件句条件句 THEN THEN 顺序顺序(shnx)(shnx)语句;语句; END IF END IF; 若条件句的逻辑值为真,则执行THENTHEN后面的顺序语句,否则结束该条件的执行。 例如:IFIF (x x = 11) THENTHEN A A = B B; END IFEND IF; 当条件x x =1 1成立时,信号B B的值赋给信号A A;否则,不执行A A = B B语句。 第10页/共96页第十页,共97页。11 I

9、F IF语句的二选择(xunz)(xunz)控制 格式格式(g shi)(g shi): IF IF 条件句条件句 THEN THEN 顺序语句;顺序语句; ELSE ELSE 顺序语句;顺序语句; END IF END IF; 若条件句的逻辑值为真,则执行THENTHEN后面的顺序语句,否则执行ELSEELSE后面的顺序语句。 第11页/共96页第十一页,共97页。12 【例6.16.1】用IFIF语句描述(mio sh)(mio sh)二选一数据选择器。 设数据输入信号(xnho)(xnho)为d1d1和d0d0,选择控制信号(xnho)(xnho)为s s,数据输出信号(xnho)(xn

10、ho)为y y。 ARCHITECTUREARCHITECTURE example1 example1 OFOF mux2 mux2 ISIS BEGINBEGIN PROCESSPROCESS(d1, d0, sd1, d0, s) BEGINBEGIN IFIF ( ( s s =0) 0) THENTHEN y y = d0d0; ELSEELSE y y = d1d1; END IFEND IF; END PROCESSEND PROCESS; END END example1 example1;第12页/共96页第十二页,共97页。13 IF IF语句的多选择(xunz)(xunz)

11、控制 格式格式(g shi)(g shi): IF IF 条件句条件句 THEN THEN 顺序语句;顺序语句; ELSIF ELSIF 条件句条件句 THEN THEN 顺序语句;顺序语句; END IF END IF; 当满足多个条件之一时,执行该条件THENTHEN后面的顺序语句;如果所设条件都不满足,则执行ELSEELSE后面的顺序语句。 第13页/共96页第十三页,共97页。14 【例6.26.2】用IFIF语句(yj)(yj)描述四选一数据选择器。 设数据(shj)(shj)输入信号为d3d3、d2d2、d1d1、d0d0,选择控制信号为s=s1, s0 s=s1, s0 ,数据(

12、shj)(shj)输出信号为y y。 ARCHITECTUREARCHITECTURE example2 example2 OFOF mux4 mux4 ISIS BEGINBEGIN PROCESSPROCESS(d3, d2, d1, d0, sd3, d2, d1, d0, s ) BEGINBEGIN IFIF ( ( s s =“00”) “00”) THENTHEN y y = d0d0; ELSIFELSIF ( ( s s =“01”) “01”) THENTHEN y y = d1d1; ELSIF ELSIF ( ( s s =“10”) “10”) THENTHEN y

13、y = d2d2; ELSE ELSE y y 顺序语句;顺序语句; WHEN 选择值选择值 = 顺序语句;顺序语句; WHEN OTHERS = 顺序语句;顺序语句; END CASE; 说明:先计算表达式的值,然后根据条件句中的选择说明:先计算表达式的值,然后根据条件句中的选择值执行相对应的顺序语句。值执行相对应的顺序语句。 注意:条件句中的注意:条件句中的“=”不是操作符,它相当于不是操作符,它相当于THENTHEN作用。作用。 第15页/共96页第十五页,共97页。16 表达式可以是一个整数类型或枚举类型的值,也可以是由这些(zhxi)(zhxi)数据类型的值构成的数组。 (2 2)C

14、ASECASE语句(yj) (yj) 选择值可以有四种不同的表达方式:选择值可以有四种不同的表达方式: 单个普通数值,如:单个普通数值,如:5 5; 数值选择范围,如:(数值选择范围,如:(1 TO 3)1 TO 3); 并列值,如:并列值,如:4 4 | 6 6,表示取值为,表示取值为4 4或或6 6; 混合方式,即以上三种方式的混合。混合方式,即以上三种方式的混合。第16页/共96页第十六页,共97页。17 使用(shyng)CASE(shyng)CASE语句时,应注意以下几点: (2 2)CASECASE语句(yj) (yj) 选择值必须在表达式的取值范围内;选择值必须在表达式的取值范围

15、内; CASECASE语句中至少要包含一个语句中至少要包含一个WHENWHEN语句;语句; 每个选择值只能出现一次,不能在其他每个选择值只能出现一次,不能在其他WHENWHEN语句语句中重复出现;中重复出现; 除非所有选择值能完全覆盖除非所有选择值能完全覆盖CASECASE语句中的表达式语句中的表达式的取值,否则最后一个条件句的选择值必须用的取值,否则最后一个条件句的选择值必须用“OTHERS”OTHERS”表示。表示。 选择值可以颠倒次序选择值可以颠倒次序, ,但但OTHERSOTHERS必须放在最后必须放在最后; ; “=”不是操作符,相当于不是操作符,相当于THENTHEN语句的作用。语

16、句的作用。 第17页/共96页第十七页,共97页。18 【例6.36.3】用CASECASE语句(yj)(yj)描述四选一数据选择器。 ARCHITECTUREARCHITECTURE example3 example3 OFOF mux4 mux4 ISIS SIGNALSIGNAL s: STD_LOGIC_VECTOR s: STD_LOGIC_VECTOR(1 1 DOWNTODOWNTO 0 0) BEGINBEGIN s sy yy yy yy yy y=XX; END CASEEND CASE; END PROCESSEND PROCESS; END END example3 e

17、xample3;第18页/共96页第十八页,共97页。19 LOOP LOOP语句(yj)(yj)是一种循环语句(yj)(yj),它可以使所包含的一组顺序语句(yj)(yj)被循环执行,其执行的次数由设定的循环参数决定。 (3 3)LOOPLOOP语句(yj) (yj) LOOPLOOP语句有三种格式:语句有三种格式: FOR_LOOPFOR_LOOP语句语句 WHILE_LOOPWHILE_LOOP语句语句 单个单个LOOPLOOP语句语句第19页/共96页第十九页,共97页。20 FOR_LOOP FOR_LOOP语句主要(zhyo)(zhyo)用于循环次数已知的循环程序设计。可分为递增方

18、式和递减方式。 FOR_LOOP FOR_LOOP语句(yj) (yj) 循环标号循环标号: FOR 循环变量循环变量 IN 初值初值 TO 终值终值 LOOP 顺序语句;顺序语句; END LOOP 循环标号循环标号; 递增格式:递增格式: 递减格式:递减格式:循环标号循环标号: FOR 循环变量循环变量 IN 初值初值 DOWNTO 终值终值 LOOP 顺序语句;顺序语句; END LOOP 循环标号循环标号; 第20页/共96页第二十页,共97页。21 说明:循环从循环变量的“初值”开始,到“ 终 值 ” 结 束 , 每 执 行 一 次 循 环 体 中 的 顺 序(shnx)(shnx)

19、语句后,循环变量的值递增或递减1 1。 FOR_LOOP FOR_LOOP语句(yj) (yj) 循环标号为任选项,循环标号为任选项,用来给循环语句定位。用来给循环语句定位。 循环变量的初值和终值决定了循环次数(取整循环变量的初值和终值决定了循环次数(取整数)。数)。 循环次数:循环次数: 循环次数循环次数 = | |终值终值- -初值初值|+1|+1 第21页/共96页第二十一页,共97页。22 【例6.46.4】用FOR_LOOPFOR_LOOP语句(yj)(yj)描述八位奇偶校验器。 输入信号X X是一个长度为8 8位的标准逻辑矢量(shling)(shling)。当X X中1 1的个数

20、为奇数时,输出Y=1Y=1,否则,Y=0Y=0。 算法:用FOR_LOOPFOR_LOOP语句对X X的值逐位进行异或运算。 循环次数:由循环变量n n控制,记录异或运算的次数。 循环变量的初值为0 0,终值为7 7。 第22页/共96页第二十二页,共97页。23 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.ALLALL; ENTITYENTITY loop1 loop1 ISIS PORTPORT(X: X: ININ STD_LOGIC_VECTOR STD_LOGIC_VECTOR(7

21、 7 DOWNTODOWNTO 0 0); Y: Y: OUTOUT STD_LOGIC STD_LOGIC); ENDEND loop1 loop1; ARCHITECTUREARCHITECTURE example4 example4 OFOF loop1 loop1 ISIS BEGINBEGIN PROCESSPROCESS ( ( X X ) ) VARIABLEVARIABLE temp: STD_LOGIC temp: STD_LOGIC; BEGINBEGIN temp temp :=00; FORFOR n n ININ 7 7 DOWNTODOWNTO 0 0 LOOPLO

22、OP temp temp := temp temp XORXOR X( X( n n ) ); END LOOPEND LOOP; Y Y = temptemp; END PROCESSEND PROCESS; ENDEND example4 example4;第23页/共96页第二十三页,共97页。24 WHILE_LOOP WHILE_LOOP语句是一种条件循环语句,用于循环次数(csh)(csh)未知的循环程序设计。 WHILE_LOOP WHILE_LOOP语句(yj) (yj) 循环标号循环标号: : WHILE 循环控制条件循环控制条件 LOOP 顺序语句;顺序语句; END LO

23、OP 循环标号循环标号 ; 格式:格式:说明:说明:若循环控制条件为若循环控制条件为“真真”, ,则进行循环执行顺则进行循环执行顺序语句;序语句; 若循环控制条件为若循环控制条件为“假假”,则结束循环。,则结束循环。第24页/共96页第二十四页,共97页。25 【例6.56.5】用WHILE_LOOPWHILE_LOOP语句(yj)(yj)描述八位奇偶校验器。 ARCHITECTUREARCHITECTURE example5 example5 OFOF loop2 loop2 ISIS BEGINBEGIN PROCESS PROCESS ( ( X X ) ) VARIABLEVARIAB

24、LE temp: STD_LOGIC temp: STD_LOGIC; VARIABLEVARIABLE n: INTEGER n: INTEGER; BEGINBEGIN temp temp :=00; n n := 0 0; WHILEWHILE n n 8 8 LOOPLOOP temp temp := temp temp XORXOR X( X( n n ) ); n n := n+1n+1; END LOOPEND LOOP; Y Y1010; END LOOPEND LOOP L2 L2;- 控制语句,当控制语句,当A A大大 于于1010时,跳出循环时,跳出循环 第26页/共96

25、页第二十六页,共97页。27 NEXT NEXT语句(yj)(yj)是一种循环控制语句(yj)(yj),通常嵌套在LOOPLOOP语句(yj)(yj)中使用,用于进行有条件或无条件的控制执行程序的转向。 (4 4)NEXTNEXT语句(yj) (yj) NEXT 循环标号循环标号 WHEN 条件表达式条件表达式 ; 格式:格式:第27页/共96页第二十七页,共97页。28 根据可选项,NEXTNEXT语句有三种(sn zhn)(sn zhn)格式: (4 4)NEXTNEXT语句(yj) (yj) 格式格式1 1: NEXT 功能:功能:无条件结束本次循环,无条件结束本次循环,跳回到循环体的开

26、始位置,执跳回到循环体的开始位置,执行下一次循环。行下一次循环。 格式格式2 2: NEXT 循环标号循环标号 功能:功能:无条件结束本次循环,无条件结束本次循环,从循环标号规定的位置,执行下从循环标号规定的位置,执行下一次循环。一次循环。 格式格式3 3: NEXT WHEN 条件表达式条件表达式 功能:功能:有条件结束本次循环,有条件结束本次循环,当条件表达式满足时,结束本当条件表达式满足时,结束本次循环,否则继续循环。次循环,否则继续循环。第28页/共96页第二十八页,共97页。29 【例6.66.6】用NEXT_WHENNEXT_WHEN语句(yj)(yj)实现单循环。 ARCHITE

27、CTUREARCHITECTURE example6 example6 OFOF NEXT_WHEN1 NEXT_WHEN1 ISIS BEGINBEGIN PROCESS PROCESS ( ( s s ) ) VARIABLE VARIABLE i: INTEGER i: INTEGER; BEGINBEGIN L1: L1: FORFOR i i ININ 7 7 DOWNTODOWNTO 0 0 LOOPLOOP y( y( i i ) ) =00; NEXTNEXT WHENWHEN s( s( i i ) ) =11; y(y( i i ) ) =11; END LOOPEND L

28、OOP L1 L1; END PROCESSEND PROCESS; ENDEND example6 example6;- - 若若s( i )=1s( i )=1成立,成立, 终止本次循环终止本次循环, ,返回到返回到L1L1 否则否则(fuz),(fuz),继续本次循继续本次循环。环。 - - 返回到返回到L1L1 第29页/共96页第二十九页,共97页。30【例6.76.7】试用(shyng)(shyng)多重循环实现四组八位数据的奇校验。 LIBRARYLIBRARY IEEE IEEE; USE USE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164

29、.ALLALL; ENTITYENTITY NEXT_WHEN2 NEXT_WHEN2 ISIS PORTPORT ( ( d: d: ININ STD_LOGIC_VECTOR ( STD_LOGIC_VECTOR ( 0 0 TOTO 31) 31); y: y: OUTOUT STD_LOGIC_VECTOR ( STD_LOGIC_VECTOR ( 0 0 TOTO 3 3 ) ) ) ); ENDEND NEXT_WHEN2 NEXT_WHEN2; ARCHITECTUREARCHITECTURE example7 example7 OFOF NEXT_WHEN2 NEXT_WHEN

30、2 ISIS BEGINBEGIN PROCESS PROCESS ( ( d d ) ) VARIABLE VARIABLE i,k,j: INTEGER i,k,j: INTEGER; VARIABLE VARIABLE tmp: STD_LOGIC tmp: STD_LOGIC; 四组八位数据由d0.31d0.31输入,内循环完成各组数据的奇校验,外循环确定校验的组数,校验结果存放在输出y0.3y0.3中。当某八位数据中1 1的个数为奇数(j sh)(j sh)时,所对应的输出位yi=1yi=1,否则,yi=0yi=0。 第30页/共96页第三十页,共97页。31 BEGIN BEGIN

31、 k k: = 0 0;L1: L1: FORFOR i i ININ 0 0 TOTO 3 3 LOOPLOOP y( y( i i ) ) =00; tmptmp :=00; j j := 0 0; k k := i i * * 8 8;L2: L2: LOOPLOOP tmp tmp := tmp tmp XORXOR d( d( k k ) ); y(y( i i ) ) = tmptmp; NEXTNEXT L1 L1 WHENWHEN j j = 7 7; j j := j j + + 1 1; k k := k k + + 1 1; NEXTNEXT L2 L2; END LOO

32、PEND LOOP L2 L2; NEXTNEXT L1 L1; END LOOP END LOOP L1 L1; END PROCESSEND PROCESS; ENDEND example7 example7;内循环内循环(xnhun) 外循环外循环(xnhun) 在内循环中,当在内循环中,当j j 7 7时,继续执行内时,继续执行内循环;循环; 当当j j = 7 7时,终止内循环,跳转到时,终止内循环,跳转到L1L1处,处,执行一次外循环。执行一次外循环。第31页/共96页第三十一页,共97页。32 EXIT EXIT语句和NEXTNEXT语句一样,都是循环控制语句,主要(zhyo)(

33、zhyo)在LOOPLOOP语句中使用,用于进行有条件或无条件的跳转控制。 (5 5)EXITEXIT语句(yj) (yj) EXIT 循环标号循环标号 WHEN 条件表达式条件表达式 ; 格式:格式:第32页/共96页第三十二页,共97页。33 根据可选项,EXITEXIT语句(yj)(yj)有三种格式: (5 5)EXITEXIT语句(yj) (yj) 格式格式1 1: EXIT 功能:功能:无条件跳出循环无条件跳出循环, ,从从END LOOPEND LOOP下面的语句开始执行。下面的语句开始执行。 格式格式2 2: EXIT 循环标号循环标号 功能:功能:无条件跳出循环,从循环标号规定

34、的位置开始执行循无条件跳出循环,从循环标号规定的位置开始执行循环体外的语句。环体外的语句。 格式格式3 3: EXIT WHEN 条件表达式条件表达式 功能:功能:有条件跳出循环,有条件跳出循环,当条件表达式不成立时,继续执行当条件表达式不成立时,继续执行循环,否则跳出循环。循环,否则跳出循环。第33页/共96页第三十三页,共97页。34 【例6.86.8】用EXITEXIT语句(yj)(yj)实现两个数组的比较。 PROCESSPROCESS ( ( X, YX, Y ) ) BEGINBEGIN Z Z =“00”“00”; FORFOR n n ININ 7 7 DOWNTODOWNTO

35、 0 0 LOOPLOOP IFIF ( ( X(X( n n ) )= Y(Y( n n ) ) THENTHEN NEXTNEXT; ELSIFELSIF ( ( X(X( n n ) ) Y(Y( n n ) ) ) ) THENTHEN Z Z =“01”“01”; EXITEXIT; ELSEELSE Z Z YXY时,Z=10Z=10;当XYXY时,Z=01Z=01。 第34页/共96页第三十四页,共97页。35 【例6.96.9】用EXIT_WHENEXIT_WHEN语句实现(shxin)(shxin)两个数组的比较。 PROCESSPROCESS ( ( X, YX, Y )

36、) BEGINBEGIN Z Z =“00”“00”; FORFOR n n ININ 7 7 DOWNTODOWNTO 0 0 LOOPLOOP NEXT WHENNEXT WHEN ( ( X(X( n n ) ) = Y(Y( n n ); Z Z =“01”“01”; EXIT WHENEXIT WHEN ( ( X(X( n n ) ) Y(Y( n n ); Z Z =“10”“10”; EXITEXIT; END LOOPEND LOOP; END PROCESSEND PROCESS;第35页/共96页第三十五页,共97页。36 等待(dngdi)(dngdi)(WAITWAI

37、T)语句在进程或过程中使用,用于程序的暂停和等待(dngdi)(dngdi)。 3. 等待(dngdi)语句 格式:格式:WAITWAIT ONON 敏感信号表敏感信号表 UNTILUNTIL 条件表达式条件表达式 FORFOR 时间表达式时间表达式; 当执行到WAITWAIT语句时,程序执行被暂停,直到满足此语句设置的等待结束条件后,重新执行程序。 第36页/共96页第三十六页,共97页。37 根据可选项,WAITWAIT语句有四种(s zhn)(s zhn)格式: 格式格式(g shi)1(g shi)1: WAIT WAIT 功能:功能:永远处于等待状态永远处于等待状态 格式格式2 2:

38、 WAIT ON 敏感信号表;敏感信号表; 功能:功能:程序进入等待状态,直至敏感信号表中的任一信程序进入等待状态,直至敏感信号表中的任一信号发生变化时,结束等待重新执行程序。号发生变化时,结束等待重新执行程序。 例如:例如: SIGNALSIGNAL a a,b b: STDSTD LOGICLOGIC; PROCESSPROCESS WAIT ONWAIT ON a a,b b; END PROCESSEND PROCESS;- 暂停程序的执行,直到暂停程序的执行,直到a a或或b b发生发生 变化才重新启动。变化才重新启动。 3 3. 等待语句 第37页/共96页第三十七页,共97页。3

39、8 格式格式(g shi)3(g shi)3: WAIT UNTIL WAIT UNTIL 条件表达式;条件表达式; 功能:程序功能:程序(chngx)(chngx)进入等待状态,直至表达式中的敏感信进入等待状态,直至表达式中的敏感信号发生变化,而且满足表达式设置的条件时,结束等号发生变化,而且满足表达式设置的条件时,结束等待重新执行程序待重新执行程序(chngx)(chngx)。 例如:例如: WAIT UNTILWAIT UNTIL clk clk =11ANDAND clk clkEVENTEVENT; z z = x x OROR y y; 3 3. 等待语句 执行到执行到WAITWA

40、IT语句后,暂停程序的执行,直到语句后,暂停程序的执行,直到clkclk的上升沿到来的上升沿到来时,才恢复程序的运行,执行其后的赋值语句。时,才恢复程序的运行,执行其后的赋值语句。 第38页/共96页第三十八页,共97页。39 格式格式(g shi)4(g shi)4: WAIT FOR WAIT FOR 时间表达式;时间表达式; 功能:从执行到当前的功能:从执行到当前的WAITWAIT语句开始,在此时间段内,程序处语句开始,在此时间段内,程序处于等待于等待(dngdi)(dngdi)状态,当超过时间表达式给定的时间状态,当超过时间表达式给定的时间后,程序自动恢复执行。后,程序自动恢复执行。

41、例如:例如: WAIT FORWAIT FOR 25ns 25ns; z z y y y y y y NULLNULL; END CASEEND CASE; - 排除一些其他不用的条件排除一些其他不用的条件 第40页/共96页第四十页,共97页。41 课堂练习(The second)6.1 简述顺序语句与并行语句的区别?6.2 简述VHDL的六类基本顺序语句?6.3 写出IF的三种格式(g shi)及每种格式(g shi)的功能?6.4 写出LOOP的三种格式(g shi)及每种格式(g shi)的功能?6.5 写出NEXT语句的三种格式(g shi)及每种格式(g shi)的功能?6.6 写

42、出EXIT语句的三种格式(g shi)及每种格式(g shi)的功能?6.7 写出WATE语句的四种格式(g shi)及每种格式(g shi)的功能?第41页/共96页第四十一页,共97页。42 6.2 VHDL语言的并行(bngxng)描述语句 并行语句又称并发语句,是最具有VHDLVHDL特色(ts)(ts)的语句结构。 并行语句具有多种语言格式,各并行语句在结构体中的执行是同步进行的,或者说是并发运行的,其执行方式与书写的顺序无关。 同一结构中的各并行语句之间可以是相互独立的、不相关的,也可以进行信息传递。 在并行语句内部可以嵌套其他语句,嵌套的语句可以并行执行,也可以顺序执行。第42页

43、/共96页第四十二页,共97页。43 6.2 VHDL语言(yyn)的并行描述语句 在VHDLVHDL语言中,并行语句主要有六种: 进程(jnchng)(jnchng)语句 并行信号赋值语句 块语句 元件例化语句 生成语句 断言语句第43页/共96页第四十三页,共97页。44 进程(PROCESSPROCESS)语句是在结构体中用来(yn li)(yn li)描述特定电路功能的程序模块,它提供了一种用顺序语句描述电路逻辑功能的方法。 1. 进程(jnchng)语句 一个结构体中可以有多个并行运行的进程结构,而每个进程结构的内部由一组顺序语句组成。 进程语句结构具有并行执行和顺序处理的双重特性。

44、 第44页/共96页第四十四页,共97页。45第45页/共96页第四十五页,共97页。46 (1 1)进程(jnchng)(jnchng)语句的结构 进程标号进程标号: PROCESS (: PROCESS (敏感信号参数表敏感信号参数表) IS) IS 进程说明进程说明(shumng)(shumng)部分部分 BEGIN BEGIN顺序描述语句顺序描述语句 END PROCESS END PROCESS 进程标号进程标号 ; 格式:格式: 当敏感信号表中的某个信号发生变化时,立即启动进程语句,将进程中的顺序语句按顺序循环执行,直到敏感信号稳定不变为止。 第46页/共96页第四十六页,共97页

45、。47 (2 2)进程语句(yj)(yj)的组成 进程(jnchng)(jnchng)说明部分 进程语句的结构由三部分组成,即进程说明部分、顺序描述语句部分和敏感信号参数表。 用于定义该进程所需要的局部数据环境。如:数据类型、常数、属性、子程序等。 注意:不能在进程内部定义信号和共享变量,信号只能在结构体说明中定义。 第47页/共96页第四十七页,共97页。48 (2 2)进程语句(yj)(yj)的组成 顺序描述(mio sh)(mio sh)语句部分 是一段顺序执行语句,用于描述该进程的行为。 信号赋值语句:信号赋值语句:在进程中将计算或处理的结果赋值在进程中将计算或处理的结果赋值给信号。给

46、信号。 变量赋值语句:变量赋值语句:在进程中以变量的形式存储计算的在进程中以变量的形式存储计算的中间值。中间值。 子程序调用语句:子程序调用语句:对已定义的过程和函数进行调用,对已定义的过程和函数进行调用,并参与计算。并参与计算。第48页/共96页第四十八页,共97页。49 (2 2)进程(jnchng)(jnchng)语句的组成 顺序描述(mio sh)(mio sh)语句部分 进程启动语句:进程启动语句:当当PROCESSPROCESS语句未列出任何敏感信号语句未列出任何敏感信号时,进程的启动可通过时,进程的启动可通过WAITWAIT语句来语句来实现。实现。 顺序描述语句:顺序描述语句:包

47、括包括IFIF语句、语句、CASECASE语句、语句、LOOPLOOP语语句和句和NULLNULL语句。语句。 进程跳出语句:进程跳出语句:包括包括NEXTNEXT语句和语句和EXITEXIT语句。语句。 敏感信号参数表敏感信号参数表 用于启动本进程可读入的信号名。用于启动本进程可读入的信号名。第49页/共96页第四十九页,共97页。50 PROCESS 组成组成(z chn)PROCESS语句语句(yj)结结构构进程进程(jnchng)说明说明顺序描述语句顺序描述语句敏感信号参数表敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句第50页/共96页第五十

48、页,共97页。51 【例6.10】用进程语句描述(mio sh)异步清零计数器。 异步清零方式与时钟信号clkclk无关(wgun)(wgun),当清零端clr=0clr=0时,计数状态Q=0Q=0;当clr=1clr=1时,计数器为计数状态。 PROCESSPROCESS ( ( clk, clrclk, clr ) ) BEGINBEGIN IFIF clr clr =0 0 THENTHEN Q Q =00 ; ELSIF ELSIF ( ( clkclk =11ANDAND clkclkEVENTEVENT ) ) THENTHEN Q Q = Q Q + + 1 1; END IFE

49、ND IF; END PROCESSEND PROCESS;第51页/共96页第五十一页,共97页。52 【例6.10】用进程语句描述(mio sh)异步清零计数器。 若计数器采用同步清零,则敏感表中可无clrclr信号,此时进程(jnchng)(jnchng)如下: PROCESSPROCESS ( ( clk)clk) BEGINBEGIN IFIF ( ( clkclk =11ANDAND clkclkEVENTEVENT ) ) THENTHEN IF IF clrclr =0 0 THENTHEN Q Q= X“00”X“00”; ELSE ELSE Q Q = Q Q + + 1

50、1; END IFEND IF; END IF END IF; END PROCESSEND PROCESS;第52页/共96页第五十二页,共97页。53(1) 进程说明部分主要定义(dngy)一些局部量,可包括数据类型、常数、属性、子程序等。但需注意,在进程说明部分中不允许定义(dngy)信号和共享变量。(2) 顺序描述语句部分可分为赋值语句、进程启动语句、子程序调用(dioyng)语句、顺序描述语句和进程跳出语句等。(3)为启动进程,在进程中必须包含有一个显式的敏感信号量表或者包含一个WAIT语句;敏感信号表应当紧跟在PROCESS之后,含有敏感信号表的进程语句中不允许(ynx)再显式出现

51、WAIT语句。说明第53页/共96页第五十三页,共97页。541. PROCESS1. PROCESS为一无限为一无限(wxin)(wxin)循环语句循环语句2. PROCESS2. PROCESS语句具有顺序语句具有顺序(shnx)/(shnx)/并行运行双重性并行运行双重性3. 3. 进程必须由敏感信号进程必须由敏感信号(xnho)(xnho)的变化来启动的变化来启动4. 4. 信号是多个进程间的通信线信号是多个进程间的通信线PROCESS语句特点5. 5. 一个进程中只允许描述对应于一个时钟信号的同步一个进程中只允许描述对应于一个时钟信号的同步时序逻辑时序逻辑 第54页/共96页第五十四

52、页,共97页。55 并行信号赋值语句是将一个数据或一个表达式的运算结果送给一个数据对象, ,其赋值目标必须是信号而不能是变量。 信号赋值语句可以位于进程语句中,也可以在进程语句之外。若出现在进程语句结构内,则属于(shy)(shy)顺序语句,否则为并行信号赋值语句。 2. 并行(bngxng)信号赋值语句 并行信号赋值语句有三种形式:并行信号赋值语句有三种形式: 简单信号赋值语句简单信号赋值语句 条件信号赋值语句条件信号赋值语句 选择信号赋值语句选择信号赋值语句 第55页/共96页第五十五页,共97页。56 (1 1)简单(jindn)(jindn)信号赋值语句 是VHDLVHDL并行语句结构

53、中最基本(jbn)(jbn)的单元。 格式:格式: 赋值目标赋值目标=表达式;表达式; 规则:规则: 赋值目标必须是信号;赋值目标必须是信号; 赋值目标的数据类型必须与表达式数据类赋值目标的数据类型必须与表达式数据类型一致。型一致。 例如:例如: OUT_1OUT_1 = B B ANDAND C C; 第56页/共96页第五十六页,共97页。57 (2 2)条件(tiojin)(tiojin)信号赋值语句 该语句与IFIF语句相类似,根据不同的赋值条件,选择(xunz)(xunz)表达式中的值赋给赋值目标。 赋值目标赋值目标 = 表达式表达式1 WHEN 赋值条件赋值条件1 ELSE 表达式

54、表达式2 WHEN 赋值条件赋值条件2 ELSE 表达式表达式n; 格式:格式:第57页/共96页第五十七页,共97页。58 【例6.11】用条件(tiojin)赋值语句实现四选一数据选择器。 ARCHITECTUREARCHITECTURE example5 example5 OFOF mux41 mux41 IS IS SIGNALSIGNAL s: STD_LOGIC_VECTOR( s: STD_LOGIC_VECTOR( 1 1 DOWNTODOWNTO 0 0 ) ); BEGINBEGIN s s = s1&s0s1&s0; y y= d0 d0 WHENWHEN

55、 s s =“00” “00” ELSEELSE d1 d1 WHENWHEN s s =“01” “01” ELSEELSE d2 d2 WHENWHEN s s =“10” “10” ELSEELSE d3 d3; ENDEND example5 example5; - - 当s = 00s = 00时,y = d0y = d0 - - 当s = 01s = 01时,y = d1y = d1 - - 当s = 10s = 10时,y = d2y = d2 - - 当s s取其他(qt)(qt)值时,y = y = d3d3第58页/共96页第五十八页,共97页。59 (3 3)选择(xun

56、z)(xunz)信号赋值语句 与CASECASE语句相类似,以选择表达式的不同取值为选择条件(tiojin)(tiojin),将多个表达式的值赋给赋值目标。 WITH 选择表达式选择表达式 SELECT 赋值目标赋值目标 = 表达式表达式1 1 WHEN 选择值选择值1, 1, 表达式表达式2 2 WHEN 选择值选择值2, 2, 表达式表达式n n WHEN 选择值选择值n n; 格式:格式: 该语句对子句中的“选择值”进行选择,当子句中“选择值”与“选择表达式”的值相同时,则将子句中的“表达式”的值赋给赋值目标。 规则: 该语句不允许有选择值重叠现象; 该语句不允许选择值涵盖不全的情况;

57、每个子句以“,”,”号结束,最后一个子句以“;”;”结束。第59页/共96页第五十九页,共97页。60 用选择(xunz)信号赋值语句实现四选一数据选择(xunz)器。 ARCHITECTUREARCHITECTURE example6 example6 OFOF mux41 mux41 IS IS SIGNALSIGNAL s: STD_LOGIC_VECTOR( s: STD_LOGIC_VECTOR( 1 1 DOWNTODOWNTO 0 0 ) ); BEGINBEGIN s s = s1&s0s1&s0; WITHWITH s s SELECTSELECT y y =

58、 d0 d0 WHENWHEN “00” “00”, d1 d1 WHENWHEN “01” “01”, d2 d2 WHENWHEN “10” “10”, d3 d3 WHENWHEN “11” “11”, Z Z WHEN OTHERSWHEN OTHERS; END END example6 example6; - - 当s = 00s = 00时,y = d0y = d0 - - 当s = 01s = 01时,y = d1y = d1 - - 当s = 10s = 10时,y = d2y = d2 - - 当s = 11s = 11时,y = d3y = d3 - - 当s s取其他(

59、qt)(qt)值时,y y为高阻第60页/共96页第六十页,共97页。61 块(BLOCKBLOCK)语句可以将一些实现某一特定功能的并行语句组合在一起,其主要目的是利用多个块语句结构将一个复杂的结构体划分成几个不同功能的模块,使复杂的结构体结构分明、功能明确,使程序的编排更加清晰、更有层次,改善并行语句的结构和可读性,便于(biny)(biny)程序的编写、调试和查错。 3. 块语句(yj) 第61页/共96页第六十一页,共97页。62 (1 1)块语句(yj)(yj)的格式 块语句是将结构(jigu)(jigu)体中并行语句进行组合的一种方法。 块标号块标号 : BLOCK (块保护表达式

60、)块保护表达式) 接口说明接口说明; 类属说明类属说明; BEGIN 并行语句并行语句; END BLOCK 块标号块标号 ; 格式:格式:保护表达式 是可选项,它是一个布尔表达式。保护表达式的作用是:只有当其为真时,该块中的语句才被启动执行;否则,该块中的语句不被执行。BLOCK语句 中所描述的各个语句是可以并行执行的,它和书写顺序无关。第62页/共96页第六十二页,共97页。63 (2 2)块语句(yj)(yj)的应用 利用块语句可以将结构体中的并行语句划分成多个并行方式的子块,每一个子块都是一个独立的设计(shj)(shj)实体,具有自己的类属参数和界面端口,以及与外部环境的衔接描述。 块语句还可以实现嵌套,内层的块语句可以使用外层块语句所定义

温馨提示

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

评论

0/150

提交评论