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

下载本文档

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

文档简介

1、会计学1VHDL语言语言(yyn)的描述语句的描述语句第一页,共96页。2VHDL有如下六类基本有如下六类基本(jbn)顺序语句:顺序语句:信号赋值语句信号赋值语句(yj)变量赋值语句变量赋值语句(yj)1、赋值语句、赋值语句(yj)2、流程控制语句、流程控制语句3、等待语句、等待语句4、子程序调用语句、子程序调用语句5、返回语句、返回语句6、空操作语句、空操作语句IF语句语句CASE语句语句LOOP语句语句NEXT语句语句EXIT语句语句RETURN语句语句NULL语句语句WAIT语句语句过程调用过程调用函数调用函数调用第1页/共96页第二页,共96页。3 1. 赋值语句(yj) 第2页/共

2、96页第三页,共96页。4 (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 X- - 表达式赋值,将表达式赋值,将B

3、B和和C C的与逻辑赋给目标信号的与逻辑赋给目标信号A A第3页/共96页第四页,共96页。5 (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 ) ); -整体赋值,数组整体赋值,数组“1011”1011”赋值赋值x x

4、-部分赋值部分赋值, ,“01”01”赋值赋值y y的部分位的部分位 - -位置关联赋值位置关联赋值,x,x的部分位的部分位赋值赋值y y的部分位的部分位 第4页/共96页第五页,共96页。6 (2 2)变量)变量(binling)(binling)赋值语句赋值语句 格式:格式: 目标变量名目标变量名: := 赋值源;赋值源; 该语句是将赋值源的当前值赋给目标变量。要求赋该语句是将赋值源的当前值赋给目标变量。要求赋值号两边变量的类型和长度应该一致。值号两边变量的类型和长度应该一致。 例如:例如: A A : := 5.05.0; Y Y : :=00; X X := Y Y;-将数值将数值5.

5、05.0赋值给变量赋值给变量A A -变量变量Y Y被赋值为被赋值为00 -将变量将变量Y Y的当前值赋给目标变量的当前值赋给目标变量X X 第5页/共96页第六页,共96页。7 (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

6、x ( ( 1 1 TOTO 2 2 ) ); -整体赋值,数组整体赋值,数组“1011”1011”赋值赋值x x -部分赋值部分赋值, ,“10”10”赋值赋值y y的部分位的部分位 - -位置关联赋值位置关联赋值,x,x的部分位的部分位赋值赋值y y的部分位的部分位 第6页/共96页第七页,共96页。8A 变量的说明和赋值限定变量的说明和赋值限定(xindng)在顺序区域内在顺序区域内,即只能在进程或子程序中使用,它无法传递到进,即只能在进程或子程序中使用,它无法传递到进程之外。程之外。B 信号赋值可以在顺序区域内作顺序语句,也可以信号赋值可以在顺序区域内作顺序语句,也可以在结构体中当作并

7、行语句使用。在结构体中当作并行语句使用。变量赋值语句与信号变量赋值语句与信号(xnho)赋值语句区别赋值语句区别第7页/共96页第八页,共96页。9 2. 流程控制(kngzh)语句 流程控制语句共有五种:流程控制语句共有五种: IFIF语句语句 CASECASE语句语句 LOOPLOOP语句语句 NEXTNEXT语句语句 EXITEXIT语句语句 第8页/共96页第九页,共96页。10 (1 1)IFIF语句语句(yj) (yj) 单选择控制单选择控制 二选择控制二选择控制 多选择控制多选择控制 第9页/共96页第十页,共96页。11 IF IF语句的单选择语句的单选择(xunz)(xunz

8、)控制控制 格式:格式: IF IF 条件句条件句 THEN THEN 顺序顺序(shnx)(shnx)语句;语句; END IF END IF; 例如:例如: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页第十一页,共96页。12 IF IF语句语句(yj)(yj)的二选择控制的二选择控制 格式格式(g shi)(g shi): IF IF 条件句条件句 THEN THEN 顺

9、序语句;顺序语句; ELSE ELSE 顺序语句;顺序语句; END IF END IF; 第11页/共96页第十二页,共96页。13 设数据输入设数据输入(shr)(shr)信号为信号为d1d1和和d0d0,选择控制信,选择控制信号为号为s s,数据输出信号为,数据输出信号为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 = d

10、0d0; ELSEELSE y y = d1d1; END IFEND IF; END PROCESSEND PROCESS; END END example1 example1;第12页/共96页第十三页,共96页。14 IF IF语句的多选择语句的多选择(xunz)(xunz)控制控制 格式:格式: IF IF 条件句条件句 THEN THEN 顺序顺序(shnx)(shnx)语句;语句; ELSIF ELSIF 条件句条件句 THEN THEN 顺序顺序(shnx)(shnx)语句;语句; END IF END IF; 第13页/共96页第十四页,共96页。15 设数据设数据(shj)(

11、shj)输入信号为输入信号为d3d3、d2d2、d1d1、d0d0,选择控制,选择控制信号为信号为s=s1, s0 s=s1, s0 ,数据,数据(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

12、 =“01”) “01”) THENTHEN y y = d1d1; ELSIF ELSIF ( ( s s =“10”) “10”) THENTHEN y y = d2d2; ELSE ELSE y y 顺序语句;顺序语句; WHEN 选择值选择值 = 顺序语句;顺序语句; WHEN OTHERS = 顺序语句;顺序语句; END CASE; 说明:先计算表达式的值,然后根据条件句中的选说明:先计算表达式的值,然后根据条件句中的选择值执行相对应的顺序语句。择值执行相对应的顺序语句。 注意:条件句中的注意:条件句中的“=”不是操作符,它相当于不是操作符,它相当于THENTHEN作用。作用。 第

13、15页/共96页第十六页,共96页。17 (2 2)CASECASE语句语句(yj) (yj) 选择值可以有四种不同的表达方式:选择值可以有四种不同的表达方式: 单个普通数值,如:单个普通数值,如:5 5; 数值选择范围,如:(数值选择范围,如:(1 TO 3)1 TO 3); 并列值,如:并列值,如:4 4 | 6 6,表示取值为,表示取值为4 4或或6 6; 混合方式,即以上三种方式的混合。混合方式,即以上三种方式的混合。第16页/共96页第十七页,共96页。18 (2 2)CASECASE语句语句(yj) (yj) 选择值必须在表达式的取值范围内;选择值必须在表达式的取值范围内; CAS

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

15、第17页/共96页第十八页,共96页。19 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 example3;第18页/共96页第十九页,共96页。20 (3 3)LOOPLOOP语句语

16、句(yj) (yj) LOOPLOOP语句有三种格式:语句有三种格式: FOR_LOOPFOR_LOOP语句语句 WHILE_LOOPWHILE_LOOP语句语句 单个单个LOOPLOOP语句语句第19页/共96页第二十页,共96页。21 FOR_LOOP FOR_LOOP语句语句(yj) (yj) 循环标号循环标号: FOR 循环变量循环变量 IN 初值初值 TO 终值终值 LOOP 顺序语句;顺序语句; END LOOP 循环标号循环标号; 递增格式:递增格式: 递减格式:递减格式:循环标号循环标号: FOR 循环变量循环变量 IN 初值初值 DOWNTO 终值终值 LOOP 顺序语句;顺

17、序语句; END LOOP 循环标号循环标号; 第20页/共96页第二十一页,共96页。22 FOR_LOOP FOR_LOOP语句语句(yj) (yj) 循环标号为任选项,循环标号为任选项,用来给循环语句定位。用来给循环语句定位。 循环变量的初值和终值决定了循环次数(取整数)。循环变量的初值和终值决定了循环次数(取整数)。 循环次数:循环次数: 循环次数循环次数 = | |终值终值- -初值初值|+1|+1 第21页/共96页第二十二页,共96页。23 输入信号输入信号X X是一个长度为是一个长度为8 8位的标准逻辑矢量。位的标准逻辑矢量。当当X X中中1 1的个数为奇数时,输出的个数为奇数

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

19、 ISIS PORTPORT(X: X: ININ STD_LOGIC_VECTOR STD_LOGIC_VECTOR(7 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; BEGIN

20、BEGIN temp temp :=00; FORFOR n n ININ 7 7 DOWNTODOWNTO 0 0 LOOPLOOP temp temp := temp temp XORXOR X( X( n n ) ); END LOOPEND LOOP; Y Y = temptemp; END PROCESSEND PROCESS; ENDEND example4 example4;第23页/共96页第二十四页,共96页。25 WHILE_LOOP WHILE_LOOP语句语句(yj) (yj) 循环标号循环标号: : WHILE 循环控制条件循环控制条件 LOOP 顺序语句;顺序语句;

21、 END LOOP 循环标号循环标号 ; 格式:格式:说明:说明:若循环控制条件为若循环控制条件为“真真”, ,则进行循环执行则进行循环执行顺序语句;顺序语句; 若循环控制条件为若循环控制条件为“假假”,则结束循环。,则结束循环。第24页/共96页第二十五页,共96页。26 ARCHITECTUREARCHITECTURE example5 example5 OFOF loop2 loop2 ISIS BEGINBEGIN PROCESS PROCESS ( ( X X ) ) VARIABLEVARIABLE temp: STD_LOGIC temp: STD_LOGIC; VARIABLE

22、VARIABLE 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页第二十七页,共96页。28 (4 4)NEXTNEXT语句语句(yj) (yj) NE

23、XT 循环标号循环标号 WHEN 条件表达式条件表达式 ; 格式:格式:第27页/共96页第二十八页,共96页。29 (4 4)NEXTNEXT语句语句(yj) (yj) 格式格式1 1: NEXT 功能:功能:无条件结束本次循环,无条件结束本次循环,跳回到循环体的开始位置,执跳回到循环体的开始位置,执行下一次循环。行下一次循环。 格式格式2 2: NEXT 循环标号循环标号 功能:功能:无条件结束本次循环,无条件结束本次循环,从循环标号规定的位置,执行从循环标号规定的位置,执行下一次循环。下一次循环。 格式格式3 3: NEXT WHEN 条件表达式条件表达式 功能:功能:有条件结束本次循环

24、,有条件结束本次循环,当条件表达式满足时,结当条件表达式满足时,结束本次循环,否则继续循环。束本次循环,否则继续循环。第28页/共96页第二十九页,共96页。30 ARCHITECTUREARCHITECTURE 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 LOOPLOO

25、P y( y( i i ) ) =00; NEXTNEXT WHENWHEN s( s( i i ) ) =11; y(y( i i ) ) =11; END LOOPEND LOOP L1 L1; END PROCESSEND PROCESS; ENDEND example6 example6;- - 若若s( i )=1s( i )=1成立,成立, 终止本次循环终止本次循环, ,返回返回(fnhu)(fnhu)到到L1L1 否则否则, ,继续本次循环。继续本次循环。 - - 返回到返回到L1L1 第29页/共96页第三十页,共96页。31 LIBRARYLIBRARY IEEE IEEE;

26、 USE USE IEEE.STD_LOGIC_1164. IEEE.STD_LOGIC_1164.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; ARCHITECTUREARCHITE

27、CTURE example7 example7 OFOF NEXT_WHEN2 NEXT_WHEN2 ISIS BEGINBEGIN PROCESS PROCESS ( ( d d ) ) VARIABLE VARIABLE i,k,j: INTEGER i,k,j: INTEGER; VARIABLE VARIABLE tmp: STD_LOGIC tmp: STD_LOGIC; 四组八位数据四组八位数据(shj)(shj)由由d0.31d0.31输入,内循环完成各组数据输入,内循环完成各组数据(shj)(shj)的奇校验,外循环确定校验的组数,校验结果存放在输出的奇校验,外循环确定校验的组

28、数,校验结果存放在输出y0.3y0.3中。当某八位数据中。当某八位数据(shj)(shj)中中1 1的个数为奇数时,所对应的输出位的个数为奇数时,所对应的输出位yi=1yi=1,否则,否则,yi=0yi=0。 第30页/共96页第三十一页,共96页。32 BEGIN BEGIN 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 XORX

29、OR 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 LOOPEND LOOP L2 L2; NEXTNEXT L1 L1; END LOOP END LOOP L1 L1; END PROCESSEND PROCESS; ENDEND example7 example7;内循环内循环(xnhun) 外循环外循环(xnhun) 在内循环中,当在内循环中,当j j 7 7时,继续执

30、行内循时,继续执行内循环;环; 当当j j = 7 7时,终止内循环,跳转到时,终止内循环,跳转到L1L1处,处,执行一次外循环。执行一次外循环。第31页/共96页第三十二页,共96页。33 (5 5)EXITEXIT语句语句(yj) (yj) EXIT 循环标号循环标号 WHEN 条件表达式条件表达式 ; 格式:格式:第32页/共96页第三十三页,共96页。34 (5 5)EXITEXIT语句语句(yj) (yj) 格式格式1 1: EXIT 功能:功能:无条件跳出循环无条件跳出循环, ,从从END LOOPEND LOOP下面的语句开始执行。下面的语句开始执行。 格式格式2 2: EXIT

31、 循环标号循环标号 功能:功能:无条件跳出循环,从循环标号规定的位置开始执行循环体外无条件跳出循环,从循环标号规定的位置开始执行循环体外的语句。的语句。 格式格式3 3: EXIT WHEN 条件表达式条件表达式 功能:功能:有条件跳出循环,有条件跳出循环,当条件表达式不成立时,继续执行循当条件表达式不成立时,继续执行循环,否则跳出循环。环,否则跳出循环。第33页/共96页第三十四页,共96页。35 PROCESSPROCESS ( ( X, YX, Y ) ) BEGINBEGIN Z Z =“00”“00”; FORFOR n n ININ 7 7 DOWNTODOWNTO 0 0 LOO

32、PLOOP 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页第三十五页,共96页。36 PROCESSPROCESS ( ( X, YX, Y ) ) BEGINBEGIN Z Z =“00”“00”; FORFOR n n ININ 7 7 DOWNTODOW

33、NTO 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页第三十六页,共96页。37 3. 等待(dngdi)语句 格式:格式:WAITWAIT ONON 敏感信号表敏感信号表 UNTILUNTIL 条件表达式条件表达式 FORFOR 时间表达式时

34、间表达式; 当执行到当执行到WAITWAIT语句时,程序执行被暂停,直到语句时,程序执行被暂停,直到满足此语句设置的等待结束条件后,重新执行程序满足此语句设置的等待结束条件后,重新执行程序。 第36页/共96页第三十七页,共96页。38 格式格式(g shi)1(g shi)1: WAIT WAIT 功能:功能:永远处于等待状态永远处于等待状态 格式格式2 2: WAIT ON 敏感信号表;敏感信号表; 功能:功能:程序进入等待状态,直至敏感信号表中的任一信程序进入等待状态,直至敏感信号表中的任一信号发生变化时,结束等待重新执行程序。号发生变化时,结束等待重新执行程序。 例如:例如: SIGN

35、ALSIGNAL 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页第三十八页,共96页。39 格式格式(g shi)3(g shi)3: WAIT UNTIL WAIT UNTIL 条件表达条件表达式;式; 功能:程序进入等待状态,直至表达式中的敏感信号发生变化,功能:程序进入等待状态,直至表达式中的敏感信号发生变化

36、,而且而且(r qi)(r qi)满足表达式设置的条件时,结束等待满足表达式设置的条件时,结束等待重新执行程序。重新执行程序。 例如:例如: WAIT UNTILWAIT UNTIL clk clk =11ANDAND clk clkEVENTEVENT; z z = x x OROR y y; 3 3. 等待语句等待语句 执行到执行到WAITWAIT语句后,暂停程序的执行,直到语句后,暂停程序的执行,直到clkclk的上升沿到来时,的上升沿到来时,才恢复程序的运行,执行其后的赋值语句。才恢复程序的运行,执行其后的赋值语句。 第38页/共96页第三十九页,共96页。40 格式格式(g shi)

37、4(g shi)4: WAIT FOR WAIT FOR 时间表达式;时间表达式; 功能:从执行到当前的功能:从执行到当前的WAITWAIT语句开始,在此时间段内,程序语句开始,在此时间段内,程序(chngx)(chngx)处于等待状态,当超过时间表达式给定的时处于等待状态,当超过时间表达式给定的时间后,程序间后,程序(chngx)(chngx)自动恢复执行。自动恢复执行。 例如:例如: WAIT FORWAIT FOR 25ns 25ns; z z y y y y y y NULLNULL; END CASEEND CASE; - 排除一些其他不用的条件排除一些其他不用的条件 第40页/共9

38、6页第四十一页,共96页。42格式的功能?格式的功能?6.7 写出写出WATE语句的四种格式及每语句的四种格式及每种格式的功能?种格式的功能?第41页/共96页第四十二页,共96页。43第42页/共96页第四十三页,共96页。44第43页/共96页第四十四页,共96页。45 1. 进程(jnchng)语句 一个结构体中可以有多个并行运行的进程结构一个结构体中可以有多个并行运行的进程结构,而每个进程结构的内部由一组顺序语句组成。而每个进程结构的内部由一组顺序语句组成。 进程语句结构具有并行执行和顺序处理的双重特性。进程语句结构具有并行执行和顺序处理的双重特性。 第44页/共96页第四十五页,共9

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

40、行,直到敏感信号稳定不变为止。 第46页/共96页第四十七页,共96页。48 (2 2)进程)进程(jnchng)(jnchng)语句的组成语句的组成 进程说明进程说明(shumng)(shumng)部分部分 用于定义该进程所需要的局部数据环境。如:用于定义该进程所需要的局部数据环境。如:数据类型、常数、属性、子程序等。数据类型、常数、属性、子程序等。 注意:注意:不能在进程内部定义信号和共享变量,信不能在进程内部定义信号和共享变量,信号只能在结构体说明中定义。号只能在结构体说明中定义。 第47页/共96页第四十八页,共96页。49 (2 2)进程语句)进程语句(yj)(yj)的组成的组成 顺

41、序描述顺序描述(mio sh)(mio sh)语句部分语句部分 是一段顺序执行语句,用于描述该进程的行为。是一段顺序执行语句,用于描述该进程的行为。 信号赋值语句:信号赋值语句:在进程中将计算或处理的结果赋值给在进程中将计算或处理的结果赋值给信号。信号。 变量赋值语句:变量赋值语句:在进程中以变量的形式存储计算的在进程中以变量的形式存储计算的中间值。中间值。 子程序调用语句:子程序调用语句:对已定义的过程和函数进行调用,并对已定义的过程和函数进行调用,并参与计算。参与计算。第48页/共96页第四十九页,共96页。50 (2 2)进程)进程(jnchng)(jnchng)语句的组成语句的组成 顺

42、序描述语句顺序描述语句(yj)(yj)部分部分 进程启动语句:进程启动语句:当当PROCESSPROCESS语句未列出任何敏感信号时,语句未列出任何敏感信号时,进程的启动可通过进程的启动可通过WAITWAIT语句语句来实现。来实现。 顺序描述语句:顺序描述语句:包括包括IFIF语句、语句、CASECASE语句、语句、LOOPLOOP语句和语句和NULLNULL语句。语句。 进程跳出语句:进程跳出语句:包括包括NEXTNEXT语句和语句和EXITEXIT语句。语句。 敏感信号参数表敏感信号参数表 用于启动本进程可读入的信号名。用于启动本进程可读入的信号名。第49页/共96页第五十页,共96页。5

43、1 PROCESS 组成组成(z chn)PROCESS语句语句(yj)结结构构进程进程(jnchng)说明说明顺序描述语句顺序描述语句敏感信号参数表敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句第50页/共96页第五十一页,共96页。52 异步清零方式与时钟信号异步清零方式与时钟信号clkclk无关,当清零端无关,当清零端clr=0clr=0时,计数时,计数(j sh)(j sh)状态状态Q=0Q=0;当;当clr=1clr=1时,计数时,计数(j sh)(j sh)器为计数器为计数(j sh)(j sh)状态。状态。 PROCESSPROCESS

44、( ( 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 IFEND IF; END PROCESSEND PROCESS;第51页/共96页第五十二页,共96页。53 若计数器采用若计数器采用(ciyng)(ciyng)同步清零,则敏感表中可无同步清零,则敏感表中可无clrclr信号,此时进程如下:信号,此时进程如下: PROCESSP

45、ROCESS ( ( 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 1; END IFEND IF; END IF END IF; END PROCESSEND PROCESS;第52页/共96页第五十三页,共96页。54(1) 进程说明部分主要进程说明部分主要(zhyo)定义一些局部量,可包括数据类型、常数、属性、子程序等。但需注意,在进程说明部分中

46、不允许定义信号和共享变量。定义一些局部量,可包括数据类型、常数、属性、子程序等。但需注意,在进程说明部分中不允许定义信号和共享变量。(2) 顺序描述顺序描述(mio sh)语句部分可分为赋值语句、进程启动语句、子程序调用语句、顺序描述语句部分可分为赋值语句、进程启动语句、子程序调用语句、顺序描述(mio sh)语句和进程跳出语句等。语句和进程跳出语句等。(3)为启动进程,在进程中必须包含有一个显式的敏感信号量表或者包含一个为启动进程,在进程中必须包含有一个显式的敏感信号量表或者包含一个WAIT语句;敏感信号表应当紧跟在语句;敏感信号表应当紧跟在PROCESS之后之后(zhhu),含有敏感信号表

47、的进程语句中不允许再显式出现,含有敏感信号表的进程语句中不允许再显式出现WAIT语句。语句。说明说明第53页/共96页第五十四页,共96页。551. PROCESS1. PROCESS为一无限循环为一无限循环(xnhun)(xnhun)语句语句2. PROCESS2. PROCESS语句具有语句具有(jyu)(jyu)顺序顺序/ /并行运行双重性并行运行双重性3. 3. 进程进程(jnchng)(jnchng)必须由敏感信号的变化来必须由敏感信号的变化来启动启动4. 4. 信号是多个进程间的通信线信号是多个进程间的通信线PROCESS语句特点语句特点5. 5. 一个进程中只允许描述对应于一个时

48、钟信号的同一个进程中只允许描述对应于一个时钟信号的同步时序逻辑步时序逻辑 第54页/共96页第五十五页,共96页。56 2. 并行(bngxng)信号赋值语句 并行信号赋值语句有三种形式:并行信号赋值语句有三种形式: 简单信号赋值语句简单信号赋值语句 条件信号赋值语句条件信号赋值语句 选择信号赋值语句选择信号赋值语句 第55页/共96页第五十六页,共96页。57 (1 1)简单)简单(jindn)(jindn)信号赋值语句信号赋值语句 格式:格式: 赋值目标赋值目标=表达式;表达式; 规则:规则: 赋值目标必须是信号;赋值目标必须是信号; 赋值目标的数据类型必须与表达式数据赋值目标的数据类型必

49、须与表达式数据类型一致。类型一致。 例如:例如: OUT_1OUT_1 = B B ANDAND C C; 第56页/共96页第五十七页,共96页。58 (2 2)条件)条件(tiojin)(tiojin)信号赋值语句信号赋值语句 赋值目标赋值目标 = 表达式表达式1 WHEN 赋值条件赋值条件1 ELSE 表达式表达式2 WHEN 赋值条件赋值条件2 ELSE 表达式表达式n; 格式:格式:第57页/共96页第五十八页,共96页。59 ARCHITECTUREARCHITECTURE example5 example5 OFOF mux41 mux41 IS IS SIGNALSIGNAL

50、s: STD_LOGIC_VECTOR( s: STD_LOGIC_VECTOR( 1 1 DOWNTODOWNTO 0 0 ) ); BEGINBEGIN s s = s1&s0s1&s0; y y= d0 d0 WHENWHEN 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 - - 当

51、当s = 01s = 01时,时,y = d1y = d1 - - 当当s = 10s = 10时,时,y = d2y = d2 - - 当当s s取其他取其他(qt)(qt)值时,值时,y = d3y = d3第58页/共96页第五十九页,共96页。60 (3 3)选择)选择(xunz)(xunz)信号赋值语句信号赋值语句 WITH 选择表达式选择表达式 SELECT 赋值目标赋值目标 = 表达式表达式1 1 WHEN 选择值选择值1, 1, 表达式表达式2 2 WHEN 选择值选择值2, 2, 表达式表达式n n WHEN 选择值选择值n n; 格式:格式: 该语句对子句中的该语句对子句中

52、的“选择值选择值”进行选择,当子句中进行选择,当子句中“选择值选择值”与与“选择表达式选择表达式”的值相同时,则将子句中的的值相同时,则将子句中的“表达式表达式”的值赋给赋值目标。的值赋给赋值目标。 规则:规则: 该语句不允许有选择值重叠现象;该语句不允许有选择值重叠现象; 该语句不允许选择值涵盖不全的情况;该语句不允许选择值涵盖不全的情况; 每个子句以每个子句以“,”,”号结束,最后一个子句以号结束,最后一个子句以“;”;”结束。结束。第59页/共96页第六十页,共96页。61 ARCHITECTUREARCHITECTURE example6 example6 OFOF mux41 mux

53、41 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 = 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 e

54、xample6 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取其他取其他(qt)(qt)值时,值时,y y为高为高阻阻第60页/共96页第六十一页,共96页。62 3. 块语句(yj) 第61页/共96页第六十二页,共96页。63 (1 1)块语句)块语句(yj)(yj)的格式的格式 块标号块标号 : BLOCK (块保护表

55、达式)块保护表达式) 接口说明接口说明; 类属说明类属说明; BEGIN 并行语句并行语句; END BLOCK 块标号块标号 ; 格式:格式:保护表达式保护表达式 是可选项,它是一个布尔表达式。保护表达式的作用是:只有当其为真时,该块中的语句才被启动执行;否则,该块中的语句不被执行。是可选项,它是一个布尔表达式。保护表达式的作用是:只有当其为真时,该块中的语句才被启动执行;否则,该块中的语句不被执行。BLOCK语句语句 中所描述的各个语句是可以并行执行的,它和书写顺序无关中所描述的各个语句是可以并行执行的,它和书写顺序无关。第62页/共96页第六十三页,共96页。64 (2 2)块语句)块语

56、句(yj)(yj)的应用的应用 第63页/共96页第六十四页,共96页。65 【例6.12】试用块语句设计一个(y )运算电路,包括一个(y )八位加法器和一个(y )八位减法器。 LIBRARYLIBRARY IEEE IEEE; USEUSE IEEE.STD IEEE.STD LOGICLOGIC 1164.1164.ALLALL; USEUSE IEEE.STD_LOGIC_UNSIGNED. IEEE.STD_LOGIC_UNSIGNED.ALLALL; ENTITY ENTITY add_sub add_sub ISIS PORTPORT(A, B: A, B: ININ STD

57、STD LOGIC_VECTORLOGIC_VECTOR(7 7 DOWNTODOWNTO 0 0);); SUM, SUB:SUM, SUB: OUTOUT STD STD LOGIC_VECTORLOGIC_VECTOR(7 7 DOWNTODOWNTO 0 0);); CO, BO: CO, BO: OUTOUT STD STD LOGICLOGIC);); ENDEND add_sub add_sub;第64页/共96页第六十五页,共96页。66 【例6.12】试用块语句(yj)设计一个运算电路,包括一个八位加法器和一个八位减法器。 ARCHITECTUREARCHITECTURE e

58、xample12 example12 OFOF add_sub add_sub IS IS SIGNALSIGNAL AA,BB,SM,SB: STD_LOGIC_VECTOR(1 AA,BB,SM,SB: STD_LOGIC_VECTOR(1 DOWNTODOWNTO 0) 0); BEGINBEGIN AA AA = 0&A&A; BB BB = 0&B&B; WITHWITH s s SELECTSELECT ADDER: ADDER: BLOCKBLOCK BEGINBEGIN SM SM = AAAA + + BBBB; SUM SUM = SM(SM

59、( 7 7 DOWNTODOWNTO 0 0 ) ); CO CO = SM(SM( 8 8 ) ); END BLOCKEND BLOCK ADDER ADDER; - ADDER - ADDER块行为描述语句块行为描述语句 - - 运算结果运算结果(ji gu)(ji gu)送入送入SUMSUM - - 进位送入进位送入COCO第65页/共96页第六十六页,共96页。67 【例6.12】试用块语句设计一个(y )运算电路,包括一个(y )八位加法器和一个(y )八位减法器。 SUBTRACTER SUBTRACTER: BLOCKBLOCK BEGINBEGIN SB SB = AAAA

60、- - BBBB; SUB SUB = SB(SB( 7 7 DOWNTODOWNTO 0 0 ) ); BO BO = SB(SB( 8 8 ) ); END BLOCKEND BLOCK SUBTRACTER SUBTRACTER; END END example12 example12; - SUBTRACTER - SUBTRACTER块行为描述语句块行为描述语句 - - 运算运算(yn sun)(yn sun)结果送入结果送入SUBSUB - - 进位送入进位送入BOBO第66页/共96页第六十七页,共96页。68 4. 生成(shn chn)语句 第67页/共96页第六十八页,共96页。69 4. 生成(shn chn)语句 格式格式1

温馨提示

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

评论

0/150

提交评论