《VHDL语法入门》PPT课件.ppt

上传人:牧羊曲112 文档编号:5454319 上传时间:2023-07-08 格式:PPT 页数:78 大小:258.49KB
返回 下载 相关 举报
《VHDL语法入门》PPT课件.ppt_第1页
第1页 / 共78页
《VHDL语法入门》PPT课件.ppt_第2页
第2页 / 共78页
《VHDL语法入门》PPT课件.ppt_第3页
第3页 / 共78页
《VHDL语法入门》PPT课件.ppt_第4页
第4页 / 共78页
《VHDL语法入门》PPT课件.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《《VHDL语法入门》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL语法入门》PPT课件.ppt(78页珍藏版)》请在三一办公上搜索。

1、本章内容,1.1 VHDL程序构件1.2 文法规则1.3 数据对象及类型1.4 运算符与表达式1.5 VHDL语句1.6 进程与子程序1.7 资源库与程序包,1.1 VHDL程序构件,库引用说明实体说明构造体配置说明,1.1 VHDL程序构件,示例,Library ieee;Use ieee.std_logic_1164.all;-entity xor_gate is port(a,b:IN bit;c:OUT bit);end xor_gate;-architecture data_flow1 of xor_gate isbegin c=(a and(not b)or(not a)and b

2、);end data_flow1;-configuration cnf of xor_gate is for data_flow1 end for;end cnf;,-库引用说明,-实体说明,-构造体,-配置说明,1.1 VHDL程序构件,库引用说明对需引用的资源库及程序包进行说明类似于C语言中的.h头文件引用,1.1 VHDL程序构件,实体说明实体entity一个设计实体与外部的接口定义语法格式entity 设计实体名 is 端口说明;end 设计实体名;,1.1 VHDL程序构件,端口说明port(端口信号名:端口模式 数据类型名:=初始值;);端口模式INOUTINOUTBUFFER,1

3、.1 VHDL程序构件,IN从外部输入至实体;单向端口;,entity,1.1 VHDL程序构件,OUT从实体输出至外部;单向端口;,entity,1.1 VHDL程序构件,INOUT可以从外部输入至实体;也可以从实体输出至外部;双向端口;,entity,en,1.1 VHDL程序构件,BUFFER可以从实体输出至外部;也可以从端口回读该输出值至实体;不可以从外部输入至实体;单向端口(伪双向端口);,entity,Q,D,1.1 VHDL程序构件,构造体构造体architecture一个设计实体的功能与(/或)结构描述一个设计实体可以有多个构造体语法格式architecture 构造体名 of

4、 设计实体名 is 说明区;begin 执行语句区;end 构造体名;,1.1 VHDL程序构件,示例1,architecture data_flow of xor_gate isbegin c=(a and(not b)or(not a)and b);end data_flow;,1.1 VHDL程序构件,示例2,architecture behavioral of xor_gate isbegin process(a,b)begin if(a=0 and b=1)then c=1;elsif(a=1 and b=0)then c=1;else c=0;end if;end process;

5、end behavioral;,1.1 VHDL程序构件,示例3,architecture structure of xor_gate is component not_gate port(a:IN bit;b:OUT bit);end component;component and_gate port(a,b:IN bit;c:OUT bit);end component;component or_gate port(a,b:IN bit;c:OUT bit);end component;,signal na,nb:bit;signal c1,c2:bit;begin u1:not_gate

6、 port map(a,na);u2:not_gate port map(b,nb);u3:and_gate port map(a,nb,c1);u4:and_gate port map(b,na,c2);u5:or_gate port map(c1,c2,c);end structure;,1.1 VHDL程序构件,配置说明将具体的构造体分配给实体说明示例,configuration conf1 of xor_gate is for data_flow end for;end conf1;,configuration conf2 of xor_gate is for structure en

7、d for;end conf1;,1.1 VHDL程序构件,关于构件的几点说明实体说明是必须的;构造体是必须的;库引用说明可要可不要,但一般需要;配置说明可要可不要,但一般不需要;,1.2 文法规则,关键字标识符数值表示文法格式,1.2 文法规则,关键字如 entity,architecture,package,configuration,port,begin,end,等,查阅相关资料,1.2 文法规则,标识符26个英文大/小写字母(首字符必用字母);数字0-9;下划线_;不能用关键字;,1.2 文法规则,数值表示数字十进制数,2-16为基的数;整数,浮点实数;前面可加0,中间不能加0;相邻数

8、字之间可插入下划线_;,1.2 文法规则,例子:十进制:012,12_3,2E3;12.0,2.5E2;2进制:2#11_11#,2#1011#E4;2#100.1111#E2;16进制:16#5A#,16#28_C#E4;16#22.8FF#E3;,1.2 文法规则,字符被单引号括起来的ASCII字符,如,aZ,09等;字符串被双引号括起来的ASCII字符,如,“Hello”;位串被双引号括起来的数字序列,其前冠以基数说明符;如,B“0110_1111”,O“117”,X“FFE0”;,1.2 文法规则,文法格式关键字、标识符:不区分大小写;注释:-,且只在该文本行有效;分隔:;为行分隔,V

9、HDL的语句行可写在不同文本行中;空格:除关键字、标识符自身中间不能插入空格外,其他地方可插入任意数目的空格;,1.3 数据对象及类型,数据对象数据类型,1.3 数据对象及类型,数据对象VHDL语言中用于进行赋值等操作的客体 信号(Signal)信号赋值:sig=a+b;信号说明:端口信号port(端口信号名:端口模式 数据类型名:=初始值;);内部信号signal 信号名:数据类型名:=初始值;例:signal sel:bit:=0;,1.3 数据对象及类型,变量(Variable)变量赋值:var:=a+b;变量说明:variable 变量名:数据类型名:=初始值;例:variable d

10、et:bit:=0;,1.3 数据对象及类型,信号与变量的区别信号:用于与外部的接口,及;用于构造体中的各进程模块之间或其内部;全局性数据对象;变量:用于进程、子程序等模块的内部;局部性数据对象;,1.3 数据对象及类型,例子:信号与变量,entity exmp1 is port(a:in Integer;b:out Integer);end;architecture behv of exmp1 is signal c1,c2:Integer;begin b=c1+c2;p1:process(a)variable tmp:integer:=0;begin tmp:=tmp+1;c1=a+tmp

11、;end process;,p2:process(a)variable tmp:integer:=1;begin tmp:=tmp*2;c2=a+tmp;end process;end;,1.3 数据对象及类型,数据类型VHDL语言中数据对象被赋予的类型,如Integer(整型)、Bit(位型)等;VHDL-强类型语言预定义类型 vs.自定义类型:如Integer,Real,Bit等已经在VHDL标准中预先定义,可直接使用;也可按照类型说明的格式自定义用户所需的类型;,1.3 数据对象及类型,类型的分类标量类型(基本数据类型)整数类型实数类型枚举类型物理类型复合类型(基于标量类型的复合数据类型

12、)数组记录,1.3 数据对象及类型,标量类型预定义类型:如Integer,Real,Bit,Boolean,Character,Time等(STANDARD程序包)类型说明(以上述预定义类型说明为例)整型、实型:type Integer is range 2147483647 to+2147483647;-32位整数 type Real is range 1.0E+38 to+1.0E+38;-浮点数,1.3 数据对象及类型,枚举:type Bit is(0,1);type Boolean is(false,true);物理:type Time is range 2147483647 to+2

13、147483647 units fs;ps=1000 fs;ns=1000 ps;us=1000 ns;ms=1000 us;sec=1000 ms;min=60 sec;hr=60 min;end units;,1.3 数据对象及类型,复合类型预定义类型:如数组 Bit_vector 等(STANDARD程序包)类型说明数组:type Bit_vector is array(Natural range)of Bit;-非限定性数组,数组的下标范围可在以后确定,-如,signal d_bus:Bit_vector(7 downto 0);type bit8 is array(7 downto

14、0)of Bit;-自定义数组类型,1.3 数据对象及类型,记录:(电路设计中一般不常用,文件操作中可能用到)type date is record day:Integer range 1 to 31;month:Integer range 1 to 12;year:Integer range 0 to 3000;end record;,1.3 数据对象及类型,子类型对一些已定义的数据类型进行一定的范围限制,从而形成一种特殊的数据类型子类型说明标量子类型:subtype int4 is Integer range(-8 to 7);非限定性数组子类型:subtype bit8 is Bit_v

15、ector(7 downto 0);,1.3 数据对象及类型,隐含子类型说明(没有显式的子类型名)signal dat:Integer range 0 to 15;variable bit8:Bit_vector(0 to 7);,1.3 数据对象及类型,子类型的特点在运算中对数值范围进行限制;子类型与其父类型相兼容,可以相互操作;例:,architecture st of sub_test is subtype int4 is integer range 8 to 7;type my_int4 is range 8 to 7;signal a1,a2:integer;signal b:int

16、4;signal c:my_int4;Begin a1=b;-legal a2=c;-illegal!end st;,1.4 运算符与表达式,运算符表达式,1.4 运算符与表达式,运算符VHDL语言中用于进行算术、逻辑等运算的标识符或其它符号 算术运算符:、MOD、REM、*、ABS关系运算符:、逻辑运算符:NOT、AND、NAND、OR、NOR、XOR符号运算符:(正号)、(负号)连接运算符:&(字符串 or 位串),1.4 运算符与表达式,表达式VHDL语言中由运算符将对象、常数、函数调用及括号等基本元素连接起来的式子算术表达式:a b关系表达式:x y逻辑表达式:a1 AND a2,1.

17、5 VHDL语句,并行语句顺序语句说明语句,1.5 VHDL语句,并行语句可以并发执行的语句,其结果与书写先后顺序无关并行信号赋值语句进程语句元件例化语句,1.5 VHDL语句,例子,entity contrl is port(n:IN integer;clk:IN bit;clk_out:OUT bit);end;architecture exmp of contrl is component clk_gen port(clk_in,switch:IN bit;clk_out:OUT bit);end component;-switch=1:2分频-switch=0:原频-signal sw

18、,cmp:bit;,begin u1:clk_gen port map(clk,sw,clk_out);sw=2 then cmp=0;else cmp=1;end if;end process;end;,1.5 VHDL语句,并行信号赋值语句语法格式:信号名=表达式 after t;-表达式:包含有信号、常量、运算符等 语句激活时机:赋值号右边表达式中的信号变化变型1:条件信号赋值语句when else 型变型2:选择信号赋值语句with select/when 型,1.5 VHDL语句,进程语句语法格式:进程标号:process(进程敏感信号表)说明语句;begin顺序执行语句;end p

19、rocess;语句激活时机:敏感信号表中的信号发生变化,1.5 VHDL语句,元件例化语句语法格式:元件标号:元件名 port map(接口信号实参表);语句激活时机:元件接口信号表中的信号发生变化,1.5 VHDL语句,并行语句的两种状态激活态:语句被激活进而执行相关操作的状态;空闲态:语句执行完毕之后转为挂起休眠的状态,等待下一次激活;,1.5 VHDL语句,顺序语句必须顺序执行的语句,其执行结果与书写先后顺序有关赋值语句分支控制语句循环控制语句同步控制语句,1.5 VHDL语句,赋值语句信号赋值语句变量赋值语句分支控制语句条件IF语句块选择CASE语句块,1.5 VHDL语句,循环控制语

20、句while 条件表达式 loopfor 循环步进条件 loop Next 语句Exit 语句同步控制语句wait onwait untilwait for,1.5 VHDL语句,说明语句非执行语句,用于说明或定义端口说明:实体类型说明:程序包、构造体、进程、子程序对象说明:构造体/进程、子程序元件说明:构造体子程序说明:程序包、构造体、进程、子程序库引用说明:实体 之前,1.6 进程与子程序,进程子程序,1.6 进程与子程序,进程示例,architecture behavioral of xor_gate isbegin process(a,b)bein if(a=0 and b=1)the

21、n c=1;elsif(a=1 and b=0)then c=1;else c=0;end if;end process;end behavioral;,1.6 进程与子程序,特点模块形式的并行语句,只能出现在构造体的程序区;主要用于设计实体的算法和功能描述,即行为描述;其程序区只能包含顺序语句;可包含信号和变量两种数据对象:变量为进程内部对象,不可跨越进程;信号为实体全局对象,用于与其它实体内模块建立联系;,1.6 进程与子程序,语法格式进程标号:process(敏感信号表)进程说明区 begin进程程序区 end process;进程说明区:只能定义类型、变量、子程序,不能定义信号;进程程

22、序区:只能包含顺序语句;,敏感信号表可以激活该进程的信号列表敏感信号表中信号的变化将激活所在进程;敏感信号表中只能包含信号,不能包含变量;,1.6 进程与子程序,process(a,b)variable tmp:bit;begin tmp:=a or b;c=not tmp;end process;,1.6 进程与子程序,同步控制例子,process()variable tmp:bit;begin tmp:=a or b;c=not tmp;wait on a,b;end process;,1.6 进程与子程序,wait 语句wait on 信号列表;-只能是信号例:wait on a,b;w

23、ait until 条件表达式;-必须有信号,但可包含变量、常量例:wait until a=b+2;wait for 时间表达式;-一般是时间常数例:wait for 10 ns;,1.6 进程与子程序,几点说明wait 语句可以放在进程程序区的任何位置,但结果可能有所差异;,process()variable tmp:bit;begin tmp:=a or b;c=not tmp;wait on a,b;end process;,process()variable tmp:bit;begin wait on a,b;tmp:=a or b;c=not tmp;end process;,1.

24、6 进程与子程序,一个进程内可包含多个wait 语句;,process()variable tmp:bit;begin wait for 10 ns;tmp:=a or b;wait until a=1;c=not tmp;wait on a,b;end process;,1.6 进程与子程序,敏感信号表与 wait on 语句等价;,process()variable tmp:bit;begin tmp:=a or b;c=not tmp;wait on a,b;end process;,process(a,b)variable tmp:bit;begin tmp:=a or b;c=not

25、 tmp;end process;,1.6 进程与子程序,敏感信号表与 wait 语句互斥;,-Legal-process()variable tmp:bit;begin tmp:=a or b;c=not tmp;wait on a,b;end process;,-Illegal-process(a,b)variable tmp:bit;begin tmp:=a or b;c=not tmp;wait until a=1;end process;,1.6 进程与子程序,子程序分类:过程(procedure)、函数(function)示例:Min函数,function Min(a,b:Inte

26、ger)return Integer isbegin if ab then return a;else return b;end if;end;,1.6 进程与子程序,函数语法格式:function 函数名(入口参数表:数据类型)return 函数数据类型 is 函数说明区;-类型、变量、子程序begin 函数程序区;-顺序语句end 函数名;函数说明区可以定义类型、变量,或其它子程序;函数程序区只能使用顺序语句;函数程序区不能直接引用外部信号,也不能直接赋值给外部信号;函数程序区只能通过入口形式参数表间接引用外部信号;必须用return语句返回函数值;,1.6 进程与子程序,子程序重载(Ov

27、erload)如果相同功能的子程序,只是入口参数类型、数目及/或出口参数类型、数目不同,可以使用相同的子程序名,称为子程序重载,function Min(a,b:Real)return Real isbegin if ab then return a;else return b;end if;end;,1.7 资源库与程序包,资源库程序包常用资源库及其程序包Library/Use说明语句,1.7 资源库与程序包,资源库库单元程序包实体说明实体构造体配置,1.7 资源库与程序包,程序包:说明定义一些公用的类型、函数等 简单例子:,package my_pack is type int4 is r

28、ange 8 to 7;type uint4 is range 0 to 15;end my_pack;,1.7 资源库与程序包,常用资源库及其程序包STD 库基本库属于VHDL标准本身隐式说明所含程序包Standard:隐式说明Textio:需显式说明,1.7 资源库与程序包,IEEE 库扩展库不属于VHDL标准本身需显式说明所含程序包std_logic_1164:需显式说明std_logic_arith:需显式说明std_logic_signed:需显式说明std_logic_unsigned:需显式说明,1.7 资源库与程序包,std_logic_1164std_ulogic,type

29、std_ulogic is(U,-Uninitialized,未初始化状态,或状态未建立(最强的状态)X,-Forcing Unknown,强未知 0,-Forcing 0,强0 1,-Forcing 1,强1 Z,-High Impedence,高阻(最弱的状态)W,-Weak Unknown,弱未知 L,-Weak 0,弱0 H,-Weak 1,弱1-);-Dont Care,无关状态(可为以上的任何一种状态)*常用状态:1,0,Z,1.7 资源库与程序包,std_logic std_ulogic的决断子类型 SUBTYPE std_logic IS resolved std_ulogic

30、;std_logic:可为多驱动源信号,-CONSTANT resolution_table:stdlogic_table:=(-|U X 0 1 Z W L H-|-(U,U,U,U,U,U,U,U,U),-|U|(U,X,X,X,X,X,X,X,X),-|X|(U,X,0,X,0,0,0,0,X),-|0|(U,X,X,1,1,1,1,1,X),-|1|(U,X,0,1,Z,W,L,H,X),-|Z|(U,X,0,1,W,W,W,W,X),-|W|(U,X,0,1,L,W,L,W,X),-|L|(U,X,0,1,H,W,W,H,X),-|H|(U,X,X,X,X,X,X,X,X)-|-|)

31、;,1.7 资源库与程序包,FUNCTION resolved(s:std_ulogic_vector)RETURN std_ulogic IS VARIABLE result:std_ulogic:=Z;-weakest state default BEGIN-the test for a single driver is essential otherwise the-loop would return X for a single driver of-and that-would conflict with the value of a single driver unresolved-

32、signal.IF(sLENGTH=1)THEN RETURN s(sLOW);ELSE FOR i IN sRANGE LOOP result:=resolution_table(result,s(i);END LOOP;END IF;RETURN result;END resolved;,1.7 资源库与程序包,std_logic_vector:一维数组TYPE std_logic_vector IS ARRAY(NATURAL RANGE)OF std_logic;常用转换函数To_bit();-std_ulogic,std_logic;To_bitvector();-std_ulogi

33、c_vector,-std_logic_vector;To_stdulogic();-bit;To_stdulogicvector();-bit_vector,-std_logic_vector;To_stdlogicvector();-bit_vector,-std_ulogic_vector;,1.7 资源库与程序包,WORK库:当前工作库自定义库:取决于具体的VHDL编译系统,1.7 资源库与程序包,Library/Use说明语句Library 语句例:Library IEEE,My_lib;隐含说明:library std;library work;,1.7 资源库与程序包,Use语句例:;Usework.my_pack.all;Use ieee.std_logic_1164.std_ulogic;隐含说明:use std.standard.all;,1.7 资源库与程序包,VHDL设计中的常用组合:Library ieee;Use ieee.std_logic_1164.all;Use;Use;(或Use;)Use work.your_pack.all;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号