新VHDL硬件描述语言与数字逻辑电路设计 第三版 侯伯亨1 6 第4章.pptVIP

新VHDL硬件描述语言与数字逻辑电路设计 第三版 侯伯亨1 6 第4章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
  和其它高级语言一样,VHDL语言具有多种数据类型。两者对大多数数据类型的定义是一致的,但也有某些区别,如VHDL语言中可以由用户自己定义数据类型,这一点在其它高级语言中是做不到的。读者在阅读时务请多加注意。 在VHDL语言中,凡是可以赋予一个值的对象就称为客体 Object 。客体主要包括以下4种:信号 Signal 、变量 Variable 、常数 Constant 、文件 File 。在电子电路设计中,这4类客体通常都具有一定的物理含义。例如,信号对应地代表物理设计中的某一条硬件连接线,常数对应地代表数字电路中的电源和地等。当然,变量对应关系不太直接,通常只代表暂存某些值的载体。4类客体的含义和说明场合如表4-1所示。    表4-1 VHDL语言中4类客体的含义和说明场合 4.1.1 常数   常数 Constant 是一个固定的值。所谓常数说明,就是对某一常数名赋予一个固定的值。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。常数说明的一般格式如下:   CONSTANT 常数名:数据类型: 表达式;   例如:   CONSTANT VCC:REAL: 5.0;   CONSTANT DALY:TIME: 100ns;   CONSTANT FBUS:BIT_VECTOR: 0101;   常数一旦被赋值就不能再改变。上面VCC被赋值为5.0 V,那么在所有的VHDL语言程序中VCC的值就固定为5.0 V,它不像后面所提到的信号和变量那样,可以任意代入不同的数值。另外,常数所赋的值应和定义的数据类型一致。例如:   CONSTANT VCC:REAL: 0101;   这样的常数说明显然是错误的。 4.1.2 变量   在93版中,变量 Variable 增添了一种可在全局引用的共享变量 Shared Variable ,但初学者应慎用。因为,几个进程执行的时序不同会产生不同的结果。以后书中未作特殊说明的变量都是局部变量。   1. 共享变量   前面已经提到信号和变量的重要区别是:信号可以是全局量,只要在构造体中已定义,那么在构造体内的所有地方都可以使用;变量是局部量,只能在进程、子程序内部定义和使用。如果要将结果带出外部,则必须将变量值赋给某一个信号量才行。   但是,实际使用过程中有时希望进程或子程序中的结果以变量形式进行数据传递,因此,在93版中定义了共享变量。共享变量的说明格式如下:   SHARED VARIABLE变量名:子类型名[:? 初始值];   例如:   ARCHITECTURE sample OF tests IS   SHARED VARIABLE notclk:STD_LOGIC;   SIGNAL clk:STD_LOGIC;   BEGIN   p1:PROCESS clk IS   BEGIN   IF clk EVENT AND clk 1 THEN   notclk: 0;   END IF;   END PROCESS p1;   p2:PROCESS clk IS   BEGIN   IF clkEVENT AND clk 0 THEN   notclk: 1;   END IF;   END PROCESS p2;   END ARCHITECTURE sample;   p1进程在时钟上升沿将共享变量notclk置为“0”,而p2进程在时钟下降沿将notclk置为“1”,从而使notclk和clk在任何时刻其值正好相反。共享变量除在进程和子程序的说明域中不能使用外,在其它任何地方都可以使用。但是,如前所述,初学者应慎用,因为几个并发进程执行的时序不同,会产生不同的结果。   2.局部变量   局部变量只能在进程语句、函数语句和过程语句结构中使用,它是一个局部量。在仿真过程中,它不像信号那样,到了规定的仿真时间才进行赋值,局部变量的赋值是立即生效的。局部变量说明语句的格式如下:   VARIABLE 变量名:数据类型 约束条件: 表达式;   例如:   VARIABLE x,y:INTEGER;   VARIABLE count:INTEGER RANGE 0 TO 255: 10;   局部变量在赋值时不能产生附加延时。例如,tmp1、tmp2、tmp3都是局部变量,那么下式产生延时的方式是不合法的:   tmp3: tmp1+tmp2 AFTER 10 ns; 4.1.3 信号   信号 Signal 是电子电路内部硬件连接的抽象。它除了没有数据流动方向说明以外,其它性质几乎和前面所述的“端口”概念一致。信号通常在构造体、包集合和实体中说明。信号说明的语句的格式如下:   SIGNAL 信号名:数据类型

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档