《VHDL语法基础》PPT课件.ppt
《《VHDL语法基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL语法基础》PPT课件.ppt(76页珍藏版)》请在三一办公上搜索。
1、第3章 VHDL语法基础,3.1 顺序语句3.2 并行语句,3.1 顺序语句,VHDL有两种类型语句:顺序语句和并行语句(并发语句)。顺序语句的执行(指仿真执行)顺序是与它们的书写顺序基本一致的。并行语句的执行是同步进行的,或者说是并行运行的,其执行方式与书写的顺序无关。顺序语句又分两种情况:一种是真正的顺序语句。另一种具有顺序语句与并行语句的双重特性,放在进程、块、子程序之内是顺序语句,被放在进程、块、子程序之外是并行语句。,IF语句是一种条件语句,根据语句中所设置的一种或多种条件,有选择地执行指定的顺序语句。条件值是布尔型(TRUE或FALSE)。条件=TRUE,执行THEN后顺序语句,条
2、件全为FALSE时,才会执行ELSE后顺序语句或结束语句END IF。,一、IF语句,IF 条件句 THEN 顺序语句;ELSIF 条件句 THEN 顺序语句;ELSE 顺序语句;END IF;,语句结构:,根据大括号和方括号部分可选情况,共有三种结构。,例1:IF(AB)THEN OUTPUTB)检测结果为TRUE,则向信号OUTPUT赋值1,否则此信号维持原值。,LIBRARY IEEE;ENTITY EXAMPLE IS PORT(A,B,C:IN BOOLEAN;OUTPUT:OUT BOOLEAN);END ENTITY EXAMPLE;ARCHITECTURE ART OF EXA
3、MPLE ISBEGIN PROCESS(A,B,C)IS VARIABLE N:BOOLEAN;BEGIN IF A THEN N:=B;ELSE N:=C;END IF;OUTPUT=N;END PROCESS;END ARCHITECTURE ART;,例2:用IF语句描述图示硬件电路。,此处的库、程序包使用说明是否必要,SIGNA A,B,C,P1,P2,Z:BIT;.IF(P1=1)THENZ=A;-执行条件是(P1=1)ELSIF(P2=0)THENZ=B;-执行条件是(P1=0)AND(P2=0)ELSEZ=C;-执行条件是(P1=0)AND(P2=1)END IF;,例3:由两
4、个2选1多路选择器构成的电路逻辑描述如图所示,其中,当P1和P2为高电平时下端的通道接通。,LIBRARY IEEE;ENTITY CODER ISPORT(SR:IN STD_LOGIC_VECTOR(0 TO 7);SC:OUT STD_LOGIC_VECTOR(0 TO 2);END ENTITY CODER;ARCHITECTURE ART OF CODER ISBEGINPROCESS(SR)ISBEGIN IF(SR(7)=0)THEN SC=000;-(SR(7)=0)ELSIF(SR(6)=0)THEN SC=100;-(SR(7)=1)AND(SR(6)=0)ELSIF(SR
5、(5)=0)THEN SC=010;-(SR(7)=1)AND(SR(6)=1)AND(SR(5)=0),例:,ELSIF(SR(4)=0)THEN SC=110;ELSIF(SR(3)=0)THEN SC=001;ELSIF(SR(2)=0)THEN SC=101;ELSIF(SR(1)=0)THEN SC=011;ELSESC=111;END IF;END PROCESS;END ARCHITECTURE ART;,说明:本例设计的是一个优先级编码器电路,因SR(7)先测试,所以优先级最高。,CASE 表达式 IS WHEN 选择值=顺序语句;WHEN 选择值=顺序语句;WHEN OTHE
6、RS=顺序语句;END CASE;,二、CASE 语句,符号=相当于THEN。执行时,首先计算表达式的值,然后将该值与WHEN中的选择值比较,相同执行对应的顺序语句,否则执行OTHERS 后的顺序语句或结束语句END CASE。语句中的选择值必须列举穷尽,又不能重复。选择值不能列举穷尽时,语句WHEN OTHERS=顺序语句;通常不能缺省。,语句结构:,例:用CASE语句描述4选1多路选择器。,LIBRARY IEEE;ENTITY MUX41 ISPORT(S1,S2:IN STD_LOGIC;A,B,C,D:IN STD_LOGIC;Z:OUT STD_LOGIC);END ENTITY
7、MUX41;ARCHITECTURE ART OF MUX41 ISSIGNA S:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINS=S1&S2;PROCESS(S,A,B,C,D)ISBEGIN,并置运算符号,CASE S IS WHEN 00=ZZZZZ=X;END CASE;END PROCESS;END ARCHITECTURE ART;,注意:本例的第五个条件名是必需的,因为对于定义STD_LOGIC_VECTOR数据类型的S,在VHDL综合过程中,它可能的选择值除了00、01、10和11外,还可以有其他定义于STD_LOGIC的选择值。如果使用BIT_VECT
8、OR数据类型,WHEN OTHERS句子就不必了。,X-强未知的,注:书上的设计描述方法与此处不同。,三、LOOP语句,FOR-LOOP语句:标号:FOR 循环变量 IN 循环次数范围 LOOP 顺序语句 END LOOP 标号;循环变量的值在每一次的循环中都会发生变化。循环次数范围表示循环变量在循环过程中的取值范围,显然FOR模式的循环次数是明确的。,LOOP语句就是循环语句,它可以使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定,循环的方式由NEXT和EXIT语句来控制。,例1:利用LOOP语句中的循环变量简化同类顺序语句的表达式的使用。SIGNA A,B,C:STD_L
9、OGIC_VECTOR(1 TO 3);FOR N IN 1 TO 3 LOOP A(N)=B(N)AND C(N);END LOOP;,说明:此段程序等效于顺序执行以下三个信号赋值操作。A(1)=B(1)AND C(1);A(2)=B(2)AND C(2);A(3)=B(3)AND C(3);,例2:FOR-LOOP语句的使用(8位奇偶校验逻辑电路)。LIBRARY IEEE;ENTITY P_CHECK IS PORT(A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);Y:OUT STD_LOGIC);END ENTITY P_CHECK;ARCHITECTURE ART
10、 OF P_CHECK IS SIGNAL TMP:STD_LOGIC;BEGIN PROCESS(A)IS BEGIN TMP=0;FOR N IN 0 TO 7 LOOPTMP=TMP XOR A(N);END LOOP;Y=TMP;END PROCESS;END ARCHITECTURE ART;,结果:Y=0 A含偶数个1,Y=1 A含奇数个1。,WHILE-LOOP语句:标号:WHILE 循环控制条件 LOOP 顺序语句 END LOOP 标号;循环控制条件为真执行顺序语句;为假结束循环。显然WHILE模式的循环次数是未知的。,例:WHILE-LOOP语句的使用。SHIFT1:PRO
11、CESS(INPUTX)IS VARIABLE N:POSITIVE:=1;BEGIN L1:WHILE N=8 LOOP-这里的“=”是小于等于的意思 OUTPUTX(N)=INPUTX(N+8);N:=N+1;END LOOP L1;END PROCESS SHIFT1;,说明:在WHILE-LOOP语句的顺序语句中增加了一条循环次数的计算语句,用于循环语句的控制。在循环执行中,当N的值等于9时将跳出循环。,NEXT-LOOP语句NEXT LOOP 标号 WHEN 条件表达式;,NEXT语句是对LOOP语句作有条件或无条件的转向控制。分四种控制:单独NEXT时,跳到本循环LOOP语句开始处
12、。NEXT LOOP 标号,跳转到指定的LOOP标号处。NEXT WHEN 条件,条件值=TRUE,跳到本循环LOOP语句开始处;条件值=FALSE,不执行NEXT,继续向下执行。全不缺省时,条件值=TRUE,跳到指定的LOOP标号处(注意:并不一定是本循环语句的LOOP标号);条件值=FALSE,不执行NEXT,继续向下执行。,例1:L1:FOR CNT IN 1 TO 8 LOOPS1:A(CNT):=0;NEXT WHEN(B=C);S2:A(CNT+8):=0;END LOOP L1;,例2:L1:FOR CNT IN 1 TO 8 LOOP S1:A(CNT):=0;K:=0;L2:
13、LOOP S2:B(k):=0;NEXT L1 WHEN(EF);S3:B(k+8):=0;K:=K+1;END LOOP L2;END LOOP L1;,EXIT-LOOP语句EXIT LOOP 标号 WHEN 条件表达式;,EXIT语句用来结束LOOP语句。分四种控制:单独EXIT时,无条件结束LOOP语句的执行。EXIT LOOP 标号,跳转到指定的LOOP标号处。EXIT WHEN 条件,条件值=TRUE,跳出LOOP语句;条件值=FALSE,继续LOOP循环。全不缺省时,条件值=TRUE,跳出LOOP语句;条件值=FALSE,跳到指定的LOOP标号处。,例:SIGNAL A,B:ST
14、D_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL A_LESS_B:BOOLEAN;A_LESS_B=FLASE;-设初始值FOR I IN 1 DOWNTO 0 LOOPIF(A(I)=1 AND B(I)=0)THENA_LESS _B=FALSE;EXIT;ELSIF(A(I)=0 AND B(I)=1)THENA_LESS _B=TRUE;-ABEXIT;ELSE NULL;END IF;END LOOP;-当I=1时返回LOOP语句继续比较,#金,语句格式:标号 REPORT“输出字符串”SEVERIY 出错级别REPORT语句不增加硬件的任何功能,仿真时可用该语句
15、提高可读性。REPORT语句等价于断言语句。出错级别默认为NOTE。,四、REPORT语句,例:WHILE COUNTER 50 THEN REPORT THE COUNTER IS OVER 50;END IF;END LOOP;,NULL;空操作语句不完成任何操作,它惟一的功能就是使逻辑运行流程跨入下一步语句的执行。NULL常用于CASE语句中,为满足所有可能的条件,利用NULL来表示所余的不用条件下的操作行为。,五、空操作语句(NULL),例:在CASE语句中,NULL用于排除一些不用的条件。CASE OPCODE IS WHEN“001”=TMP:=REGA AND REGB;WHEN
16、“101”=TMP:=REGA OR REGB;WHEN“110”=TMP:=NOT REGA;WHEN OTHERS=NULL;END CASE;,#成,3.2 并行语句,相对于传统的软件描述语言,并行语句结构是VHDL特色。在VHDL中,并行语句具有多种语句格式,各种并行语句在结构体中的执行是同步进行的(并行运行),其执行方式与书写的顺序无关。在执行中,并行语句之间可以有信息往来,也可以是互为独立、互不相关、异步运行(如多时钟情况)。并行语句在结构体中的使用格式如下:,ARCHITECTURE 结构体名 OF 实体名 IS 说明语句;BEGIN 并行语句;END ARCHITECTURE
17、结构体名;,结构体中各种并行语句运行的示意图如下。每一语句模块都可以独立异步运行,模块之间是并行运行,并通过信号来交换信息。在实际编程中这些语句不必同时存在。,其赋值目标必须是信号。信号赋值语句其所有可读入信号是隐性的,任何信号的变化都会启动语句的赋值操作。并行信号赋值语句有三种形式:简单信号赋值语句、条件信号赋值语句和选择信号赋值语句。,二、信号代入语句(并行信号赋值语句),注意:信号赋值用“”符号,两边数据类型的一致。,一、变量赋值语句,目标变量名:=表达式;,简单信号赋值语句 信号赋值目标表达式;,注意:变量赋值用“:=”符号,两边数据类型必须一致。,例:ARCHITECTURE ART
18、 OF XHFZ IS SIGNA S1:STD_LOGIC;BEGIN OUTPUT 1=A AND B;OUTPUT 2=C+D;B1:BLOCK SIGNA E,F,G,H:STD_LOGIC;BEGIN G=E OR F;H=E XOR F;END BLOCK B1;S1=G;END ARCHITECTURE ART,并行语句,并行语句,并行语句,条件信号赋值语句 信号赋值目标 表达式1 WHEN 条件1 ELSE 表达式2 WHEN 条件2 ELSE 表达式3 WHEN 条件3 ELSE 表达式n WHEN 条件n ELSE 表达式n+1;根据赋值条件的书写顺序逐项测定,一旦发现赋值
19、条件=TRUE,便将对应的表达式的值赋给目标,否则将最后一个表达式的值赋给目标。注:书上有错。,例:Z=A WHEN P1=1 ELSE B WHEN P2=0 ELSE C;,选择信号赋值语句 WITH 选择表达式 SELECT 信号赋值目标 表达式1 WHEN 选择值1 表达式2 WHEN 选择值2 表达式n WHEN 选择值n;表达式n+1 WHEN OTHERS;,每当选择表达式的值发生变化时,将其值与各子句中的选择值作比较,比较结果相等的子句获得赋值资格。不允许有条件重叠现象。也不允许存在条件涵盖不全的情况,否则最后一句不能缺省。不能在进程中使用。,例:下图是一个简化的指令译码器。对
20、应于由A、B、C三个位构成的不同指令码,由DATA1和DATA2输入的两个值将进行不同的逻辑操作,并将结果从DATAOUT输出。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECODER ISPORT(A,B,C:IN STD_LOGIC;DATA1,DATA2:IN STD_LOGIC;DATAOUT:OUT STD_LOGIC);END DECODER;ARCHITECTURE ART OF DECODER IS SIGNAL INSTRUCTION:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN INSTRUCT
21、ION=C&B&A;WITH INSTRUCTION SELECT DATAOUT=DATA1 AND DATA2 WHEN“000”DATA1 OR DATA2 WHEN“001”DATA1 NAND DATA2 WHEN“010”DATA1 NOR DATA2 WHEN“011”DATA1 XOR DATA2 WHEN“100”DATA1 NXOR DATA2 WHEN“101”Z WHEN OTHERS;-当不满足条件时,输出呈高阻态END ARCHITECTURE ART;,进程标号:PROCESS(敏感信号参数表)IS进程说明部分BEGIN顺序描述语句END PROCESS 进程标号
22、:;,三、进程,进程语句(PROCESS),PROCESS各部分使用说明敏感信号参数表:所谓的敏感信号是指其值发生改变时,会引起进程中语句执行的那些信号。敏感信号参数表就是由一个或多个敏感信号来组成。敏感信号的作用就是重新激活进程。,进程说明部分:定义本进程所需的一些局部量,如变量、常数、数据类型、属性、子程序等,但不允许定义信号和共享变量。顺序描述语句:进程中的顺序语句部分是不可缺的,其作用就是描述硬件的行为。PROCESS 语句特点 进程结构内部的所有语句都是顺序执行的。多进程之间是并行执行的,并可访问结构体或实体中所定义的信号。进程启动有两种方式:一种是由敏感信号来触发,另一种也可以用W
23、AIT语句等待一个触发条件的成立。信号敏感表和WAIT语句不能共同存在于一个进程之中。各进程之间的通信由信号来传递。,例1:不含敏感信号表的进程语句ARCHITECTURE ART OF STAT ISBEGINP1:PROCESS IS-该进程未列出敏感信号,进程需靠WAIT语句来启动BEGINWAIT UNTI CLOCK1;-等待CLOCK激活进程IF(DRIVER=1)THEN-当DRIVER为高电平时进入CASE语句CASE OUTPUT ISWHEN S1=OUTPUT OUTPUT OUTPUT OUTPUT=S1;END CASE;END IFEND PROCESS P1;EN
24、D ARCHITECTURE ART;,例2:含敏感信号表的进程语句。SIGNA CNT4:INTEGER RANGE 0 TO 15;-注意CNT4的数据类型.PROCESS(CLK,CLEAR,STOP)IS-该进程定义了3个敏感信号 CLK、CLEAR、STOPBEGIN-当其中任何一个改变时,都将启动进程的运行IF CLEAR=0 THENCNT4=0;ELSIF CLKEVENT AND CLK=1THEN-如果遇到时钟上升沿,则IF STOP=0THEN-如果STOP为低电平,则进行加法计数,否则停止计数CNT4=CNT4+1;END IF;END IF;END PROCESS;,
25、WAIT 语句,WAIT-无限等待WAIT ON 信号表-敏感信号量变化WAIT UNTIL 条件表达式-表达式成立时进程启动WAIT FOR 时间表达式-时间到,进程启动,当遇到WAIT时,运行程序将被挂起(暂停运行),只有满足WAIT中设置的结束挂起条件后,才会继续运行程序。单独WAIT表示永远挂起。WAIT ON 信号表,称为敏感信号等待语句。表中的敏感信号发生变化时,结束挂起,再次启动进程。WAIT UNTIL 条件表达式 属条件等待。当表达式中信号发生改变,并且为TRUE时,结束挂起,执行WAIT之后的语句。此格式可被综合器综合,其它格式只能在仿真器中使用。进程中使用了WAIT语句后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL语法基础 VHDL 语法 基础 PPT 课件
链接地址:https://www.31ppt.com/p-5454326.html