一个简单的VHDL程序.ppt
- 文档编号:18913698
- 上传时间:2024-02-11
- 格式:PPT
- 页数:31
- 大小:147KB
一个简单的VHDL程序.ppt
《一个简单的VHDL程序.ppt》由会员分享,可在线阅读,更多相关《一个简单的VHDL程序.ppt(31页珍藏版)》请在冰点文库上搜索。
VHDL程序结构和要素VHDL程序基本结构VHDL语言的结构体描述方法VHDL语言要素VHDL基本描述语句一个简单的VHDL程序Libraryieee;Useieee.std_logic_1164.all;Entitymux21isPort(A,B,S:
instd_logic;Z:
outstd_logic);Endmus21;Architectureoneofmux21isBeginZ=AwhenS=0elseB;End;VHDL程序的基本结构VHDL的设计描述包括库(library)、实体(entity)和结构体architecture)1、库库已经存储和放置了可被其他VHDL程序调用的数据定义。
器件说明、程序包等资源。
库的种类很多,常见的库有IEEE标准库、work库。
标准库里主要包括std_logic_1164、numeric_bit和numberic_std.2实体实体有点类似原理图中的一个器件符号,用来描述该器件的输入输出端口特征,但不涉及器件的具体逻辑功能和内部电路结构格式:
entity实体名is【generic(类属表)】【port(端口说明;】end实体名;3结构体用来描述前面定义的实体内部结构和逻辑功能。
结构体必须和实体相联系,一个实体可以有多个结构体。
他的运行是并行的。
格式:
Architecture结构体名of实体名is说明语句Begin功能描述语句End结构体名;VHDL结构体的三种描述方法
(1)行为描述方法只描述电路的功能或称为行为,即电路输入与输出间的转换的行为,而不包含实现这些功能的硬件结构信息。
称为行为描述。
举例:
采用行为描述方式的2选1多路选择器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21ISPORT(a,b:
INSTD_LOGIC;s:
INSTD_LOGIC;y:
OUTSTD_LOGIC);ENDENTITYmux21;ARCHITECTUREbehavOFmux21ISBEGINPROCESS(a,b,s)BEGINIFs=0THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREbehav;
(2)结构体描述方法从实体的硬件结构方面描述,包含元件的说明。
元件之间的互连说明。
采用的基本语句是元件例化语句或生成语句。
这要求设计者具有较好的硬件基础例:
用VHDL语言的结构描述法描述2选1数据选择器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYand21ISPORT(i0,i1:
INSTD_LOGIC;q:
OUTSTD_LOGIC);ENDENTITYand21;ARCHITECTUREoneOFand21ISBEGINq=i0ANDi1;ENDARCHITECTUREone;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYor21ISPORT(i0,i1:
INSTD_LOGIC;q:
OUTSTD_LOGIC);ENDENTITYor21;ARCHITECTUREoneOFor21ISBEGINq=i0ORi1;ENDARCHITECTUREone;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYinv21ISPORT(i0:
INSTD_LOGIC;q:
OUTSTD_LOGIC);ENDENTITYinv21;ARCHITECTUREoneOFinv21ISBEGINq=(NOTi0);ENDARCHITECTUREone;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21ISPORT(a,b:
INSTD_LOGIC;s:
INSTD_LOGIC;y:
OUTSTD_LOGIC);ENDENTITYmux21;ARCHITECTUREstructOFmux21ISCOMPONENTand21-元件调用语句PORT(i0,i1:
INSTD_LOGIC;q:
OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTor21PORT(i0,i1:
INSTD_LOGIC;q:
OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTinv21PORT(i0:
INSTD_LOGIC;q:
OUTSTD_LOGIC);ENDCOMPONENT;SIGNALtmp1,tmp2,tmp3:
STD_LOGIC;BEGINu1:
and21PORTMAP(b,s,tmp1);-端口映射语句,标号名不省略u2:
inv21PORTMAP(s,tmp2);u3:
and21PORTMAP(a,tmp2,tmp3);u4:
or21PORTMAP(tmp1,tmp3,y);ENDARCHITECTUREstruct;程序中要用到的2输入与门、或门非门,必须预先设计好,通过编译后放入用户工作库里。
(3)数据流程描述法也称为RTL(寄存器传输级)描述方式,类似于布尔方程这种描述主要是反映数据经过一定的逻辑运算后在输入和输出间的传递。
举例:
采用数据流描述方式2选1多路选择器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21ISPORT(a,b:
INSTD_LOGIC;s:
INSTD_LOGIC;y:
OUTSTD_LOGIC);ENDENTITYmux21;ARCHITECTUREdataflowOFmux21ISBEGINy=(aAND(NOTs)OR(bANDs);ENDARCHITECTUREdataflow;VHDL的语言的要素VHDL的语言要素,作为硬件描述语言的基本元素,主要有标识符、数据对象、数据类型和运算操作符等1、标识符VHDL标识符的命名规则
(1)有效字符是26个英文字母(不区分大小写)、10个数字符号0-9、下划线(不能用到开头)
(2)每个标识符用英文字母开头,字符串中不能有空格。
2、数据对象凡是可以赋予一个值的客体叫对象,包括常量、信号与变量
(1)常量在设计中不会变的值。
主要是为了程序更容易阅读和修改。
它必须在程序包、实体、构造体或进程的说明区域加以说明。
一般要赋予初始值,且只能被赋值一次。
常量定义的一般表达式:
constant常量名:
数据类型:
=表达式;例:
constantwidth:
integer:
=8;
(2)变量是一个局部量,只能在进程和子程序中使用。
作用是在进程中作为临时的数据存储单元。
变量的赋值是立即发生的,而不存在任何延时。
变量的定义:
variable变量名:
数据类型:
=初始值;例:
variabletemp:
bit;与常量不同,它可以多次赋值。
赋值的表达式表述:
目标变量名:
=表达式;变量的赋值语句有几种:
整体赋值:
temp:
=“01011100”;temp:
=x“5c”;逐位赋值:
temp(6):
=1;多位赋值:
temp(6downto3):
=“1011”;(3)信号是描述硬件系统的基本数据对象,与硬件中的”连线“相对应,一般而言,信号是全局变量,使用范围是实体、结构体和程序包。
信号的定义:
Signal信号名:
数据类型:
=初始值;信号可以多次赋值,赋值表达式:
目标信号名=表达式;这种方式允许产生延时与变量不同的是,信号的赋值要经过延时后才能成为当前值。
信号的作用:
在进程间传递信息,完成进程间通信;二是在结构设计中用来连接元件,实现元件间的通信。
例:
libraryieee;Useieee.std_logic_1164.all;EntityzuheisPort(a,b,c,d:
instd_logic;G:
outstd_logic);Endzuhe;ArchitechureoneofzuheisSignale,f:
std_logic;BeginE=aorb;F=not(cord);G=)、小于等于(=);(3)算术运算符加、减、乘(*)、除(/)、MOD(取模)、REM(取余)、ABS(绝对值)、乘方(*)(4)移位运算符逻辑左移(SLL)、逻辑右移(SRL)、算术左移(SLA)、算术右移(SRA)、逻辑循环左移(ROL)、逻辑循环右移(ROR)(5)并置运算符“&”用于位的连接,将几个位用并置运算符连接起来,可以构成一个具有4位长度的位矢量使用运算符时注意:
(1)操作符之间的优先级
(2)运算重载如两信号数据类型不同,不能将一个信号的值赋给另一个信号。
数据类型的转换必须要用运算重载。
一般用ieee1164中的标准重载函数实现。
Libraryieee;Useieee_std_logic_1164.all;Useieee_std_logic_arith.allUseieee_std_logic_unsigned.allUseieee_std_logic_signed.all程序包里有转换函数数据类型转换函数有VHDL语言的包提供,例如:
STD_LOGIC_1164,STD_LOGIC_ARITH等转换函数见表:
函数说明STD_LOGIC_1164包;TO_STDLOGICVECTOR(A);由BIT_VECTOR转换成STD_LOGIC_VECTORTO_BITVECTOR(A);由STD_LOGIC_VECTOR转换成BIT_VECTORTO_LOGIC(A);由BIT转换成STD_LOGICTO_BIT(A);由STD_LOGIC转换成BITSTD_LOGIC_ARITH包;CONV_STD_LOGIC_VECTOR(A,位长);由INTEGER,UNSIGNED和SIGNED转换成STD_LOGIC_VECTORCONV_INTEGER(A);由UNSIGNED和SIGNED转换成INTEGERSTD_LOGIC_UNSIGNED包CONV_INTEGER;STD_LOGIC_VECTOR转换成INTEGER例:
由STD_BIT_VECTOR转换成INTEGERLIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALLUSEIEEE.STD_LOGIC_UNSIGNED.ALLENTITYadd5ISPORT(num:
INSTD_LOGIC_VECTOR(2DOWNTO0);:
);ENDadd5;ARCHITECTURErtlOFadd5ISSIGNALin_num:
INTEGERRANGE0TO5;:
BEGINIn_num=CONV_INTEGER(num);ENDrtl;VHDL程序的句法VHDL程序的功能描述语句分为并行语句和顺序语句两种类型一.并行语句有多种形式,包括信号赋值语句、进程语句。
元件例划语句、块语句。
子程序调用语句。
并行语句在结构体执行中是同步进行的,与书写的顺序无关。
进程语句包含在结构体中,一个结构体可以有多个进程语句,多个进程语句间是并行的,并可访问结构体或实体中定义的信号。
因此进程语句称为并行描述语句。
常用的并行语句:
1、信号赋值语句
(1)简单信号赋值语句格式:
信号赋值目标=表达式;出现在进程之外;进程内是顺序语句。
只有当赋值符号“=”右边的对象有事件发生时才会执行该语句。
(2)条件信号赋值语句格式:
赋值目标=表达式1when赋值条件1else表达式2when赋值条件2else.表达式nwhen赋值条件nelse表达式n+1;例:
用条件信号赋值语句描述4选1数据选择器Libraryieee;Useieee.std_logic-1164.all;Entitymux4tolisPort(a,b,c,d:
instd_logic;sel:
onstd_logic_vector(1downto0);y:
outstd_logic);Endmux4tol;Architectureoneofmux4tolisBeginY=awhen(sel=“00”)elseawhen(sel=“01”)elseawhen(sel=“10”)elsed;end;(3)选择信号赋值语句格式:
with选择表达式select赋值目标信号=表达式1when选择值1,表达式2when选择值2,.表达式nwhen选择值n;所有的“when”子句必须是互斥的,一般用”whenothers”来除了未考虑的情况,每个子句结尾用逗号,最后一句用分号。
举例:
采用选择信号赋值语句描述4选1选择器的实例LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcselector_41ISPORT(d:
INSTD_LOGIC_VECTOR(3DOWNTO0);sel:
INSTD_LOGIC_VECTOR(1DOWNTO0);q:
OUTSTD_LOGIC);ENDENTITYcselector_41;ARCHITECTUREdata_flowOFcselector_41ISSIGNALdata_select:
INTEGERRANGE0TO4;BEGIN-用选择信号代入语句描述4选1选择器WITHdata_selectSELECTq=d(0)AFTER7nsWHEN0,d
(1)AFTER7nsWHEN1,d
(2)AFTER7nsWHEN2,d(3)AFTER7nsWHEN3,XWHENOTHERS;data_select=0WHEN(sel=00)ELSE1WHEN(sel=01)ELSE2WHEN(sel=10)ELSE3WHEN(sel=11)ELSE4;ENDARCHITECTUREdata_flow;2、进程语句进程语句是VHDL中最重要的语句。
进程具有并行和顺序行为的双重性,即进程和进程语句之间是并行的,进程内部是一组连续执行的顺序语句。
进程语句与结构体中的其余部分进行信息交流是靠信号完成的。
格式:
process(敏感信号表)进程说明部分Begin顺序语句Endprocess;进程由三部分组成:
(1)敏感信号表动作的敏感信号放在敏感信号表中。
敏感信号表中的任一信号发生变化,都将启动进程,执行进程内部相应的顺序语句。
一般来说,进程中的所有输入信号都应放在敏感表中。
(2)进程说明部分主要定义一些局部变量,看包括数据类型、常数、变量等;注意不允许定义信号和共享变量。
(3)顺序语句包括赋值语句、流程控制语句(IF语句、CASE语句、loop语句)、等待语句(wait)等利用进程语句设计半加器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYchalf_adderISPORT(data1,data2:
INSTD_LOGIC;sum:
OUTSTD_LOGIC;carry:
OUTSTD_LOGIC);ENDENTITYchalf_adder;ARCHITECTUREbehavOFchalf_adderISBEGINchalfadder_inst:
PROCESS(data1,data2)BEGINsum=data1XORdata2AFTER5ns;carry=data1ANDdata2AFTER5ns;ENDPROCESSchalfadder_inst;ENDARCHITECTUREbehav;二、顺序语句顺序语句处在进程、过程、子程序、块语句的内部。
常见的有几种:
1、信号与变量赋值语句格式:
变量赋值语句变量赋值目标:
=赋值源;信号赋值语句信号赋值目标:
=赋值源;2、流程控制语句通过条件控制开关决定是否决定执行一条或几条语句。
(1)IF语句、IF条件句THEN顺序语句ENDIF;采用单IF语句来描述D触发器的示例程序。
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcdff1ISPORT(d:
INSTD_LOGIC;clk:
INSTD_LOGIC;q:
OUTSTD_LOGIC;qnot:
OUTSTD_LOGIC);ENDcdff1;ARCHITECTUREdataflowOFcdff1ISBEGINcdff_example:
PROCESS(clk)BEGINIF(clkEVENTANDclk=1)THEN-单IF语句q=d;qnot=NOTd;ENDIF;ENDPROCESScdff_example;ENDdataflow;、IF条件句THEN-二选择的IF语句顺序语句ELSE顺序语句END;采用二选择的IF语句来描述二选一选择器的示例程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux2_2ISPORT(a0,a1:
INBIT;sel:
INBIT;q:
OUTBIT);ENDmux2_2;ARCHITECTURErtlOFmux2_2ISBEGINcmux2_2:
PROCESS(a0,a1,sel)BEGINIF(sel=1)THEN-二选择的IF语句q=a0;ELSEq=a1;ENDIF;ENDPROCESScmux2_2;ENDrtl;、if外部条件句then-IF语句的嵌套结构if内部条件句then.endif;endif;、if条件句1then-多选择的IF语句顺序语句1elsif条件句2then顺序语句2.elsif条件句nthen顺序语句nelse顺序语句n+1endif;例:
采用多选择IF语句描述4线2线优先译码器Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;EntityencodeisPort(I0,I1,I2,I3:
instd_logic;y:
outstd_logic_vector(1downto0);Endencode;ArchitectureoneofencodeisBeginprocess(I0,I1,I2,I3)beginif(I0=0)theny=“00”;elsif(I1=0)theny=“01”;elsif(I2=0)theny=“10”;elsey顺序语句1;.When选择值n=顺序语句n;Whenothers=顺序语句;Endcase;例:
用case语句描述4选1多路数据选择器Process(a,b,c,d,sel)begincaseseliswhen“00”=xxxx=d;Endcase;Endprocess;(3)ForLoop语句格式:
loop标号:
for循环变量in循环次数范围loop顺序语句;endloop;3、等待语句在进程中,当执行到等待语句wait时,运行程序将被挂起,知道满足结束挂起条件后,才开始执行进程的程序。
格式:
Waituntil条件表达式注意:
已经列出敏感信号的进程不能使用wait语句例:
具有同步置数功能的N位移位寄存器的设计ArchitectureoneofshiftnisBeginprocessbeginwaituntilclkeventandclk=1;ifld=1thenQ=D;elseforiin0toN-2loopQ(i)=Q(i+1)endloop;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 简单 VHDL 程序