硬件描述语言VHDL基础.ppt
《硬件描述语言VHDL基础.ppt》由会员分享,可在线阅读,更多相关《硬件描述语言VHDL基础.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章硬件描述语言VHDL基础n3.1VHDL语言程序的基本结构n3.2VHDL语言的数据类型及运算操作符n3.3VHDL语言的主要描述语句n3.4VHDL语言构造体的描述方式1n3.1VHDL语言程序的基本结构实体(Entity),构造体(Architecture),配置(Configuration),包集合(Package),和库(Library)-eqcomp4isafourbitequalitycomparatorLibraryIEEE;useIEEE.std_logic_1164.all;entityeqcomp4isport(a,b:instd_logic_vector(3down
2、to0);equal:outstd_logic);endeqcomp4;architecturedataflowofeqcomp4isbegin equal=1whena=belse0;Enddataflow;eqcomp4.vhd包实体构造体文件名和实体名一致每行;结尾关键字begin关键字end后跟构造体名关键字end后跟实体名库VHDL 大小写不敏感大小写不敏感2VHDL语言设计的基本设计单元n实体(Entity)描述此设计功能输入输出端口(Port);在层次化设计时,Port为模块之间的接口;在芯片级,则代表具体芯片的管脚。n实体说明 ENTITY实体名IS PORT PORT(端口名
3、(,端口名):方向 数据类型名;:端口名(,端口名):方向 数据类型名);END END 实体名;Entityeqcomp4isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;a3.0b3.0equal3n基本数据类型:nBIT和BIT_VECTORnSTD_LOGIC和STD_LOGIC_VECTORn端口模式方向方向 说明说明 IN输入到实体 OUT从实体输出 INOUT双向(可作为CPU的数据总线)BUFFER 输出(但可以反馈到实体内部)LINKAGE 不指定方向 4nOut与Buffer的区别E
4、ntitytest1isport(a:instd_logic;b,c:outstd_logic);endtest1;architectureaoftest1isbeginb=not(a);c=b;-Errorenda;Entitytest2isport(a:instd_logic;b:bufferstd_logic;c:outstd_logic);endtest2;architectureaoftest2isbeginb=not(a);c=b;enda;结论:均表示输出,但BUFFER声明的信号可以反馈到实体内部,而OUT声明的信号却不可以。5n构造体n描述设计单元具有的具体功能n结构体有三种
5、描述方式n行为描述(behavioral)n数据流描述(dataflow)n结构化描述(structural)n格式:ARCHITECTURE构造体名OF实体名IS定义语句内部信号,常数,数据类型,函数等的定义BEGIN并行处理语句ENDEND 构造体名;6n构造体中的描述语句n并行语句:同时执行,在进程语句(PROCESS)的外部。n顺序语句:按书写顺序执行,在进程语句(PROCESS)的内部。例如:entityentity sample isis portport(a,b:in std_logic;c:out std_logic);end end sample;architecture a
6、rchitecture beha ofof sample isis signalsignal d:std_logic;beginbegind=a and b;C=not(d);endend beha;信号并行处理73.1.2 构造体的子结构描述 3种形式的子结构描述:nBLOCK描述(块描述)nPROCESS描述(进程描述)nSUBPROGRAMS描述(子程序描述)nBLOCK语句描述n格式:块标号:BLOCKBLOCK BEGINBEGIN :END BLOCKEND BLOCK 块标号;nBLOCK内的语句执行顺序:并行执行 8例如:二选一电路 ENTITYENTITY mux ISIS
7、PORTPORT(d0,d1,sel:IN BIT;q:OUT BIT);ENDEND mux;ARCHITECTURE ARCHITECTURE connect OFOF mux ISIS SIGNALSIGNAL tmp1,tmp2,tmp3:BIT;BEGINBEGIN cale:BLOCKBLOCK BEGINBEGIN tmp1=d1 AND sel;tmp2=d0 AND(NOT sel);tmp3=tmp1 OR tmp2;q=tmp3;END BLOCKEND BLOCK cale;END END connect;9n进程(PROCESS)描述n格式:进程名:PROCESSPR
8、OCESS(信号1,信号2,)BEGINBEGIN :END PROCESSEND PROCESS 进程名;n敏感量:n是PROCESS的输入信号,写在“PROCESS”后面的括号中n当PROCESS所带的敏感量任何一个发生变化时,PROCESS中的语句就会执行一遍。n语句执行顺序:顺序执行。n多进程的关系:并行执行。10例如:二选一电路 ENTITYENTITY mux1 ISIS PORTPORT(d0,d1,sel:IN BIT;q :OUT BIT);ENDEND mux1;ARCHITECTUREARCHITECTURE connect OFOF mux1 ISIS BEGINBEG
9、IN cale:PROCESSPROCESS(d0,d1,sel)VARIABLEVARIABLE tmp1,tmp2,tmp3 :BIT;-在进程中定义的变量 BEGIN BEGIN tmp1:=d0 AND sel;-输入端口向变量赋值 tmp2:=d1 AND(NOT sel);tmp3:=tmp1 OR tmp2;qb)thenq:=a;elseq:=b;endif;endmax;beginprocess(da,db)variabletemp:std_logic_vector(7downto0);beginmax(da,db,temp);o1b)thentemp:=a;elsetemp
10、:=b;endif;returntemp;endmax;begino1b)thentemp:=a;elsetemp:=b;endif;returntemp;endmax;endbpac;包集合标题包集合体库的使用说明21libraryieee;useieee.std_logic_1164.all;librarywork;use;entityconpackisport(da,db:instd_logic_vector(7downto0);o1:outstd_logic_vector(7downto0);endconpack;architecturebehaofconpackisbegino1se
11、t,b=qb,c=q)U2:nand2PORTMAP(a=reset,b=q,c=qb)ENDrsff1;ARCHITECTURErsff2OFrsISBEGINq=NOT(qbANDset);qb=NOT(qANDreset);ENDrsff2;CONFIGRATIONrsconOFrsIS-选择构造体rsff1FORrsff1ENDFOR;ENDrscon;构造体1构造体2配置:选择构造体rsff12432 VHDL语言的数据类型及运算操作符321 VHDL语言的客体(数据对象)n客体:在VHDL语言中,凡是可以赋予一个值的对象就称为客体。n分类n信号(signal):代表物理设计中的某一
12、条硬件连接线。n变量(variable):代表暂存某些值的载体。n常数(constant):代表数字电路中的电源和地线。客体类别客体类别 含含 义义 说说 明明 场场 合合 信号说明全局量architecture,package,entity变量说明局部量process,function,procedure常数说明全局量上面两种场合都可存在25n常数n意义:对某一常数名赋予一个固定的值;综合后,连接到电源和地。n格式:CONSTANT 常数名:数据类型:=表达式;例如:CONSTANT Vcc:REAL:=5.0;n变量n格式:VARIABLE 变量名:数据类型 约束条件:=表达式;例如:VA
13、RIABLE count:INTEGER RANGE 0 TO 255:=10;n特点:临时数据,没有物理意义;只能在进程、函数和过程中使用,一旦赋值立即生效;用:=进行赋值。n信号n格式:SIGNAL信号名:数据类型约束条件:=表达式;例如:SIGNAL ground:BIT:=0;26n特点:n没有方向性,可给它赋值,也可当作输入。例如:tmp3=tmp1 OR tmp2;q=tmp3;n设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。在MaxPlusII中被忽略。n用=进行赋值n信号与变量的区别n信号赋值可以有附加延迟,变量赋值不可以有附加延迟;例如:s1=s2 AFTER
14、 10nsn信号可以看作硬件的一根连线,而变量存放临时数据,没有物理意义。n作用范围不同:进程对信号敏感,对变量不敏感;信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见。27architectureaofstartissignaltmp:std_logic;begins0:process(a_bus)begintmp=1;foriin3downto0looptmp=a_bus(i)andtmp;endloop;carryout=tmp;endprocesss0;s1:process(tmp)beginendprocesss1;enda;architectureaofstartis
15、begins0:process(a_bus)variabletmp:std_logic;begintmp:=1;foriin3downto0looptmp:=a_bus(i)andtmp;endloop;carryout=tmp;endprocesss0;s1:process(tmp)-errorbeginendprocesss1;enda;28n代入方式不同:信号的代入过程和代入语句的处理是分开进行的,而变量赋值语句一旦执行,其值立即被赋予变量。process(a,b,c,d)begind=a;x=b+d;d=c;y=b+d;endprocess;运行结果:x=b+c;y=b+c;proce
16、ss(a,b,c)variable d:std_logic_vector(3 downto0);begind:=a;x=b+d;d:=c;y=b+d;endprocess;运行结果:x=b+a;y=b+c;29nVHDL标识符(Identifiers)n基本标识符由字母、数字和下划线组成n第一个字符必须是字母n最后一个字符不能是下划线n不允许连续2个下划线n保留字(关键字)不能用于标识符n大小写是等效的30322 数据类型n标准数据类型:实数、整数、位、位矢量、布尔量、字符、字符串、时间、正整数、错误等级。n整数、浮点数n方便用于数值方面的运算:加减乘除n整数:integer,经常用于计数器n
17、实数:real,MaxPLusII不支持例如:Variable a:integer range 255 to+255;n位:表示位信号,位的值用带单引号的1或0来表示。例如:signal a:bit:=0;或 a=0;n位矢量:表示多位组成的信号,位矢量的值用双引号括起来。例如:signal a:bit_vector(3 downto 0):=“0011”;或 a=“0011”;31n用户定义的数据类型n格式:TYPE数据类型名,数据类型名数据类型定义不完整的数据类型格式:TYPE 数据类型名,数据类型名;-假定义n可由用户定义的数据类型包括:枚举(ENUMERATED)、整数(INTEGER
18、)、实数(REAL)、数组(ARRAY)、时间(TIME)、记录(RECODE)n枚举(ENUMERATED):n格式:TYPE 数据类型名 IS(元素、元素、);n作用:列举数据对象可能存在的值例如:用于定义状态机的状态Typestatesis(idle,start,running,pause,stop)Signalcurrent_state:states;32例如:IEEE1076标准中预定义了两个枚举类型Typebooleanis(False,True);Typebitis(0,1);Signala:bit;例如:IEEE1164标准中预定义了一个枚举类型Typestd_logicis(
19、U,X,0,1,Z,W,L,H,-);n该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替bitU初始值;X不定;00;11;Z高阻;W弱信号不定;L 弱信号0;H 弱信号1;-不可能情况。nSignal a:std_logic;n注意:注意:这里的大小写是敏感的33n数组(ARRAY)n格式:TYPE数据类型名ISARRAY范围OF原数据类型名;n多个相同类型成员组成的队列,一般用于定义数据总线、地址总线等。例如:Signala:std_logic_vector(7downto0);a=B“00111010”;a=X“3A”;n可自定义复合类型Typewordi
20、sarray(15downto0)ofbit;Signalb:word;Typetable8x4isarray(0to7,0to3)ofbit;34n记录(RECODE)n格式:TYPE 数组类型名 ISRECORD 元素名:数据类型名;元素名:数据类型名;:ENDRECORD;n相同或不同类型的元素组成,类似C中的结构n具有模型抽象能力,用于描述一个功能模块。例如:TypeiocellisrecordEnable:bit;DataBus:bit_vector(7downto0);endrecord;singalbus:iocell;bus.Enable=1;bus.DataBus=“0011
21、0110”;定义访问35n数据类型的转换:VHDL是强类型语言,必须用类型转换函数才能进行不同类型之间的转换。函数函数说明说明STD_LOGIC_1164包包TO_STDLOGICVECTOR(A)TO_BITVECTOR(A)TO_LOGIC(A)TO_BIT(A)由BIT_VECTOR转换成STD_LOGIC_VECTOR由STD_LOGIC_VECTOR转换成BIT_VECTOR由BIT转换成STD_LOGIC由STD_LOGIC转换成BITSTD_LOGIC_ARITH包包CONV_STD_LOGIC_VECTOR(A,位长)CONV_INTEGER(A)由INTEGER,UNSIGN
22、ED和SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED和SIGNED转换成INTEGERSTD_LOGIC_UNSIGNED包包CONV_INTEGERSTD_LOGIC_VECTOR转换成INTEGER36例如:由STD_BIT_VECTOR转换成INTEGERLIBRARYIEEE;ENTITYadd5ISPORT(num:INSTD_LOGIC_VECTOR(2DOWNTO0);:);ENDadd5;ARCHITECTURErtlOFadd5ISSIGNALin_num:INTEGERRANGE0TO5;:BEGINIn_num=CONV_INTEGER(num);E
23、NDrtl;37n属性(Attributes)n提供Entity、Architecture、Type和Signals的信息n有许多预定义的值、信号和范围的属性n一个最常用的属性:eventifclkeventandclk=1thennleft,right,high,low,length例如:typecountisintegerrange0to127countleft=0;countright=127;counthigh=127;countlow=0;countlength=128;38323运算操作符n逻辑运算符AND、OR、NAND、NOR、XOR、NOTn关系运算符=、/=、=n算术运算符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 描述 语言 VHDL 基础
限制150内