VHDL基本语法.ppt_第1页
VHDL基本语法.ppt_第2页
VHDL基本语法.ppt_第3页
VHDL基本语法.ppt_第4页
VHDL基本语法.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,VHDL基本语法(4)常用运算符,1.逻辑运算符逻辑运算符有6种:NOT、OR、AND、NAND、NOR和XOR。常用的是前3种。参加逻辑运算的变量或者信号必须有相同的数据类型和数据长度。逻辑运算符适用的数据类型为std_logicbitstd_logic_vector。,例:SIGANLa,b,e,f:STD_LOGIC;SIGANLc,d:STD_LOGIC_VECTOR(7DOWNTO0);aANDb;aORb;NOTa-正确cANDd;cXORd;NOTC-正确aANDc;-错误,因为数据类型不同,除了not运算符的优先级最高外,其余逻辑运算符的优先级相同,运算从左到右展开。因此要注意加括号,如:(aANDb)OR(eANDf)不能写成aANDbOReANDf,2.并置运算符并置运算符“SIGNALc:STD_LOGIC_VECTOR(2DOWNTO0);aAND(1-结果生成7位的std_logic_vector,3.算术运算符算术运算符有14种,最常用的算术运算符是+和-。例:SIGNALa,b:STD_LOGIC_VECTOR(3DOWNTO0);a+b;a+1;a+”01”;,关系运算符关系运算符有下列几种:=等于;/=不等于;大于;=大于等于;关系运算的结果为“真”或者“假”。,关系运算有如下规则:(1)在进行关系运算时,两个对象的数据类型必须相同。(2)等于、不等于运算适用于所有数据类型。(3)大于、小于、大于等于和小于等于适用于整数、实数、位、位矢量的比较。,4.运算符的优先级各运算符优先级从最高到最低的顺序(同一行运算符优先级相同)如下:*(乘方);abs(取绝对值);*(乘)/(除);mod(取模);+(正号);-(负号);+(加);-(减);ror(逻辑循环右移);,(5)赋值语句,赋值语句的作用是给信号或者变量赋值,它将赋值符号右边表达式的值赋给左边的信号或者变量。赋值语句分为信号赋值语句和变量赋值语句。,1.信号赋值语句格式:信号名=表达式;由于信号是个真正的物理量,它对应着电子电路的某一条连线std_logic或者一组连线(std_logic_vector),因此它的赋值一定有时间延迟。,举例:SIGNALt1,clk,clk1:STD_LOGIC;SIGNALr0,r1:STD_LOGIC_VECTOR(15DOWNTO0);t1=1;clk1=NOTclk;r0=x”0000”;rl=“0000000000000000“;,2.变量赋值语旬格式:变量名:=表达式;由于在电路设计中,变量不与某一物理量一一对应,它只起到设计的辅助作用,用于保存中间结果、做数组的下标等,因此变量的赋值没有时间延迟。,例:VARIABLEx,y,z:INTEGERRANGE0TO255;x:=0;y:=132;z:=x;,(6)IF语句,IF语句属于描述硬件行为的语句。共有三种用法。1.用于门闩控制的语句。格式:IF条件THEN若干顺序执行语句ENDIF;,例1:用if语句设计的D触发器。(程序片断)SIGNALd,clk,q;IFclkeventANDcIk=1THENq=d;ENDIF;,Q,Qd,D,Clk,对于描述触发器来说,经常要用到时钟的上升沿和下降沿。下面是描述它们的4种方法:clockeventANDclock=1-上升沿clockeventANDclock=0-下降沿rising_edge(clock)-上升沿falling_edge(clock)-下降沿,例2用IF语句设计的锁存器。(程序片断)SIGNALd,clkq:STD_LOGIC;IFclk=1THENq=d;ENDIF;,2.用于二选一控制的IF语句格式:IF条件THEN若干顺序执行语句ELSE若干顺序执行语句ENDIF;,例3二选一电路(程序片断)SIGNALsel:STD_LOGIC;SIGNALa,b,c:STD_LOGIC_VECTOR(15DOWNTO0);IFsel=0THENc=a;ELSEc=b;ENDIF;,3.用于多选择控制的if语旬格式:IF条件1THEN若干顺序执行语句1ELSIF条件2THEN若干顺序执行语句2ELSIF条件n-1THEN若干顺序执行语句n-1ELSE若干顺序执行语句nENDIF;,(5)进程语句(PROCESS),进程语句是一个十分重要的语句,本质上它描述了一个功能独立的电路块。,process语句有许多变种,这里只介绍最基本的形式。格式:进程名:PROCESS(敏感信号1,敏感信号2,敏感信号n)若干变量说明语句BEGIN若干顺序执行语句ENDPROCESS进程名;,process语句中有个敏感信号表,各敏感信号之间用逗号分开。所谓敏感信号就是指当它的状态发生变化时,启动process语句执行。由于process语句代表一块功能独立的电路,它的某些输入信号的状态变化,势必引起电路输出的变化,这些立即引起(当然要经过短暂的时间延迟)输出信号状态变化的信号就是敏感信号。,变量不是真正的物理量,因此不能出现在敏感信号表中。在process语句中只作为输出存在的信号(出现在信号赋值符“=”的左边)不能作为敏感信号。既出现在信号赋值符=的左边,又出现在信号赋值符若干顺序执行语句WHENOTHERS若干顺序执行语句ENDCASE;,例6运算器设计(参见程序例6)说明:一个有加、减、与、或功能的16位运算器。其中,cin是原来的进位,cout是运算后的三位值,q是运算的结果,a和b是2个操作数,sel是个2位的运算选择码。本例中result是个17位的STD_LOGIC_VECTOR信号,它是为了产生进位信号而设置的。,例72与非门。(参见程序例7)说明:本例中,首先将与非门输入信号a和b并置,生成一个2位的std_logic_vector信号sel。信号C是与非门的输出。第一个when中的|代表或者,即3个条件中的任何一个满足,执行C信号名1,端口名2=信号名2,端口名n=信号名n);,其中,信号名1到信号名n都是较高层设计实体中的信号名,端口名1到端口名n是元件的端口名。标号是可选的。信号映射表中的各项用“,”分开。第1种映射方式中,信号名1到信号名n的书写顺序必须和portmap语句映射的元件的端口名书写顺序一致,以便一一对应。第2种映射方式把元件端口名和较高层设计实体中使用的信号名显式对应起来,映射表中各项的书写顺序不受任何限制。.推荐用第2种映射方式,二.用层次结构设计方法设计一个与或门例:设计一个与或门,实现的功能为and_or_result=(a1anda2)or(a3anda4),a1,a2,a3,a4,and_or_result,op1,op2,op1,op2,and_result,or_result,低层的设计实体and_gate它将两个输入信号op1和op2进行“与运算,产生输1出信号and_result。2.低层的设计实体or_gate它将两个输入信号op1和op2进行或运算,产生输1出信号or_result。(参见程序例8),3.顶层设计实体and_or_gate它把两个低层设计实体当作元件引用。在高层设计实体and-or-gate的结构体struet中,在begin之前,对信号b1句b2和元件and-gate、or-gate进行了说明。在begin之后对元件and-gate例化了2次,对元件or-gate例化了1次。信号b1、b2用于3个元件(2个and-gate和1个or-gate)之间的连接。这个结构体采用了典型的结构描述方法。,程序包的用法上述例子也可改用程序包的方法。(修改程序参见例9),5.4用VHDL设计硬件的建议(1)进行层次结构设计时层次一定要清楚。(2)给信号起名字时含义要清楚,不要随便。这样不仅其他人阅读方便,自己阅读也方便,否则几个月后自己也会忘记。(3)几个人同时设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论