5.2-数据类型和运算操作符(VHDL)ppt课件_第1页
5.2-数据类型和运算操作符(VHDL)ppt课件_第2页
5.2-数据类型和运算操作符(VHDL)ppt课件_第3页
5.2-数据类型和运算操作符(VHDL)ppt课件_第4页
5.2-数据类型和运算操作符(VHDL)ppt课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、1VHDL文字书写规则数字型的文字书写规则;字符型的文字书写规则;标识符的命名规则;数组中下标的选取规则。 2VHDL的客体(对象)1、Constant (常量)2、Variable(变量)3、Signal(信号)3对象的说明常数(constant):是一个固定的值,常数说明就是对某一常数名赋予一个固定的值,常量只能在说明时被赋值。语法形式:constant 常数名:数据类型:=表达式;例: constant VCC :real := 5.0;变量(variable):只能在process、function和procedure结构中使用,是一个局部量。语法形式:variable 变量名:数据类

2、型 约束条件:=表达式;例:variable x,y : integer;variable count : integer range 0 to 255 := 10;信号(signal):电路内部硬件连接的抽象。信号可以在architecture、package、entitiy中声明。是一个全局量。语法形式:signal 信号名:数据类型 约束条件:=表达式;例:signal clk :std_logic := 1;4信号与端口的比较5信号与端口的比较6信号和变量的区别 (1) 信号赋值是有一定延迟的 ,在进程中,信号的代入是在 进程结束或者WAIT语句时进行。 而变量赋值没有延迟。(2) 对

3、于进程语句来说,进程只对信号敏感 ,不对变量敏感。(3) 信号在某一时刻除了具有当前值外 ,还具有一定的历史 信息 ( 保存在预定义属性中 ) ,可以形成波形 。而变量 在某一时刻仅包含一个值。(4) 信号可以是多个进程的全局信号 ,实现在多个进程之间 传递信息; 而变量只在定义它的过程、函数和进程中可见。(5) 信号是硬件中连线的抽象描述,其功能是保存变化的数 据值和连接子元件。变量在硬件中没有类似的对应关系, 主要应用于高层次的建模中。(6) 信号赋值和变量赋值的格式如下所示 : 信号 =表达式 ; 变量 :=表达式 ;7信号和变量的区别举例ARCHITECTURE rtl OF sig

4、ISsignal xa,xb,c : STD_LOGIC;BEGIN PROCESS(xa,xb,c) BEGINif (c=1) then xa = xb; xb = xa;end if END PROCESS; PROCESS variable a,b : STD_LOGIC; BEGIN . a := b; b := a; c =a; END PROCESS;END rtl ; 8VHDL数据类型预定义数据类型 VHDL预定义数据类型 IEEE预定义数据类型 其他预定义数据类型自定义数据类型 枚举类型 整数/实数类型 数组类型 记录类型9基本数据类型简表10VHDL的数据类型限定任何一个

5、信号和变量都必须落入区间约束中所说明的值域有效范围内。举例: a:out std_logic_vector(7 downto 0);b:in integer range 1 to 10;signal abc:std_logic_vector(0 to 2); variable aaa:real range 2.0 to 30.0;11预定义数据类型1VHDL预定义数据类型1,布尔数据类型2,BIT数据类型(BIT_VECTOR数据类型)3,字符数据类型(字符串数据类型)4,整数数据类型(自然数和正整数数据类型)5,实数数据类型6,时间数据类型12预定义数据类型2IEEE预定义数据类型1,STD

6、_LOGIC数据类型2,STD_LOGIC_VECTOR数据类型13bit与std_logic比较 bit: 0 ,(逻辑0)1 (逻辑1)std_logic:U,(未初始化) X,(未定) 0,(0)1, (1)Z, (高阻)W, (弱未定)L, (弱0)H, (弱1)- (忽略)14预定义数据类型3符号数据类型1,无符号数据类型2,有符号数据类型3,小整型数据类型15VHDL的自定义数据类型语法介绍语法形式:type 类型名is 类型定义; 举例type index is integer range 15 downto 0;type voltage is real range 0.0 to

7、 10.0;type week is (sun, mon, tue, wed,thu, fri, sat);Variable abc:index:=6;Variable day:week:=tue;16VHDL的自定义语法举例(物理量)type 数据类型名 is 范围 units 基本单位; 单位; end unitstype time is range 1e-18 to 1e18 units fs; ps=1000fs; ns=1000ps;. sec=1000ms; end unitstype vlotage is range 0 to 1000000 units uV; mV=1000u

8、V; V=1000mV;end units17VHDL的自定义子数据类型语法介绍当一个对象可能取值的值域是某个类型说明定义的值域的子集,则可以使用子类型定义。语法形式:subtype 子类型名is 数据类型名范围; 举例 subtype iobus is std_logic_vector(7 downto 0);说明子类型和父类型完全兼容为了增加可重用性,只要有可能定义为子类型时,就不要将其定义为新类型。18VHDL的自定义数据类型(枚举)枚举:用文字表示一组二进制数据语法形式:TYPE 类型名 IS (文字表)举例type week is(Sun,Mon,Tue);调用signal wd :

9、 week; wd = Mon;19VHDL的自定义数据类型(整数/实数)整数/实数:限定范围的整数/实数。语法形式:TYPE 类型名 IS 限定范围描述20VHDL的自定义数据类型(数组)数组:用于定义同一类型值的集合语法形式:TYPE 类型名 IS ARRAY 范围 OF 原数据类型名举例type word is array ( 31 downto 0 ) of bit;调用signal abc:word; data_bit = abc(2);21VHDL的自定义数据类型(记录)记录:用于定义不同类型值的集合语法形式:TYPE 类型名 IS RECORD 元素名:数据类型名 元素名:数据类

10、型名 END RECORD举例type bank is record addr0:std_logic_vector(7 downto 0); r0:integer;end record22VHDL的自定义数据类型(记录)调用(单个元素赋值)signal abc:bank; signal ccc:std_logic_vector(7 downto 0);signal ddd:integer; ccc=abc.addr0; abc.r0=ddd;23VHDL的自定义数据类型(记录)调用(整体赋值)signal abc:bank; signal ccc:std_logic_vector(7 down

11、to 0);signal ddd:integer; abc = (ccc,ddd); 位置关联 或者 abc ddd, addr0=ccc); 名字关联24数据类型转换VHDL是强类型语言,每一个对象只能有一种类型,并且只能取该类型的值。如果值类型和对象类型不一致,需要使用显式类型转换。VHDL中没有隐式类型转换。为了实现正确的带入操作,必须将要带入的数据进行类型转换。25数据类型转换方法类型标记法用类型名称实现关系密切的标量类型之间的转换。例如:variable x:integer; variable y:real;x:=(integer)y; y:=(real)x;类型函数法变换函数通常由

12、VHDL语言的包集合提供。26数据类型转换函数说明27数据类型转换函数说明举例Entity add5 isport(num:in std_logic_vector(2 downto 0); );End add5;architecture rtl of add5 issignal in_num:integer range 0 to 5;beginin_num = conv_integer(num); .End rtl;28VHDL的运算操作符算术运算符关系运算符逻辑运算符符号运算符被操作符所操作的对象是操作数,操作数的类型应该和操作符所要求的类型相一致。运算操作符有优先级。2930VHDL的运算

13、操作符优先级31并置例题Signal b:bit_vector (0 to 3);Signal tmp:bit_vector(0 to 3);Signal out:bit_vector( 0 to 7);Signal ee,aa:bit;Tmp = b and (ee & ee & aa & ee);Tmp = (ee,ee,ee,aa);Out = tmp & (ee,ee,ee,aa);32VHDL的重载操作符为了方便各种不同数据类型间的运算,VHDL允许用户对原有的基本操作符重新定义,赋予新的含义和功能,从而建立一种新的操作符,这就是重载操作符。定义这种操

14、作符的函数称为重载函数。33VHDL的重载操作函数设计举例.Package exp isFunction max(a,b:std_logic_vector) return std_logic_vector;Function max(a,b:bit_vector) return bit_vector;Function max(a,b:integer) return integer;End;Package body exp isEnd; 34VHDL的重载操作函数使用举例Library ieee;Use ieee.std_logic_1164.alluse work.exp.allEntity exptt isPort(a1,b1:in std_logic_vector(0 to 3);a2,b2:in bit_ve

温馨提示

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

评论

0/150

提交评论