7-3 VHDL词法.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7-3 VHDL词法

主要内容:1、标识符 2、对象 3、数据类型 4、类型转换 5、词法单元 6、运算操作符 重点内容: 对象和类型转换;7.3.1 标识符; 1、标识符主要由字母、数字以及下划线组成。 2、第一个字符必须是英文字母。 3、最后一个字符不能是下划线。 4、在标识符中不允许出现两个连续的下划线。 5、短标识符不区分大小写。 6、VHDL中的保留字不能作为一般的短标识符使用。; ;7.3.2 对象;常量; 3、常量说明的位置 (1)在VHDL中,如果一个对象在程序包中或实体说明部分被说明,那么在本设计和本设计内部的任何结构体中都可以引用这个对象,称之为对象的全局化;如果一个对象在结构体说明部分被说明,那么仅可以在此结构体中引用这个对象,称之为对象的局部化。 (2)常量可以在程序包、实体、结构体或进程的说明区中对常量的标识符、类型、常量值进行指定。 (3)定义在程序包中的常量可由所在的任何实体和结构体调用。 (4)定义在实体内的常量仅在实体内使用,定义在进程内的常量仅在进程内使用。 (5)在某些特殊情况下,在程序包中说明一个常量时,可以不赋予一个初始值,称为缓冲常量。;变量主要用于对暂时数据进行局部存储,是一个局部量。 ??变量说明的格式: variable 变量名:数据类型[:=表达式]; 例: variable temp : std_logic :=‘0’; variable a,b : integer :=0 ; variable count1:integer range 0 to 255 :=0; variable enable : std_logic ; ;注意: (1)变量初始化时采用“: =”,而在变量赋值语句中也采用此符号来进行赋值。 (2)变量也可以连续赋值,其值在设计实体中可以改变。 (3)当没有被赋初值时,取默认值,即取该类型的最左值或最小值。如:前面的第4个信号说明中,没有指定初始值,则信号enable取默认值‘0’。 (4)和信号不同,变量的赋值是直接的、立即生效的,在某一个时刻仅包含一个值。因此在变量赋值语句中,不允许出现附加延时。 如:temp:=a after 10ns; enable:=‘0’ after 20ns; 这是错误的语句。;变量说明的位置??: 变量只可以在进程语句、过程语句和函数语句的说明区域中进行说明。?? 变量的作用范围只能在说明它的进程、过程和函数中,在其他部分是无效的。 若要将一个变量的值用于作用范围之外,需要将该变量的值赋给一个相同类型的信号。;例: Library ieee; Use ieee.std_logic_1164.all; Entity sync is port(clk: in std_logic; irq: out std_logic); End sync; Architecture rtl of sync is signal temp : integer; Begin Label1: process Variable counter : integer :=0; ;说 明: (1)该程序的功能是根据输入时钟信号clk,产生一个周期为16倍的中断信号irq,中断信号宽度为1个时钟周期。 (2)进程Lable1主要用来进行计数,当clk发生变化且为1时启动该进程,执行counter的加1操作;进程Label2用来产生中断信号irq,当计数器temp计满16个时钟周期时,将irq置0并持续1个时钟周期。 (3)counter为进程Label1中的变量,不能在进程Label2中使用。在结构体中定义一个信号temp,将变量counter的值赋给它,将其值带出进程Label1。 ; 1、信号作用:起连线的作用,将实体与实体、元件与元件连接起来构成系统。一般情况下,将信号视为硬件系统中连线的抽象。;注 意: (1)信号初始化时采用“: =”,而在源程序中信号值的代入将采用代入符“=”。 (2)信号可以连续赋值,其值在设计实体中可以改变,这一点与常量不同。 (3)当没有被赋初值时,取默认值,即取该类型的最左值或最小值。 如:前面的第3个信号说明中,没有指定初始值,则信号address_bus取默认值“UUUUUUUU”,因为对于std_logic_vector(7 downto0)

文档评论(0)

cbf96793 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档