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

下载本文档

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

文档简介

VHDL数据类型 FPGA应用技术 二 VHDL数据类型与数据对象 在VHDL程序中 我们经常会遇到这样的语句 SignalA std logic VariableB std logic vector 7downto0 ConstantC integer 数据对象类型 数据类型 数据对象名 VHDL语言中的基本数据类型 逻辑类型 数值类型 布尔代数 Boolean 位 Bit 标准逻辑 Std Logic 整数 Integer 实数 Real 二 VHDL数据类型与数据对象 逻辑数据类型 1 布尔代数 Boolean 型 2 位 Bit 3 标准逻辑 Std logic typeBITis 0 1 typeBOOLEANis FALSE TRUE 二 VHDL数据类型与数据对象 标准逻辑类型TypeStd LogicIs U Undefined 未初始化 X ForcingUnknown 强未知 0 Forcing0 强0 1 Forcing1 强1 Z HignImpedance 高阻 W WeakUnknown 弱未知 L Weak0 弱0 H Weak1 弱1 Don tCare 忽略 二 VHDL数据类型与数据对象 标准逻辑类型对数字逻辑电路的逻辑特性描述更加完整 真实 因此在VHDL程序中 对逻辑信号的定义通常采用标准逻辑类型 逻辑序列 位序列 Bit Vector 标准逻辑序列 Std Logic Vector 二 VHDL数据类型与数据对象 Signaldata Std Logic Vector 7downto0 Signaladdr Bit Vector 0to3 序列的范围大小声明方式 To Downto 序列的使用 二 VHDL数据类型与数据对象 序列的分解与合成SignalA Std Logic Vector 3downto0 SignalB Std Logic Vector 0to3 SignalC Std Logic Vector 0to1 SignalD Std Logic Vector 1downto0 C A 2downto1 B A 3 二 VHDL数据类型与数据对象 数值类型 1 整数TypeIntegerIsRange 231 231 1限定整数取值范围的方法 SignalA Integer SignalB IntegerRange0to7 SignalC IntegerRange 1to1 二 VHDL数据类型与数据对象 无符号数Unsigned与标准逻辑序列相似 声明时必须指明其位数 SignalA Unsigned 3downto0 SignalB Unsigned 7downto0 注意 必须使用downto形式 二 VHDL数据类型与数据对象 2 实数TypeRealIsRange 1 7E38to1 7E38 实数类型的表示可用科学计数形式或者带小数点的形式 二 VHDL数据类型与数据对象 VHDL中的运算符 二 VHDL数据类型与数据对象 算术运算符 加 减 乘 除 乘方mod求模rem求余abs求绝对值 逻辑运算 and逻辑与or逻辑或nand与非nor或非xor异或xnor同或not逻辑非 关系运算符 等于 不等于大于 大于或等于注 其中 操作符也用于表示信号的赋值操作 连接符 将两个数据对象或矢量连接成维数更大的矢量 它可给代码书写带来方便 例如 vabc a b c 如果a 1 b 0 c 1 则vabc 101 二 VHDL数据类型与数据对象 用户自定义数据类型 1 列举数据类型Type列举名称is 元素1 元素2 例子 Typestateis S0 S1 S2 S3 SignalA state 二 VHDL数据类型与数据对象 2 数组类型Type数组名称isArray 范围 of数据类型 例子 TypeByteisArray 7downto0 ofBit Signalsdo Byte 二 VHDL数据类型与数据对象 数据类型的转换在VHDL语言里 不同类型的数据信号之间不能互相赋值 当需要不同类型数据之间传递信息时 就需要类型转换函数将其中的一种类型数据转换为另一中数据类型后 再进行信号的传递 二 VHDL数据类型与数据对象 例如 SignalY Std logic vector 7downto0 SignalX Integerrange0to255 Y CONV STD LOGIC VECTOR X 8 二 VHDL数据类型与数据对象 CONV INTEGER将数据类型UNSIGNED SIGNED转换为INTEGER类型 CONV UNSIGNED将数据类型INTEGER SIGNED转换为UNSIGNED类型 CONV SIGNED将数据类型INTEGER UNSIGNED转换为SIGNED类型 CONV STD LOGIC VECTOR将数据类型INTEGER UNSIGNED SIGNED STD LOGIC转换为STD LOGIC VECTOR类型 二 VHDL数据类型与数据对象 数据对象 常量 信号 变量 DataObjects 二 VHDL数据类型与数据对象 1 常量定义格式 Constant常量名称 数据类型 给定值 常量通常来来定义延迟和功耗等参数 注意 常数定义的同时进行赋初值 常数可以在实体说明 结构体描述中使用 二 VHDL数据类型与数据对象 libraryieee useieee std logic 1164 all useieee std logic unsigned all 必需定义 entityexam1isport ip instd logic vector 3downto0 op outstd logic vector 3downto0 endexam1 architecturem1ofexam1isconstantnum integer 6 beginop ip num endm1 二 VHDL数据类型与数据对象 2 信号定义格式Signal信号名称 数据类型 初始值 信号相当于电路内部元件之间的物理连线 因此信号的赋值有一定的延迟时间 二 VHDL数据类型与数据对象 信号 数据对象 代表电路内部信号或连接线路 其在元件之间起互连作用 注意 信号定义的时候尽管可以直接赋初值 但系统往往忽略 建议信号对象定义后再进行赋值 信号为全局量 在实体说明 结构体描述和程序包说明中使用 信号赋值的语法格式为 信号名 表达式 如 SignalS1 Std logic vector 3Downto0 S1 0000 二 VHDL数据类型与数据对象 3 变量定义格式Variable变量名称 数据类型 初始值 变量只能用于 进程 之中 变量的赋值是立即生效的 常用于高层次抽象的算法描述当中 二 VHDL数据类型与数据对象 变量 数据对象 它用于对中间数据的临时存储 并不一定代表电路的某一组件 注意 变量定义的时候尽管可以直接赋初值 但系统往往忽略 建议变量对象定义后再进行赋值 变量为局部量 仅限于进程 Process 或子程序中使用 变量赋值的语法格式为 目标变量 表达式 如 VariableS1 Std logic vector 3Downto0 S1 0000 二 VHDL数据类型与数据对象 信号和变量的比较 1 信号和变量的对应关系不同 信号代表电路内部信号或连接线路 而变量则不是 2 信号和变量声明的位置不同 信号声明在子程序 进程的外部 而变量声明在子程序 进程的内部 3 信号为全局量 而变量只在定义它的域中才可见 因此 变量不能在两个进程之间传递信息 4 在一个进程中多次为一个信号赋值时 只有最后一个值会起作用 而变量则不同 每次赋值都会改变它的值 5 赋值不同 在进程中 信号赋值只有在进程结束时起作用 而变量赋值是立即进行的 而且赋值符号不同 信号赋值为 变量赋值为 数据对象属性 1 数值类属性 数组类型的数据对象 数值类属性有 left right low high length 其中用符号 隔开对象名及其属性 left表示数组的左边界 right表示数组的右边界 low表示数组的下边界 high表示数组的上边界 length表示数组的长度 如 SignalA std logic vector 7downto0 SignalB std logic vector 0to3 则这两个信号的属性值分别为 A left 7 A right 0 A low 0 A high 7 A length 8 B left 0 B right 3 B low 0 B high 3 B length 4 数据对象属性 2 event属性 event属性 它的值为布尔型 如果刚好有事件发生在该属性所附着的信号上 即信号有变化 则其取值为True 否则为False 利用此属性可识别时钟信号的变化情况 即时钟是否发生 数据对象属性 例如 时钟边沿表示 signalclk instd logic If clk eventandclk 1 thenQ Q 1 则clk eventandclk 1 表示时钟的上升沿 即时钟变化了 且其值为1 clk eventandclk 0 表示时钟的下降沿 即时钟变化了 且其值为0 数据对象属性 例2 设计组合逻辑电路 设计一个1bit全加器 输入X Y CI输出Z CO libraryieee useieee std logic 1164 all useieee std logic arith all useieee std logic unsigned all entityfull bit adderisport a b ci instd logic y cout outstd logic endfull bit adder architecturebh1offull bit adderisbeginy nota and notb andci or nota and b and notci or a and notb and notci or a and b and ci cout bandci or aandci or aandb endbh1 architecturebh2offull bit adderisbeginy axorbxorci cout aandb or aandci or bandci endbh2 configurationcon1offull bit adderisforbh2endfor endcon1 1 触发器设计 DQCP D触发器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYdffISPORT cp d INSTD LOGIC q OUTSTD LOGIC ENDdff ARCHITECTUREaOFdffISBEGINprocess cp beginifcp eventandcp 1 thenq d endif endprocess ENDa 3 计数器设计 计数器 CLK Q LIBRARYieee USEieee std logic 1164 ALL USEieee std logic unsigned ALL USEieee std logic arith ALL ENTITYcounterISPORT clk inSTD LOGIC q bufferSTD LOGIC vec

温馨提示

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

评论

0/150

提交评论