EDA技术与VHDL第一部分 VHDL语句.ppt
《EDA技术与VHDL第一部分 VHDL语句.ppt》由会员分享,可在线阅读,更多相关《EDA技术与VHDL第一部分 VHDL语句.ppt(64页珍藏版)》请在三一办公上搜索。
1、EDA技术与VHDL,第1部分VHDL语句,一 顺序语句,1.1 赋值语句,信号赋值语句 变量赋值语句,1.2 IF语句,1.3 CASE语句,选择值|选择值,单个普通数值,如6。数值选择范围,如(2 TO 4),表示取值为2、3或4。并列数值,如35,表示取值为3或者5。混合方式,以上三种方式的混合。,【例1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 IS PORT(s4,s3,s2,s1:IN STD_LOGIC;z4,z3,z2,z1:OUT STD_LOGIC);END mux41;ARCHITECTURE activ
2、OF mux41 IS SIGNAL sel:INTEGER RANGE 0 TO 15;BEGIN PROCESS(sel,s4,s3,s2,s1)BEGIN sel z1 z2 z3 z4=1;-当sel为815中任一值时选中 END CASE;END PROCESS;END activ;,一顺序语句,1.3 CASE语句,【例2】SIGNAL value:INTEGER RANGE 0 TO 15;SIGNAL out1:STD_LOGIC;.CASE value IS-缺少以WHEN引导的条件句 END CASE;.CASE value IS WHEN 0=out1 out1 out1
3、 out1=0;END CASE;,【例3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alu IS PORT(a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);opcode:IN STD_LOGIC_VECTOR(1 DOWNTO 0);result:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END alu;ARCHITECTURE behave OF alu IS CONSTANT plus:STD_LOGIC_VECTOR(1
4、DOWNTO 0):=b00;CONSTANT minus:STD_LOGIC_VECTOR(1 DOWNTO 0):=b01;CONSTANT equal:STD_LOGIC_VECTOR(1 DOWNTO 0):=b10;CONSTANT not_equal:STD_LOGIC_VECTOR(1 DOWNTO 0):=b11;BEGINPROCESS(opcode,a,b)BEGIN CASE opcode IS WHEN plus=result result-a、b相等 IF(a=b)THEN result-a、b不相等 IF(a/=b)THEN result=x01;ELSE resu
5、lt=x00;END IF;END CASE;END PROCESS;END behave;,一顺序语句,1.4 LOOP语句,(1)单个LOOP语句,其语法格式如下:LOOP标号:LOOP 顺序语句 END LOOP LOOP标号;,.L2:LOOP a:=a+1;EXIT L2 WHEN a 10;-当a大于10时跳出循环 END LOOP L2;.,一顺序语句,1.4 LOOP语句,(2)FOR_LOOP语句,语法格式如下:LOOP标号:FOR 循环变量,IN 循环次数范围 LOOP 顺序语句 END LOOP LOOP标号;,一顺序语句,1.4 LOOP语句,【例4】LIBRARY I
6、EEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY p_check IS PORT(a:IN STD_LOGIC_VECTOR(7 DOWNTO 0);y:OUT STD_LOGIC);END p_check;ARCHITECTURE opt OF p_check IS SIGNAL tmp:STD_LOGIC;BEGIN PROCESS(a)BEGIN tmp=0;FOR n IN 0 TO 7 LOOP tmp=tmp XOR a(n);END LOOP;y=tmp;END PROCESS;END opt;,一顺序语句,1.4 LOOP语句,【例5】SIGNAL
7、a,b,c:STD_LOGIC_VECTOR(1 TO 3);.FOR n IN 1 To 3 LOOPa(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);,一顺序语句,1.5 NEXT语句,NEXT;-第一种语句格式NEXT LOOP标号;-第二种语句格式NEXT LOOP标号 WHEN 条件表达式;-第三种语句格式,【例6】.L1:FOR cnt_value IN 1 TO 8 LOOPs1:a(cnt_value):=0;NEXT WH
8、EN(b=c);s2:a(cnt_value+8):=0;END LOOP L1;,一顺序语句,1.5 NEXT语句,【例7】.L_x:FOR cnt_value IN 1 TO 8 LOOP s1:a(cnt_value):=0;k:=0;L_y:LOOP s2:b(k):=0;NEXT L_x WHEN(ef);s3:b(k+8):=0;k:=k+1;NEXT LOOP L_y;NEXT LOOP L_x;.,一顺序语句,1.6 EXIT语句,EXIT;-第一种语句格式EXIT LOOP标号;-第二种语句格式EXIT LOOP标号 WHEN 条件表达式;-第三种语句格式,一顺序语句,1.6
9、 EXIT语句,【例8】SIGNAL a,b:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL a_less_then_b:Boolean;.a_less_then_b b EXIT;ELSIF(a(i)=0 AND b(i)=1)THEN a_less_then_b=TRUE;-a b EXIT;ELSE NULL;END IF;END LOOP;-当 i=1时返回LOOP语句继续比较,一顺序语句,1.7 WAIT语句,WAIT;-第一种语句格式WAIT ON 信号表;-第二种语句格式 WAIT UNTIL 条件表达式;-第三种语句格式WAIT FOR 时间表达式;-第
10、四种语句格式,超时等待语句,一 顺序语句,1.7 WAIT语句,【例9】SIGNAL s1,s2:STD_LOGIC;.PROCESSBEGIN.WAIT ON s1,s2;END PROCESS;,一顺序语句,1.7 WAIT语句,【例10】(a)WAIT_UNTIL结构(b)WAIT_ON结构.LOOPWait until enable=1;Wait on enable;.EXIT WHEN enable=1;END LOOP;,一顺序语句,1.7 WAIT语句,WAIT UNTIL 信号=Value;-(1)WAIT UNTIL 信号EVENT AND 信号=Value;-(2)WAIT
11、 UNTIL NOT 信号STABLE AND 信号=Value;-(3),WAIT UNTIL clock=1;WAIT UNTIL rising_edge(clock);WAIT UNTIL NOT clockSTABLE AND clock=1;WAIT UNTIL clock=1 AND clockEVENT;,一 顺序语句,1.7 WAIT语句,【例11】PROCESSBEGINWAIT UNTIL clk=1;ave=a;WAIT UNTIL clk=1;ave=ave+a;WAIT UNTIL clk=1;ave=ave+a;WAIT UNTIL clk=1;ave=(ave+a
12、)/4;END PROCESS;,一 顺序语句,1.7 WAIT语句,【例12】PROCESS BEGIN rst_loop:LOOP WAIT UNTIL clock=1 AND clockEVENT;-等待时钟信号 NEXT rst_loop WHEN(rst=1);-检测复位信号rst x=a;-无复位信号,执行赋值操作 WAIT UNTIL clock=1 AND clockEVENT;-等待时钟信号 NEXT rst_loop When(rst=1);-检测复位信号rst y=b;-无复位信号,执行赋值操作 END LOOP rs,【例13】LIBRARY IEEE;USE IEEE
13、.STD_LOGIC_1164.ALL;ENTITY shifter IS PORT(data:IN STD_LOGIC_VECTOR(7 DOWNTO 0);shift_left:IN STD_LOGIC;shift_right:IN STD_LOGIC;clk:IN STD_LOGIC;reset:IN STD_LOGIC;mode:IN STD_LOGIC_VECTOR(1 DOWNTO 0);qout:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END shifter;ARCHITECTURE behave OF shifter IS SIGNAL enab
14、le:STD_LOGIC;BEGIN PROCESS BEGIN WAIT UNTIL(RISING_EDGE(clk);-等待时钟上升沿 IF(reset=1)THEN qout qout qout qout NULL;END CASE;END IF;END PROCESS;END behave;,一顺序语句,1.8 RETURN语句,返回语句RETURN有两种语句格式:RETURN;-第一种语句格式RETURN 表达式;-第二种语句格式,一顺序语句,1.8 RETURN语句,【例14】PROCEDURE rs(SIGNAL s,r:IN STD_LOGIC;SIGNAL q,nq:INOU
15、T STD_LOGIC)IS BEGIN IF(s=1 AND r=1)THEN REPORT Forbidden state:s and r are quual to 1;RETURN;ELSE q=s AND nq AFTER 5 ns;nq=s AND q AFTER 5 ns;END IF;END PROCEDURE rs;,一 顺序语句,1.8 RETURN语句,【例15】FUNCTION opt(a,b,opr:STD_LOGIC)RETURN STD_LOGIC IS BEGIN IF(opr=1)THEN RETURN(a AND b);ELSE RETURN(a OR b);
16、END IF;END FUNCTION opt;,一顺序语句,1.10 空操作语句,NULL;,在下例的CASE语句中,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;,二 并行语句,并行信号赋值语句(Concurrent Signal Assignments)。进程语句(Process Statements)。块语句(Block Statements)。条件信号赋值语句(S
17、elected Signal Assignments)。元件例化语句(Component Instantiations),其中包括类属配置语句。生成语句(Generate Statements)。并行过程调用语句(Concurrent Procedure Calls)。参数传递映射语句 端口说明语句,二 并行语句,并行语句在结构体中的使用格式如下:ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 并行语句END ARCHITECTURE 结构体名,二 并行语句,2.1 并行信号赋值语句,1.简单信号赋值语句,赋值目标=表达式,ARCHITECTURE curt OF
18、 bc1 ISSIGNAL 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 ARCHITECTURE curt;,二 并行语句,2.1 并行信号赋值语句,2.条件信号赋值语句,赋值目标=表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE.表达式;,2.条件信号赋值语句,【例16】ENTITY mux IS PORT(a,b,c:IN BIT;p1,p2:IN BIT;z:OUT BIT);END;ARCHITECTURE behv OF mux IS B
19、EGIN z=a WHEN p1=1 ELSE b WHEN p2=1 ELSE c;END;,二 并行语句,二 并行语句,2.1 并行信号赋值语句,2.条件信号赋值语句,图1 例16的RTL电路图,二 并行语句,2.1 并行信号赋值语句,3.选择信号赋值语句,WITH 选择表达式 SELECT 赋值目标信号=表达式 WHEN 选择值表达式 WHEN 选择值.表达式 WHEN 选择值;,【例17】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder IS PORT(a,b,
20、c:IN STD_LOGIC;data1,data2:IN STD_LOGIC;dataout:OUT STD_LOGIC);END decoder;ARCHITECTURE concunt OF decoder IS SIGNAL instruction:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN instruction=c,二 并行语句,2.1 并行信号赋值语句,3.选择信号赋值语句,.WITH selt SELECTmuxout=a WHEN 0|1,-0或1 b WHEN 2 TO 5,-2或3,或4或5 c WHEN 6,d WHEN 7,Z WHEN OT
21、HERS;.,二 并行语句,2.2 实体说明语句,ENTITY 实体名 IS GENERIC(参数名:数据类型);PORT(端口表);END ENTITY 实体名;,二并行语句,2.3 参数传递说明语句,GENERIC(常数名:数据类型:设定值;常数名:数据类型:设定值);,二并行语句,7.2.3 参数传递说明语句,【例18】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY andn IS GENERIC(n:INTEGER);-定义类属参量及其数据类型 PORT(a:IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);-用类属参量
22、限制矢量长度 c:OUT STD_LOGIC);END;ARCHITECTURE behav OF andn IS BEGIN PROCESS(a)VARIABLE int:STD_LOGIC;BEGIN int:=1;FOR i IN aLENGTH-1 DOWNTO 0 LOOP-循环语句 IF a(i)=0 THEN int:=0;END IF;END LOOP;c=int;END PROCESS;END;,二 并行语句,7.2.3 参数传递说明语句,【例19】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY exn IS PORT(d1,d
23、2,d3,d4,d5,d6,d7:IN STD_LOGIC;q1,q2:OUT STD_LOGIC);END;ARCHITECTURE exn_behav OF exn IS COMPONENT andn-调用例10-1的元件调用声明 GENERIC(n:INTEGER);PORT(a:IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);C:OUT STD_LOGIC);END COMPONENT;BEGIN u1:andn GENERIC MAP(n=2)-参数传递映射语句,定义类属变量,n赋值为2 PORT MAP(a(0)=d1,a(1)=d2,c=q1);u2:andn
24、 GENERIC MAP(n=5)-定义类属变量,n赋值为5 PORT MAP(a(0)=d3,a(1)=d4,a(2)=d5,a(3)=d6,a(4)=d7,c=q2);END;,二 并行语句,2.4 参数传递映射语句,GENERIC MAP(类属表),【例20】LIBRARY IEEE;-待例化元件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY addern IS PORT(a,b:IN STD_LOGIC_VECTOR;result:out ST
25、D_LOGIC_VECTOR);END addern;ARCHITECTURE behave OF addern IS BEGIN result=a+b;END;,二 并行语句,7.2.4 参数传递映射语句,GENERIC MAP(类属表),【例21】LIBRARY IEEE;-顶层设计USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY adders IS GENERIC(msb_operand:INTEGER:=15;msb_sum:INTEGER:=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA技术与VHDL第一部分 VHDL语句 EDA 技术 VHDL 第一 部分 语句
链接地址:https://www.31ppt.com/p-2249162.html