VHDL数据类型(vhdl语法)解析课件_第1页
VHDL数据类型(vhdl语法)解析课件_第2页
VHDL数据类型(vhdl语法)解析课件_第3页
VHDL数据类型(vhdl语法)解析课件_第4页
VHDL数据类型(vhdl语法)解析课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、VHDL数据类型FPGA应用技术第1页,共41页。二、VHDL数据类型与数据对象在VHDL程序中,我们经常会遇到这样的语句:Signal A : std_logic;Variable B : std_logic_vector(7 downto 0); Constant C : integer;数据对象类型数据类型数据对象名第2页,共41页。 VHDL语言中的基本数据类型逻辑类型数值类型布尔代数(Boolean)位 (Bit)标准逻辑 (Std_Logic)整数 (Integer)实数 (Real)二、VHDL数据类型与数据对象第3页,共41页。 逻辑数据类型 (1)布尔代数(Boolean)型

2、 ; (2)位(Bit); (3)标准逻辑(Std_logic);type BIT is (0, 1); type BOOLEAN is (FALSE, TRUE) ;二、VHDL数据类型与数据对象第4页,共41页。标准逻辑类型Type Std_Logic Is ( U, -Undefined(未初始化) X , -Forcing Unknown(强未知) 0 , -Forcing 0(强0) 1 , -Forcing 1(强1) Z , -Hign Impedance(高阻) W, -Weak Unknown(弱未知) L , -Weak 0(弱0) H , -Weak 1(弱1)- , -

3、Dont Care(忽略))二、VHDL数据类型与数据对象 标准逻辑类型对数字逻辑电路的逻辑特性描述更加完整,真实,因此在VHDL程序中,对逻辑信号的定义通常采用标准逻辑类型第5页,共41页。 逻辑序列位序列 (Bit_Vector)标准逻辑序列 (Std_Logic_Vector)二、VHDL数据类型与数据对象第6页,共41页。Signal data: Std_Logic_Vector( 7 downto 0);Signal addr: Bit_Vector ( 0 to 3);序列的范围大小声明方式:To, Downto 序列的使用二、VHDL数据类型与数据对象第7页,共41页。 序列的分

4、解与合成Signal A: Std_Logic_Vector( 3 downto 0);Signal B: Std_Logic_Vector( 0 to 3);Signal C: Std_Logic_Vector( 0 to 1);Signal D: Std_Logic_Vector( 1 downto 0);C= A( 2 downto 1);B= A(3) & D & 1;二、VHDL数据类型与数据对象第8页,共41页。 数值类型(1)整数 Type Integer Is Range -231 231-1限定整数取值范围的方法: Signal A: Integer; Signal B: I

5、nteger Range 0 to 7; Signal C: Integer Range -1 to 1;二、VHDL数据类型与数据对象第9页,共41页。 无符号数 Unsigned与标准逻辑序列相似,声明时必须指明其位数。Signal A : Unsigned(3 downto 0);Signal B : Unsigned( 7 downto 0);注意: 必须使用downto形式。二、VHDL数据类型与数据对象第10页,共41页。(2)实数 Type Real Is Range -1.7E38 to 1.7E38; 实数类型的表示可用科学计数形式或者带小数点的形式。二、VHDL数据类型与数

6、据对象第11页,共41页。 VHDL中的运算符二、VHDL数据类型与数据对象 算术运算符: +加-减*乘/除*乘方mod求模 rem求余 abs求绝对值 逻辑运算: and 逻辑与or逻辑或nand与非nor 或非xor 异或xnor同或not 逻辑非第12页,共41页。关系运算符: =等于/=不等于小于大于=大于或等于注:其中=操作符也用于表示信号的赋值操作。 &连接符,将两个数据对象或矢量连接成维数更大的矢量,它可给代码书写带来方便。 例如: vabc=a & b & c;如果a=1 , b=0 , c=1 ,则 vabc=“101” 。二、VHDL数据类型与数据对象第13页,共41页。

7、用户自定义数据类型:(1) 列举数据类型Type 列举名称 is (元素1,元素2,)例子:Type state is(S0,S1,S2,S3);Signal A: state;二、VHDL数据类型与数据对象第14页,共41页。(2) 数组类型Type 数组名称 is Array(范围) of 数据类型;例子: Type Byte is Array(7 downto 0) of Bit; Signal sdo: Byte;二、VHDL数据类型与数据对象第15页,共41页。 数据类型的转换 在VHDL语言里,不同类型的数据信号之间不能互相赋值。当需要不同类型数据之间传递信息时,就需要类型转换函数

8、将其中的一种类型数据转换为另一中数据类型后,再进行信号的传递。二、VHDL数据类型与数据对象第16页,共41页。例如:Signal Y : Std_logic_vector(7 downto 0);Signal X : Integer range 0 to 255;Y= CONV_STD_LOGIC_VECTOR(X,8);二、VHDL数据类型与数据对象第17页,共41页。CONV_INTEGER 将数据类型 UNSIGNED, SIGNED转换为INTEGER 类型. CONV_UNSIGNED 将数据类型INTEGER, SIGNED转换为UNSIGNED 类型.CONV_SIGNED 将

9、数据类型INTEGER, UNSIGNED转换为SIGNED类型.CONV_STD_LOGIC_VECTOR 将数据类型INTEGER, UNSIGNED, SIGNED, STD_LOGIC转换为STD_LOGIC_VECTOR 类型. 二、VHDL数据类型与数据对象第18页,共41页。 数据对象常 量信 号变 量(Data Objects)二、VHDL数据类型与数据对象第19页,共41页。(1) 常量定义格式:Constant 常量名称: 数据类型 :=给定值; 常量通常来来定义延迟和功耗等参数。注意!常数定义的同时进行赋初值。常数可以在实体说明、结构体描述中使用。二、VHDL数据类型与数

10、据对象第20页,共41页。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; -必需定义+entity exam1 is port (ip : in std_logic_vector(3 downto 0); op : out std_logic_vector(3 downto 0);end exam1; architecture m1 of exam1 isconstant num : integer := 6;beginop = ip + num;end m1; 二、VHDL数据类型与数据对象第

11、21页,共41页。(2) 信号定义格式Signal 信号名称: 数据类型 :=初始值;信号相当于电路内部元件之间的物理连线,因此信号的赋值有一定的延迟时间.二、VHDL数据类型与数据对象第22页,共41页。“信号”数据对象,代表电路内部信号或连接线路,其在元件之间起互连作用。注意!信号定义的时候尽管可以直接赋初值,但系统往往忽略。建议信号对象定义后再进行赋值。信号为全局量。在实体说明、结构体描述和程序包说明中使用。信号赋值的语法格式为:信号名 = 表达式;如:Signal S1 : Std_logic_vector(3 Downto 0); S1 = “0000”;二、VHDL数据类型与数据对

12、象第23页,共41页。(3)变量定义格式Variable 变量名称: 数据类型 :=初始值;变量只能用于“进程” 之中,变量的赋值是立即生效的,常用于高层次抽象的算法描述 当中。二、VHDL数据类型与数据对象第24页,共41页。 “变量”数据对象,它用于对中间数据的临时存储,并不一定代表电路的某一组件。 注意!变量定义的时候尽管可以直接赋初值,但系统往往忽略。建议变量对象定义后再进行赋值。变量为局部量。仅限于进程(Process)或子程序中使用。 变量赋值的语法格式为:目标变量:=表达式;如:Variable S1 : Std_logic_vector(3 Downto 0); S1 := “

13、0000”;二、VHDL数据类型与数据对象第25页,共41页。信号和变量的比较 (1)信号和变量的对应关系不同:信号代表电路内部信号或连接线路;而变量则不是。 (2)信号和变量声明的位置不同:信号声明在子程序、进程的外部;而变量声明在子程序、进程的内部。 (3)信号为全局量,而变量只在定义它的域中才可见。因此,变量不能在两个进程之间传递信息。 (4)在一个进程中多次为一个信号赋值时,只有最后一个值会起作用;而变量则不同,每次赋值都会改变它的值。(5)赋值不同。在进程中,信号赋值只有在进程结束时起作用,而变量赋值是立即进行的。而且赋值符号不同:信号赋值为“=”,变量赋值为“:=”。第26页,共4

14、1页。数据对象属性(1)数值类属性: (数组类型的数据对象)数值类属性有 left, right, low, high, length。其中用符号 隔开对象名及其属性。 left表示数组的左边界; right表示数组的右边界; low表示数组的下边界; high表示数组的上边界; length表示数组的长度。第27页,共41页。如:Signal A : std_logic_vector(7 downto 0);Signal B : std_logic_vector(0 to 3);则这两个信号的属性值分别为: Aleft=7; Aright=0; Alow=0; Ahigh=7; Alengt

15、h=8; Bleft=0; Bright=3; Blow=0; Bhigh=3; Blength=4;数据对象属性第28页,共41页。(2)event属性: event属性,它的值为布尔型,如果刚好有事件发生在该属性所附着的信号上(即信号有变化),则其取值为True,否则为False。 利用此属性可识别时钟信号的变化情况,即时钟是否发生。数据对象属性第29页,共41页。例如:时钟边沿表示:signal clk : in std_logic;If( clkevent and clk=1 )then Q=Q+1;则clkevent and clk=1表示时钟的上升沿。即时钟变化了,且其值为1。 c

16、lkevent and clk=0表示时钟的下降沿。即时钟变化了,且其值为0。数据对象属性第30页,共41页。例2:设计组合逻辑电路设计一个1bit全加器。输入 X,Y,CI 输出 Z,CO第31页,共41页。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity full_bit_adder isport(a,b,ci:in std_logic; y,cout:out std_logic);end full_bit_adder;第3

17、2页,共41页。architecture bh1 of full_bit_adder isbegin y = (not a)and (not b)and ci) or (not a)and (b) and (not ci) or (a)and (not b)and(not ci) or (a) and (b)and(ci); cout = (b and ci) or (a and ci) or (a and b);end bh1;第33页,共41页。architecture bh2 of full_bit_adder isbegin y = a xor b xor ci; cout 1000-

18、111D触发器第35页,共41页。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff ISPORT( cp,d: IN STD_LOGIC; q: OUT STD_LOGIC);END dff;第36页,共41页。ARCHITECTURE a OF dff ISBEGINprocess(cp)beginif cpevent and cp=1 thenq=d;end if;end process;END a;第37页,共41页。(3) 计数器设计计数器CLKQ第38页,共41页。LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE ieee.std_logic_arith.ALL;ENTITY counter ISPORT( clk: in STD_LOGIC; q: buffer STD_LOGIC_vector(3 downto 0);END counter;第39页,共41页。ARCHITECTURE a OF

温馨提示

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

评论

0/150

提交评论