VHDL语言的描述语句.ppt
《VHDL语言的描述语句.ppt》由会员分享,可在线阅读,更多相关《VHDL语言的描述语句.ppt(96页珍藏版)》请在三一办公上搜索。
1、1,VHDL语言的描述语句,5.6 VHDL语言的描述语句,VHDL语言的描述语句主要用来描述系统的硬件结构、行为功能及信号之间的逻辑关系。分为顺序语句和并行语句两大类。顺序语句是按照语句书写的前后顺序自上而下、一条接一条地按顺序执行,用来定义进程、过程和函数的行为。并行语句又称并发语句,出现在结构体中,各语句并行(同步)执行,与书写的顺序无关。有些语句既可作为并行语句又可作为顺序语句,如赋值语句、过程调用语句和断言语句。,2,VHDL有如下六类基本顺序语句:,信号赋值语句变量赋值语句,1、赋值语句,2、流程控制语句,3、等待语句,4、子程序调用语句,5、返回语句,6、空操作语句,IF语句CA
2、SE语句LOOP语句NEXT语句EXIT语句,RETURN语句,NULL语句,WAIT语句,过程调用函数调用,3,VHDL语言的描述语句,赋值语句的功能是将一个值或一个表达式的运算结果传递给某一数据对象,如信号、变量或由它们组成的数组。通过赋值语句,可以实现设计实体内部的数据传送,以及端口外部数据的读写。赋值语句由赋值源、赋值目标和赋值符构成。要求赋值源和赋值目标的数据类型必须相同。根据赋值对象(赋值目标)的不同,赋值语句可分为信号赋值和变量赋值两种。,1.赋值语句,4,VHDL语言的描述语句,信号赋值具有延时性、全局性,赋值符用“=”表示。,(1)信号赋值语句,格式:目标信号名=赋值源;,该
3、语句是将赋值源的当前值赋给目标信号。要求赋值号两边信号量的类型和长度应该一致。,例如:Y=1;X=Y;A=B AND C;,-字符赋值,信号Y被赋值为1-信号赋值,将信号Y的当前值赋给目标信号X-表达式赋值,将B和C的与逻辑赋给目标信号A,5,VHDL语言的描述语句,对于数组赋值,可采用下列格式:,(1)信号赋值语句,SIGNAL x,y:STD_LOGIC_VECTOR(0 TO 3);x=“1011”;y(0 TO 1)=“01”;y(2 TO 3)=x(1 TO 2);,-整体赋值,数组“1011”赋值x-部分赋值,“01”赋值y的部分位-位置关联赋值,x的部分位赋值y的部分位,6,VH
4、DL语言的描述语句,变量赋值具有即时性、局部性,并且变量赋值只限定在进程和子程序中,赋值符用“:=”表示。,(2)变量赋值语句,格式:目标变量名:=赋值源;,该语句是将赋值源的当前值赋给目标变量。要求赋值号两边变量的类型和长度应该一致。,例如:A:=5.0;Y:=0;X:=Y;,-将数值5.0赋值给变量A-变量Y被赋值为0-将变量Y的当前值赋给目标变量X,7,VHDL语言的描述语句,对于数组赋值,可采用下列格式:,(2)变量赋值语句,VARIBLE x,y:STD_LOGIC_VECTOR(0 TO 3);x:=“1011”;y(0 TO 1):=“10”;y(2 TO 3):=x(1 TO
5、2);,-整体赋值,数组“1011”赋值x-部分赋值,“10”赋值y的部分位-位置关联赋值,x的部分位赋值y的部分位,8,A 变量的说明和赋值限定在顺序区域内,即只能在进程或子程序中使用,它无法传递到进程之外。B 信号赋值可以在顺序区域内作顺序语句,也可以在结构体中当作并行语句使用。,变量赋值语句与信号赋值语句区别,9,VHDL语言的描述语句,流程控制语句通过条件控制来决定是否执行一条或几条语句,或重复执行一条或几条语句,或跳过一条或几条语句。,2.流程控制语句,流程控制语句共有五种:IF语句 CASE语句 LOOP语句 NEXT语句 EXIT语句,10,VHDL语言的描述语句,IF语句是一种
6、条件语句,在IF语句中至少应有一个条件句,该条件句必须由BOOLEAN表达式构成。IF语句依据条件产生的判断结果TRUE或FALSE,有选择地去执行指定的语句。利用IF语句可以实现两个或两个以上的条件分支判断。其格式有三种:,(1)IF语句,单选择控制 二选择控制 多选择控制,11,VHDL语言的描述语句,IF语句的单选择控制,格式:IF 条件句 THEN 顺序语句;END IF;,若条件句的逻辑值为真,则执行THEN后面的顺序语句,否则结束该条件的执行。,例如:IF(x=1)THEN A=B;END IF;,当条件x=1成立时,信号B的值赋给信号A;否则,不执行A=B语句。,12,VHDL语
7、言的描述语句,IF语句的二选择控制,格式:IF 条件句 THEN 顺序语句;ELSE 顺序语句;END IF;,若条件句的逻辑值为真,则执行THEN后面的顺序语句,否则执行ELSE后面的顺序语句。,13,VHDL语言的描述语句,【例6.1】用IF语句描述二选一数据选择器。,设数据输入信号为d1和d0,选择控制信号为s,数据输出信号为y。,ARCHITECTURE example1 OF mux2 IS BEGIN PROCESS(d1,d0,s)BEGIN IF(s=0)THEN y=d0;ELSE y=d1;END IF;END PROCESS;END example1;,14,VHDL语言
8、的描述语句,IF语句的多选择控制,格式:IF 条件句 THEN 顺序语句;ELSIF 条件句 THEN 顺序语句;END IF;,当满足多个条件之一时,执行该条件THEN后面的顺序语句;如果所设条件都不满足,则执行ELSE后面的顺序语句。,15,VHDL语言的描述语句,【例6.2】用IF语句描述四选一数据选择器。,设数据输入信号为d3、d2、d1、d0,选择控制信号为s=s1,s0,数据输出信号为y。,ARCHITECTURE example2 OF mux4 IS BEGIN PROCESS(d3,d2,d1,d0,s)BEGIN IF(s=“00”)THEN y=d0;ELSIF(s=“0
9、1”)THEN y=d1;ELSIF(s=“10”)THEN y=d2;ELSE y=d3;END IF;END PROCESS;END example2;,16,VHDL语言的描述语句,CASE语句根据满足的条件直接选择多项顺序语句中的一项执行。,(2)CASE语句,格式:CASE 表达式 IS WHEN 选择值=顺序语句;WHEN 选择值=顺序语句;WHEN OTHERS=顺序语句;END CASE;,说明:先计算表达式的值,然后根据条件句中的选择值执行相对应的顺序语句。,注意:条件句中的“=”不是操作符,它相当于THEN作用。,17,VHDL语言的描述语句,表达式可以是一个整数类型或枚举
10、类型的值,也可以是由这些数据类型的值构成的数组。,(2)CASE语句,选择值可以有四种不同的表达方式:,单个普通数值,如:5;数值选择范围,如:(1 TO 3);并列值,如:4|6,表示取值为4或6;混合方式,即以上三种方式的混合。,18,VHDL语言的描述语句,使用CASE语句时,应注意以下几点:,(2)CASE语句,选择值必须在表达式的取值范围内;CASE语句中至少要包含一个WHEN语句;每个选择值只能出现一次,不能在其他WHEN语句中重复出现;除非所有选择值能完全覆盖CASE语句中的表达式的取值,否则最后一个条件句的选择值必须用“OTHERS”表示。选择值可以颠倒次序,但OTHERS必须
11、放在最后;“=”不是操作符,相当于THEN语句的作用。,19,VHDL语言的描述语句,【例6.3】用CASE语句描述四选一数据选择器。,ARCHITECTURE example3 OF mux4 IS SIGNAL s:STD_LOGIC_VECTOR(1 DOWNTO 0)BEGIN syyyyy=X;END CASE;END PROCESS;END example3;,20,VHDL语言的描述语句,LOOP语句是一种循环语句,它可以使所包含的一组顺序语句被循环执行,其执行的次数由设定的循环参数决定。,(3)LOOP语句,LOOP语句有三种格式:FOR_LOOP语句 WHILE_LOOP语句
12、 单个LOOP语句,21,VHDL语言的描述语句,FOR_LOOP语句主要用于循环次数已知的循环程序设计。可分为递增方式和递减方式。,FOR_LOOP语句,循环标号:FOR 循环变量 IN 初值 TO 终值 LOOP 顺序语句;END LOOP 循环标号;,递增格式:,递减格式:,循环标号:FOR 循环变量 IN 初值 DOWNTO 终值 LOOP 顺序语句;END LOOP 循环标号;,22,VHDL语言的描述语句,说明:循环从循环变量的“初值”开始,到“终值”结束,每执行一次循环体中的顺序语句后,循环变量的值递增或递减1。,FOR_LOOP语句,循环标号为任选项,用来给循环语句定位。,循环
13、变量的初值和终值决定了循环次数(取整数)。循环次数:循环次数=|终值-初值|+1,23,VHDL语言的描述语句,【例6.4】用FOR_LOOP语句描述八位奇偶校验器。,输入信号X是一个长度为8位的标准逻辑矢量。当X中1的个数为奇数时,输出Y=1,否则,Y=0。算法:用FOR_LOOP语句对X的值逐位进行异或运算。循环次数:由循环变量n控制,记录异或运算的次数。循环变量的初值为0,终值为7。,24,VHDL语言的描述语句,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY loop1 IS PORT(X:IN STD_LOGIC_VECTOR(7 DO
14、WNTO 0);Y:OUT STD_LOGIC);END loop1;ARCHITECTURE example4 OF loop1 IS BEGIN PROCESS(X)VARIABLE temp:STD_LOGIC;BEGIN temp:=0;FOR n IN 7 DOWNTO 0 LOOP temp:=temp XOR X(n);END LOOP;Y=temp;END PROCESS;END example4;,25,VHDL语言的描述语句,WHILE_LOOP语句是一种条件循环语句,用于循环次数未知的循环程序设计。,WHILE_LOOP语句,循环标号:WHILE 循环控制条件 LOOP
15、顺序语句;END LOOP 循环标号;,格式:,说明:若循环控制条件为“真”,则进行循环执行顺序语句;若循环控制条件为“假”,则结束循环。,26,VHDL语言的描述语句,【例6.5】用WHILE_LOOP语句描述八位奇偶校验器。,ARCHITECTURE example5 OF loop2 IS BEGIN PROCESS(X)VARIABLE temp:STD_LOGIC;VARIABLE n:INTEGER;BEGIN temp:=0;n:=0;WHILE n 8 LOOP temp:=temp XOR X(n);n:=n+1;END LOOP;Y=temp;END PROCESS;END
16、 example5;,27,VHDL语言的描述语句,单个LOOP语句是最简单的循环方式,这种循环方式需要引入NEXT和EXIT控制语句后才能确定。,单个LOOP语句,循环标号:LOOP 顺序语句;END LOOP 循环标号;,格式:,例如:简单LOOP语句的使用。,L2:LOOP A:=A+1;EXIT L2 WHEN A10;END LOOP L2;,-控制语句,当A大 于10时,跳出循环,28,VHDL语言的描述语句,NEXT语句是一种循环控制语句,通常嵌套在LOOP语句中使用,用于进行有条件或无条件的控制执行程序的转向。,(4)NEXT语句,NEXT 循环标号 WHEN 条件表达式;,格
17、式:,29,VHDL语言的描述语句,根据可选项,NEXT语句有三种格式:,(4)NEXT语句,格式1:NEXT,功能:无条件结束本次循环,跳回到循环体的开始位置,执行下一次循环。,格式2:NEXT 循环标号,功能:无条件结束本次循环,从循环标号规定的位置,执行下一次循环。,格式3:NEXT WHEN 条件表达式,功能:有条件结束本次循环,当条件表达式满足时,结束本次循环,否则继续循环。,30,VHDL语言的描述语句,【例6.6】用NEXT_WHEN语句实现单循环。,ARCHITECTURE example6 OF NEXT_WHEN1 IS BEGIN PROCESS(s)VARIABLE i
18、:INTEGER;BEGIN L1:FOR i IN 7 DOWNTO 0 LOOP y(i)=0;NEXT WHEN s(i)=1;y(i)=1;END LOOP L1;END PROCESS;END example6;,-若s(i)=1成立,终止本次循环,返回到L1 否则,继续本次循环。,-返回到L1,31,VHDL语言的描述语句,【例6.7】试用多重循环实现四组八位数据的奇校验。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NEXT_WHEN2 IS PORT(d:IN STD_LOGIC_VECTOR(0 TO 31);y:OUT S
19、TD_LOGIC_VECTOR(0 TO 3);END NEXT_WHEN2;ARCHITECTURE example7 OF NEXT_WHEN2 IS BEGIN PROCESS(d)VARIABLE i,k,j:INTEGER;VARIABLE tmp:STD_LOGIC;,四组八位数据由d0.31输入,内循环完成各组数据的奇校验,外循环确定校验的组数,校验结果存放在输出y0.3中。当某八位数据中1的个数为奇数时,所对应的输出位yi=1,否则,yi=0。,32,VHDL语言的描述语句,BEGIN k:=0;L1:FOR i IN 0 TO 3 LOOP y(i)=0;tmp:=0;j:=
20、0;k:=i*8;L2:LOOP tmp:=tmp XOR d(k);y(i)=tmp;NEXT L1 WHEN j=7;j:=j+1;k:=k+1;NEXT L2;END LOOP L2;NEXT L1;END LOOP L1;END PROCESS;END example7;,内循环,外循环,在内循环中,当j 7时,继续执行内循环;当j=7时,终止内循环,跳转到L1处,执行一次外循环。,33,VHDL语言的描述语句,EXIT语句和NEXT语句一样,都是循环控制语句,主要在LOOP语句中使用,用于进行有条件或无条件的跳转控制。,(5)EXIT语句,EXIT 循环标号 WHEN 条件表达式;,
21、格式:,34,VHDL语言的描述语句,根据可选项,EXIT语句有三种格式:,(5)EXIT语句,格式1:EXIT,功能:无条件跳出循环,从END LOOP下面的语句开始执行。,格式2:EXIT 循环标号,功能:无条件跳出循环,从循环标号规定的位置开始执行循环体外的语句。,格式3:EXIT WHEN 条件表达式,功能:有条件跳出循环,当条件表达式不成立时,继续执行循环,否则跳出循环。,35,VHDL语言的描述语句,【例6.8】用EXIT语句实现两个数组的比较。,PROCESS(X,Y)BEGIN Z=“00”;FOR n IN 7 DOWNTO 0 LOOP IF(X(n)=Y(n)THEN N
22、EXT;ELSIF(X(n)Y(n)THEN Z=“01”;EXIT;ELSE Z=“10”;EXIT;END IF;END LOOP;END PROCESS;,设X、Y分别为八位数组,当X=Y时,Z=00;当XY时,Z=10;当XY时,Z=01。,36,VHDL语言的描述语句,【例6.9】用EXIT_WHEN语句实现两个数组的比较。,PROCESS(X,Y)BEGIN Z=“00”;FOR n IN 7 DOWNTO 0 LOOP NEXT WHEN(X(n)=Y(n);Z=“01”;EXIT WHEN(X(n)Y(n);Z=“10”;EXIT;END LOOP;END PROCESS;,3
23、7,VHDL语言的描述语句,等待(WAIT)语句在进程或过程中使用,用于程序的暂停和等待。,3.等待语句,格式:,WAIT ON 敏感信号表 UNTIL 条件表达式 FOR 时间表达式;,当执行到WAIT语句时,程序执行被暂停,直到满足此语句设置的等待结束条件后,重新执行程序。,38,VHDL语言的描述语句,根据可选项,WAIT语句有四种格式:,格式1:WAIT,功能:永远处于等待状态,格式2:WAIT ON 敏感信号表;,功能:程序进入等待状态,直至敏感信号表中的任一信号发生变化时,结束等待重新执行程序。,例如:SIGNAL a,b:STD LOGIC;PROCESS WAIT ON a,b
24、;END PROCESS;,-暂停程序的执行,直到a或b发生 变化才重新启动。,3.等待语句,39,VHDL语言的描述语句,格式3:WAIT UNTIL 条件表达式;,功能:程序进入等待状态,直至表达式中的敏感信号发生变化,而且满足表达式设置的条件时,结束等待重新执行程序。,例如:WAIT UNTIL clk=1AND clkEVENT;z=x OR y;,3.等待语句,执行到WAIT语句后,暂停程序的执行,直到clk的上升沿到来时,才恢复程序的运行,执行其后的赋值语句。,40,VHDL语言的描述语句,格式4:WAIT FOR 时间表达式;,功能:从执行到当前的WAIT语句开始,在此时间段内,
25、程序处于等待状态,当超过时间表达式给定的时间后,程序自动恢复执行。,例如:WAIT FOR 25ns;z=x NAND y;,3.等待语句,执行该语句后,暂停程序的执行,直到时间(25ns)到才恢复程序的运行,将x NAND y赋值给z。,41,VHDL语言的描述语句,空操作(NULL)语句类似于计算机汇编语言中的NOP指令,执行该语句时不进行任何操作,只是使程序跨入到下一条语句。,4.空操作语句,格式:NULL;,例如:三路数据选择器的描述。CASE sel IS WHEN“00”=y y y NULL;END CASE;,-排除一些其他不用的条件,42,课堂练习(The second),6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 语言 描述 语句
链接地址:https://www.31ppt.com/p-5452220.html