[工学]第5章 VHDL设计进阶.ppt

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

电子设计自动化EDA 第5章 VHDL设计进阶 殷伟凤 yinwf67@163.com Tel:651273 5.1 数据对象 在VHDL中,数据对象有三类:变量VARIABLE、常量CONSTANT、信号SIGNAL (1)常量 常量是设计者给实体中某一常量名赋予的固定值。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。 常数说明的一般格式如下: CONSTANT 常数名: 数据类型∶=表达式; 例如: CONSTANT VCC: REAL∶=5.0; CONSTANT DALY: TIME∶=100 ns; CONSTANT FBUS: BIT_VECTOR∶=0101; 常数一旦被赋值就不能再改变。 常数所赋的值应和定义的数据类型一致。  例如:    CONSTANT VCC:REAL∶=0101;     这样的常数说明显然是错误的 (2)变量 变量是局部量,它只能在进程语句、函数语句和过程语句中使用。在VHDL语言中它用于暂存数据,相当于一个暂存器。 在仿真过程中,它不像信号那样,到了规定仿真时刻才进行赋值,变量的赋值是立即生效的。 变量在赋值时不能产生附加延时。 变量说明语句的格式为 VARIABLE 变量名:数据类型 约束条件∶=表达式; 例如:  VARIABLE x,y: INTEGER;  VARIABLE count: INTEGER RANGE 0 TO 255∶=10; 变量赋值的一般表达式为:   目标变量名:=表达式; 例如: variable x:integer range 0 to 15; variable a,b:std_logic_vector(7 downto 0);   x:=10; a:=; a(0 to 5):=b(2 to 7); (3)信号 信号是电子电路内部硬件连接的抽象。信号通常在构造体、包集合和实体中说明。 信号说明语句格式为 : SIGNAL 信号名:数据类型 约束条件∶=表达式; 例如: SIGNAL sys_clk: BIT∶=′0′; SIGNAL ground: BIT∶=′0′; 信号的赋值语句表达式如下:    目标信号名<=表达式; 例如: a=y; a=‘1’; “:=”表示对信号直接赋值,可用来表示信号初始值不产生延时。 在程序中,信号值的代入采用“=”代入符,而不是像变量赋值时用“∶=”符。 信号代入时可以附加延时。 S1=s2 AFTER 10ns 信号的使用和定义范围是实体、结构体和程序包。在进程和子程序中不允许定义信号。在进程中,只能将信号列入敏感表,而不能将变量列入敏感表。 顺序信号赋值和并行信号赋值 信号的赋值可以出现在一个进程中,也可以直接出现在结构体的并行语句结构中,但他们运行的含义是不一样的。 前者属顺序信号赋值,此时的信号赋值操作要视进程是否已被启动,并且允许对同一目标信号进行多次赋值,其结果是最后的赋值语句被启动,进行有效赋值。 后者属并行信号赋值,其赋值操作是各自独立并行的发生的,且不允许对同一目标信号进行多次赋值。 比较 【例5-1】 ARCHITECTURE bhv OF DEF3 IS BEGIN PROCESS(CLK) VARIABLE QQ:STD_LOGIC; BEGIN IF CLK’EVENT AND CLK=‘1’ THEN QQ := D1; END IF; Q1 = QQ; END PROCESS END: 【例5-2】 ARCHITECTURE bhv OF DEF3 IS SIGNAL QQ:STD_LOGIC; BEGIN PROCESS(CLK) BEGIN IF CLK’EVENT AND CLK=‘1’ THEN QQ = D1; END IF; END PROCESS Q1 = QQ; END; 比较 【例5-3】 ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B:BIT; BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN A = D1; B = A; Q1 = B; END IF; END PROCESS; END; 信号赋值的δ延时 信号的赋值需要有一个δ延时。 执行赋值操作和完成赋值是两个不同的概念 完成赋值都是在执行到END PROCESS语句时才发生的。 【例5-6】 【例5-7】 【例5-7】波形图 两者的区别 主要的区别在于赋值结果的生效时间 举例说明信号赋值和变量赋值的区别 Label1:process Variable a

文档评论(0)

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

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

1亿VIP精品文档

相关文档