VHDL的可综合性.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲 VHDL的可综合性 (3)第三种情况与第二种类似。也属于于不完全if语句,但有效条件只对信号值进行检测,这时综合器的处理方式也是类似的,只是换为用电平锁存器实现寄存器。 4.Case语句 case语句与多路选择器电路的对应关系是显而易见的,但是,建摸时要注意合理使用无关态和others语句,否则会造成电路的复杂化,甚至导致形成时序电路。图5.23是综合下述VHDL代码中case语句的一个例子,注意电路中CODE倍号已被编码为矢量。 5.循环语句 VHDL的循环语句有三种:for循环、while循环和无限循环loop end loop,实际上,1oop…end loop可以看作是循环条件永远为真的while循环。在行为综合中,循环语句的处理是极其复杂的,第3章对此已作了介绍,这里从寄存器传输级的角度加以讨论。 在寄存器级进行综合,要求for循环的上下界必须是静态已知。例如下面给出了两段VHDL代码,第一段代码中,由于循环上界RG是动态对象,所以是不可综合的。反之,第二段代码则可以被综合工具接受。这段代码通过使用next语句,形成了一个选择性的连线网络,如图5.24所示。 VHDL定义了next和exit语句来中断循环的正常执行,现在的综合工具都可以处理这两种语言结构。固5.25是对下述VHDL代码中的循环综合的例子,这个电路对信号中的’1’进行计数,代码中使用了exit语句。 6.子程序的调用 VHDL的子程序调用有函数和过程两种形式。综合时,比较先进的综合工具允许设计师控制子程序展开或是作为单独模块处理。只有描述硬件行为的子程序才是可综合的,完成效据转换的子程序和决断函数将被综合工具忽略。函数通常被综合为组合逻辑电路,如果过程同时具备输入和输出参数,并且内部没有wait语句,则综合后形成组合逻辑电路,否则形成时序逻辑。 六、并行语句 VHDL的并行语句出现在结构体内,可综合的并行语言结构包括进程、并行赋值语句、块语句、生成语句等。 1.进程 进程是VHDL中描述硬件行为最有力的方式。进程内的语句属于顺序语句,而进程本身则属于并行语句。进程的综合是比较复杂的,主要有这祥一些问题:综合后的进程是用组合逻辑还是时序逻辑电路实现?进程中的对象是否有必要用存储器部件(主要指寄存器、触发器、电平锁存器或RAM)实现?   进程语句结构需要至少一个同步控制点,否则除了初始化阶段,永远不会再次被激活。同步控制点表现在代码中就是同步语句,同步语句可以是wait on(包括以敏感信号列表出现的隐含式wait on语句)或wait until。一般说来,只有一个同步点的进程,或者是具有多个同步点、但是都使用完全相同的同步控制信号,当进程不带要“记忆”在哪一个同步点上被挂起时,不会形成存储器。例如下面的代码所示。 进程中会形成存储器的结构还可能来自变量。有些变量纯粹是运算的中间结果,即所谓工作变量。例如下述的代码中的进程P1,不需要为变量配置寄存器或其他类型的存储器,此时同步语句隐台在进程两次被激活的过程中。概括起来,如果两个同步语句之间的某变量总是在被读之前作为赋值的对象。则不会形成对应的硬件。如果变量需要在进程挂起到下次被激活的过程中存储数据,则显然需要形成硬件存储器,例如下述代码中的进程P2,这种情况可以概括为,在进程的两个同步语句之间,如果至少有一个变量在作为赋值对象之前被读访问至少一次,那么该变量需要硬件存储器。 * * 6.1 VHDL语言结构向硬件的映射 EDA工业界普遍认为,有效的VHDL建模风格是控制综合结果最为有力的手段。 为了建立有效的VHDL代码,设计师应了解VHDL语言结构与综合结果的关系。 应该指出的是,由于综合算法的不同,对于同样的硬件描述,不同的CAD综合工具可能会得到不同的综合结果。 VHDL语言在创立时,主要是为了满足仿真的需要。自从VHDL被用于综合以来,都是对VHDL的子集进行处理,这就是所谓的可综合的VHDL子集。不同综合工具支持的可综合子集不尽相同,通常有如下要求: (1)延时描述(after语句、wait for语句)等被忽略。 仿真时,为了具备一定精度,往往在源代码中含有延时语句。这些延时语句信况比较复杂,有时是最大延时约束,有时是典型经验值,还有些是人为加入的,所以现在所有的综合工具都忽略源代码中的延时语句。有些工具干脆把这些语句处理为语法错误。大部分工具忽略延时语句后,给出警告提示。而综合时间约束则在综合过程中通过综合命令输入。 (2)支持有限类型。 VHDL具有丰富的类型定义,但是有些类型不具备硬件对应物。不可能被综合,如文件类型。通常可综合类型包括枚举类型(包括自定义状态、预定义Bit类型和IEEE 9值逻辑类型等)、整数、数组等。其余像浮点数类型

文档评论(0)

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

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

1亿VIP精品文档

相关文档