VHDL基本语句用法.ppt
《VHDL基本语句用法.ppt》由会员分享,可在线阅读,更多相关《VHDL基本语句用法.ppt(74页珍藏版)》请在三一办公上搜索。
1、第10章 VHDL基本语句,一:主要内容:VHDL基本语句讲解 顺序语句 并行语句二:重点掌握:常用VHDL基本语句及应用,赋值语句,信号赋值语句,变量赋值语句,信号代入语句:格式:目的信号变量=信号变量表达式 例:a=b;,变量赋值语句:格式:目的变量:=表达式 例:c:=a+d,信号与变量的区别:(1)信号赋值可以有延迟时间,变量赋值无时间延迟(2)信号除当前值外还有许多相关值,如历史信息等,变量只有当前值 进程对信号敏感,对变量不敏感(3)信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见(4)信号可以看作硬件的一根连线,但变量无此对应关系。,10.1 顺序语句,IF 语句已
2、讲过,IF 条件 THEN END IF;,CASE语句,1)CASE语句的结构:CASE 表达式 ISWhen 选择值=顺序语句;When 选择值=顺序语句;.【WHEN OTHERS=】;END CASE;,2)多条件选择值的一般表达式:选择值|选择值,3)选择值 表达方式:(1)单个普通数值,如6。(2)数值选择范围,如(2 TO 4),表示取值为 2、3或4。(3)并列数值,如35,表示取值为3或者5。(4)混合方式,以上三种方式的混合。,4)CASE 语句举例,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 IS PORT(
3、s4,s3,s2,s1:IN STD_LOGIC;z4,z3,z2,z1:OUT STD_LOGIC);END mux41;ARCHITECTURE activ OF mux41 IS SIGNAL sel:INTEGER RANGE 0 TO 15;BEGIN z1 z1 z2 z3 z4=1;-当sel为815中任一值时选中 END CASE;END activ;,例【10.1】,CASE 语句病句举例,【例10.2】,LOOP语句,格式:LOOP标号:LOOP 顺序语句 END LOOP LOOP标号;,格式:LOOP标号:FOR 循环变量,IN 循环次数范围 LOOP 顺序语句 END
4、 LOOP LOOP标号;,见例1,见例2,见例3,1、单个LOOP语句,2、FOR_LOOP语句,10.15 NEXT 语句-跳出本次循环,1、格式:(1)NEXT;无条件终止当前的循环,跳回到本次循环LOOP语句处,开始下次循环。(2)NEXT LOOP标号;-同(1)。(3)NEXT LOOP标号 WHEN 条件表达式;-条件表达式为TRUE,执行NEXT语句,进入跳转操作,否则继续向下执行。,2、注意:NEXT语句用于跳出本次循环 且控制内循环的结束.在多重循环中必加标号。,3、举例,例1,例2,EXIT语句-结束循环状态,1、格式:(1)EXIT;-结束本次循环(2)EXIT LOO
5、P标号;-同上(3)EXIT LOOP标号 WHEN 条件表达式;,2、举例,例 1,3、NEXT与 EXIT区别:NEXT语句是转向LOOP语句的起始点。EXIT 语句是转向LOOP语句的终点。,WAIT语句-等待语句,1)格 式:(1)WAIT;-功能:将程序挂起,直到满足条件。(2)WAIT ON 信号表;(3)WAIT UNTIL 条件表达式;(4)WAIT FOR 时间表达式;,2)举 例,见例1,见例2,【例3】,说明 1:一般只有WAIT_UNTIL格式的等待语句可以被综合器接受(其余语句格式只能在VHDL仿真器中使用),WAIT_UNTIL语句三种表达方式:WAIT UNTIL
6、 信号=Value;-(1)WAIT UNTIL 信号EVENT AND 信号=Value;-(2)WAIT UNTIL NOT 信号STABLE AND 信号=Value;-(3),说明2:对应的硬件结构相同的时钟信号clock上跳沿应用的四条WAIT语句:WAIT UNTIL clock=1;WAIT UNTIL rising_edge(clock);WAIT UNTIL clock=1 AND clockEVENT;WAIT UNTIL NOT clock STABLE AND clock=1;,3)说 明,说明3:WAIT语句可用于Process 进程中的任何地方,已列出敏感信号的 P
7、rocess中不能用WAIT语句。,子程序调用语句,1、过程调用-就是执行一个给定名字和参数的过程。,1)格式:过程名(形参名=实参表达式,形参名=实参表达式);,2)一个过程的调用将分别完成以下三个步骤:,(1)将IN和INOUT模式的实参值赋给欲调用的过程中与它们对应的形参;(2)执行这个过程;(3)将过程中IN和INOUT模式的形参值返回给对应的实参。,3)举例,例1,【例2】,2、函数调用,函数调用与过程调用是十分相似的,不同之处:调用函数将返还一个指定数据类型的值,函数的参量只能是输入值。,1)格式:FUNCTION 函数名(参数表)RETURN 数据类型;-函数首 FUNCTION
8、 函数名(参数表)RETURN 数据类型 IS-函数体,2)详细内容已讲过,返回语句(RETURN),1)格式:语句格式一:RETURN;-只用于结束过程,并不返回任何值。语句格式二:RETURN 表达式;-只用于函数,并返回一个值。,2)举例,例1 过程调用返回例子,例2 幻灯片 60函数调用返回例子,空操作语句(NULL),1)语句格式:NULL;,例:CASE Opcode IS WHEN 001=tmp:=rega AND regb;WHEN 101=tmp:=rega OR regb;WHEN 110=tmp:=NOT rega;WHEN OTHERS=NULL;END CASE;,
9、3)说明:在上例的CASE语句中,NULL用于排除一些不用的条件。等同:WHEN OTHERS=tmp:=rega;,2)举例:,10.2 并行语句,结构体中的并行语句种类:1、并行信号赋值语句(Concurrent Signal Assignments)。2、进程语句(Process Statements)。3、块语句(Block Statements)。4、条件信号赋值语句(Selected Signal Assignments)。5、元件例化语句(Component Instantiations),其中包括类属、配置语句。6、生成语句(Generate Statements)。7、并行过
10、程调用语句(Concurrent Procedure Calls)。,并行语句位置:ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 并行语句 END 结构体名;,并行信号赋值语句,1.简单信号赋值语句,格式:赋值目标=表达式,例:ARCHITECTURE curt OF bc1 IS SIGNAL s1,e,f,g,h:STD_LOGIC;BEGIN output1=a AND b;output2=c+d;g=e OR f;h=e XOR f;s1=g;END curt;注:例中的五条信号赋值语句的执行是并行发生的。,2.条件信号赋值语句,赋值目标=表达式1 WH
11、EN 赋值条件1 ELSE 表达式2 WHEN 赋值条件2 ELSE.表达式n;,1)格式:,2)举例:,【例1】ENTITY mux IS PORT(a,b,c:IN BIT;p1,p2:IN BIT;z:OUT BIT);END mux;ARCHITECTURE behv OF mux IS BEGIN z=a WHEN p1=1 ELSE b WHEN p2=1 ELSE c;END;,例1的逻辑电路图见 图1,3.选择信号赋值语句,WITH 选择表达式 SELECT 赋值目标信号=表达式1 WHEN 选择值1 表达式2 WHEN 选择值2.表达式n WHEN 选择值n;,1)格式:,2
12、)举例:例2,例3,块语句结构(BLOCK),块标号:BLOCK(块保护表达式)接口说明 类属说明 BEGIN 并行语句 END BLOCK 块标号;,1)格式:,#标号是必需的;#在对程序进行仿真时,BLOCK中的语句是并行执行的,与书写顺序无关。#一个BLOCK等价于一个结构体。,2)说明:,3)举例:,【例2】,块语句嵌套例子:【例3】,【例1】,并行过程调用语句,1)格式:过程名(关联参量名);,2)举例:,【例1】,【例2】,【例3】,元件例化语句,COMPONENT 元件名 IS GENERIC(类属表);-元件定义(说明)语句 PORT(端口名表);END COMPONENT 文
13、件名;例化名:元件名 PORT MAP(端口名=连接端口名,.);-元件例化(调用)语句。,1)格式:,(1)元件声明语句用于调用已生成的元件,这些元件可能在库中,也可能是预先编写的元件实体描述.;(2)元件语句可以在ARCHITECTURE,PACKAGE和BLOCK的说明部分.(3)元件例化中,两层端口名(信号)之间的关系为映射关系:,2)说明:,3)举例:例1,例 2,例 3,生成语句,标号:FOR 循环变量 IN 取值范围 GENERATE 说明 BEGIN 并行语句 END GENERATE 标号;,2)格式:,标号:IF 条件 GENERATE 说明 Begin 并行语句 END
14、GENERATE 标号;,取值范围的语句格式,有两种形式:表达式 TO 表达式;-递增方式,如1 TO 5表达式 DOWNTO 表达式;-递减方式,如5 DOWNTO 1,3)说明:,1)作用:复制作用,根据某些条件,设定好某一元件或设计单位,就可利用 生成语句复制一组完全相同的并行元件或设计单位。,生成语句四部分组成:,(2)生成方式,(3)说明部分,(4)并行语句,(1)标号,*【例1】,*【例2】,*【例3】,举例:,REPORT语句-报告相关信息语句。-格式:REPORT;,断言语句-时序仿真和程序调试的人机对话。-格式:ASSERT REPORT SEVERITY,10.3 属性描述
15、与定义语句,可综合属性:LEFT、RIGHT、HIGH、LOW、RANGE、REVERS RANGE、LENGTH、EVENT及STABLE。格式:属性测试项目名 属性标识符,1.信号类属性,#(NOT clockSTABLE AND clock=1)-不可综合#(clockEVENT AND clock=1)以上两语句的功能是一样的。,注 意,1)EVENT与STABLE测试功能相反。2)语句“NOT(clockSTABLE AND clock=1)”的表达方式是不可综合的。,2、数据区间类属性,【例】.SIGNAL range1:IN STD LOGIC VECTOR(0 TO 7);.F
16、OR i IN range1RANGE LOOP.,3、数值类属性,.PROCESS(clock,a,b);TYPE obj IS ARRAY(0 TO 15)OF BIT;SIGNAL ele1,ele2,ele3,ele4:INTEGER;BEGIN ele1=objRIGNT;ele2=objLEFT;ele3=objHIGH;ele4=objLOW;.,4、数组属性LENGTH,.TYPE arry1 ARRAY(0 TO 7)OF BIT;VARIABLE wth:INTEGER;.wth1:=arry1LENGTH;-wth1=8.,5、用户定义属性,ATTRIBUTE 属性名:数
17、据类型;ATTRIBUTE 属性名 OF 对象名:对象类型IS 值;,Synplify综合器支持的特殊属性都在synplify.attributes程序包中,使用前加入下面语句:,LIBRARY synplify;USE synplicity.attributes.all;,6、说明,7、举例,*【例1】,*【例2】,本章程序举例,例10.2 寄存器,结束,例子:设计一个实体图如图,功能为32位计数器,例10.2 寄存器,ENTITY reginf ISPORT(d,clk,clr,pre,load,data:IN BIT;q1,q2,q3,q4,q5,q6,q7:OUT BIT);END r
18、eginf;ARCHITECTURE maxpld OF reginf IS BEGIN PROCESS-高电平时钟触发 BEGIN WAIT UNTIL clk=1;q1=d;END PROCESS;PROCESS-低电平时钟触发 BEGIN WAIT UNTIL clk=0;q2=d;END PROCESS;PROCESS(clk,clr)-上升沿触发/同步清除 BEGIN IF clr=1 THEN q3=0;ELSIF clkEVENT AND clk=1 THEN q3=d;END IF;END PROCESS;,PROCESS(clk,clr)-下降沿触发/同步清除 BEGIN I
19、F clr=0 THEN q4=0;ELSIF clkEVENT AND clk=0 THEN q4=d;END IF;END PROCESS;PROCESS(clk,pre)-上升沿触发/同步预置”1”BEGIN IF pre=1 THEN q5=1;ELSIF clkEVENT AND clk=1 THEN q5=d;END IF;END PROCESS;,(续)例10.2 寄存器,PROCESS(clk,load,data)-上升沿触发/同步预置数据 BEGIN IF load=1 THEN q6=data;ELSIF clkEVENT AND clk=1 THEN q6=d;END I
20、F;END PROCESS;PROCESS(clk,clr,pre)-上升沿触发/同步置”1”和清除 BEGIN IF clr=1 THEN q7=0;ELSIF pre=1 THEN q7=1;ELSIF clkEVENT AND clk=1 THEN q7=d;END IF;END PROCESS;END maxpld;,例10.2 寄存器(续),LIBRARY ieee;use ieee.std_logic_1164.all;use;entity count12 isport(clk,reset,en:in std_logic;qa,qb,qc,qd:out std_logic);end
21、 count12;architecture behave of count12 issignal count_4:std_logic_vector(3 downto 0);begin qa=count_4(0);qb=count_4(1);qc=count_4(2);qd=count_4(3);process(clk,reset)begin if(reset=0)then count_4=0000;elsif(clkevent and clk=1)then if(en=1)then if(count_4=1011)then count_4=0000;else count_4=count_4+1
22、;end if;end if;end if;end process;end behave;,引脚定义:reset 复位;en 计数控制;clk 时钟;qa,qb,qc,qd 计数器输出,例10.1 十二进制同步计数器,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-设计DFF元件 ENTITY d_ff IS PORT(d,clk_s:IN STD_LOGIC;q:OUT STD_LOGIC;nq:OUT STD_LOGIC);END ENTITY d_ff;ARCHITECTURE a_rs_ff OF d_ff IS BEGIN bin_rs_ff:PR
23、OCESS(CLK_S)BEGIN IF clk_s=1 AND clk_sEVENT THEN q=d;nq=NOT d;END IF;END PROCESS;END ARCHITECTURE a_rs_ff;接下页,例3,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY cnt_bin_n is GENERIC(n:INTEGER:=6);PORT(q:OUT STD_LOGIC_VECTOR(0 TO n-1);in_1:IN STD_LOGIC);END ENTITY cnt_bin_n;ARCHITECTURE behv OF cnt_b
24、in_n IS COMPONENT d_ff PORT(d,clk_s:IN STD_LOGIC;Q,NQ:OUT STD_LOGIC);END COMPONENT d_ff;SIGNAL s:STD_LOGIC_VECTOR(0 TO n);BEGIN s(0)=in_1;q_1:FOR i IN 0 TO n-1 GENERATE dff:d_ff PORT MAP(s(i+1),s(I),q(i),s(i+1);END GENERATE;END ARCHITECTURE behv;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SN743
25、73 IS PORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 1);OEN,G:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(8 DOWNTO 1);END ENTITY SN74373;ARCHITECTURE two OF SN74373 IS SIGNAL sigvec_save:STD_LOGIC_VECTOR(8 DOWNTO 1);BEGIN PROCESS(D,OEN,G,sigvec_save)BEGIN IF OEN=0 THEN Q=sigvec_save;ELSE Q=ZZZZZZZZ;END IF;IF G=1 THEN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 基本 语句 用法
链接地址:https://www.31ppt.com/p-5452175.html