关闭

关闭

封号提示

内容

首页 谈VHDLVerilog的可综合性以及对初学者的一些建议.pdf

谈VHDLVerilog的可综合性以及对初学者的一些建议.pdf

谈VHDLVerilog的可综合性以及对初学者的一些建议.pdf

上传者: wanghao198901 2013-12-08 评分1 评论0 下载0 收藏0 阅读量598 暂无简介 简介 举报

简介:本文档为《谈VHDLVerilog的可综合性以及对初学者的一些建议pdf》,可适用于IT/计算机领域,主题内容包含谈VHDLVerilog的可综合性以及对初学者的一些建议一、HDL不是硬件设计语言过去笔者曾碰到过不少VHDL或VerilogHDL的初学者问一些相符等。

谈VHDLVerilog的可综合性以及对初学者的一些建议一、HDL不是硬件设计语言过去笔者曾碰到过不少VHDL或VerilogHDL的初学者问一些相似的问题诸如如何实现除法、开根号如何写循环语句等等。在这个论坛上也时常能看到一些网友提出这一类的问题。对于这些问题首先要明确的是VHDL和Veriglog并非是针对硬件设计而开发的语言只不过目前被我们用来设计硬件。HDL是HardwareDescriptionLanguage的缩写正式中文名称是“硬件描述语言”。也就是说HDL并不是“硬件设计语言(HardwareDesignLanguage)”。别看只差这一个单词正是这一个单词才决定了绝大部分电路设计必须遵循RTL的模式来编写代码而不能随心所欲得写仅仅符合语法的HDL代码。二、HDL的来历之所以是“硬件描述语言”要从HDL的来历说起。VHDL于年开始在美国国防部的指导下开发完成于年并于年成为IEEE的标准。当初开发这种语言是出于美国国防部采购电子设备的需要。美军的装备采购自私人企业时常要面对这样一种风险:如果某种武器大量装备部队而其中某个零件的供应商却在几年后倒闭了那这种武器的再生产、维修和保养都会出现大问题。而电子设备、尤其是集成电路的内部结构较为复杂若出现前面所说的情况要找其他公司生产代用品非常困难。于是美国防部希望供应商能以某种形式留下其产品的信息以保证一旦其破产后能由其他厂商迅速生产出代用品。显然当初的设计文档显然是不能交出来的这在美国会涉及商业机密和知识产权问题。于是美国防部就想出了一种折衷的方法描述硬件的语言也就是VHDL。通过VHDL供应商要把自己生产的集成电路芯片的行为描述出来:比如说加了什么样的信号后过多少时间它能输出什么等等。这样如果有必要让其他厂商生产代用品他们只需照着VHDL文档设计出行为与其相同的芯片即可。这样的代用品相当于是新厂商在不了解原产品结构的情况下独立设计的所以不太会涉及知识侵权。VerilogHDL也形成于差不多的年代是由GatewayDesignAutomation公司大约在年左右开发的。其架构同VHDL相似但主要被用来进行硬件仿真。或许私人公司更注重实用Verilog要比VHDL简洁得多。由此可见这两种最流行的用于电路设计的语言没有一种是为了设计硬件而开发的(更何况年代还没有现在的那些功能强大的EDA软件呢)。因此当初制订HDL语言标准的时候并没有考虑这些代码如何用硬件来实现。换句话说有些代码写起来简单实现起来却可能非常复杂或者几乎不可能实现。三、HDL代码的可综合性现在回到最初的问题上。为什么诸如除法、循环之类的HDL代码总是会出错?由上一部分可知任何符合HDL语法标准的代码都是对硬件行为的一种描述但不一定是可直接对应成电路的设计信息。行为描述可以基于不同的层次如系统级算法级寄存器传输级(RTL)、门级等等。以目前大部分EDA软件的综合能力来说只有RTL或更低层次的行为描述才能保证是可综合的。而众多初学者试图做的却是想让软件去综合算法级或者更加抽象的硬件行为描述。比如说要想实现两个变量相除的运算若在代码中写下C=AB你将会发现只有一些模拟软件在前仿真中能正确执行这句代码但几乎任何软件都不能将其综合成硬件。不要怪软件太笨。试想一下如果我们自己笔算除法是怎么做的?从高位到低位逐次试除、求余、移位。试除和求余需要减法器商数和余数的中间结果必须有寄存器存储而此运算显然不能在一个时钟周期里完成还需要一个状态机来控制时序。一句简单的C=AB同所有这些相比显得太抽象对于只能接受RTL或更低层次描述的EDA软件来说确实太难实现。而如果代码是类似于(Verilog)always(posedgeclk)c<=AB这样的要求除法在一个时钟延上完成那更是不可能实现的。(注:有些FPGA的配套软件提供乘除法的运算模块但也只能支持直接调用不支持把形如C=AB的语句综合成除法模块。)又比如一个很多初学者常见的问题是试图让HDL进行循环运算形同(Verilog):for(i=iparity=parityxordatai一些功能比较简单的综合软件会完全拒绝综合循环语句而一些功能较强的软件仅当wordlength是常数的时候能综合当wordlength为变量时任何软件都不能综合上面的语句。这是因为硬件规模必须是有限的、固定的。当综合软件遇到循环语句时总是将其展开成若干条顺序执行的语句然后再综合成电路。若wordlength是常数则展开的语句数是确定的具有可综合性而若它是变量时展开的语句数不确定对应的硬件电路数量也不能确定无法被综合。或许有人说用计数器就能实现变量循环但这情形又和上面的除法运算相同。那需要额外的硬件用来存储中间结果和进行时序控制象上面那样的循环语句对此描述得太抽象软件接受不了。四、如何判断自己写的代码是可综合的?用一句简单的话概括:电脑永远没有你聪明。具体来说通常EDA软件对HDL代码的综合能力总是比人差。对于一段代码如果你不能想象出一个较直观的硬件实现方法那EDA软件肯定也不行。比如说加法器、多路选择器是大家都很熟悉的电路所以类似ABC(A>B)C:D这样的运算一定可以综合。而除法、开根、对数等等较复杂的运算必须通过一定的算法实现没有直观简单的实现方法则可以判断那些计算式是不能综合的必须按它们的算法写出更具体的代码才能实现。此外硬件无法支持的行为描述当然也不能被综合(比如想在FPGA上实现DDR内存那样的双延触发逻辑代码很容易写但却不能实现)。不过这样的判断标准非常主观模糊遇到具体情况还得按设计人员自己的经验来判断。如果要一个相对客观的标准一般来说:在RTL级的描述中所有逻辑运算和加减法运算、以及他们的有限次组合基本上是可综合的否则就有无法综合的可能性。当然这样的标准仍然有缺陷更况且EDA的技术也在不断发展过去无法综合的代码或许将来行某些软件不支持的代码换个软件或许行。比如固定次数的循环含一个常数参数的乘法运算等等有些EDA软件支持对它们的综合而有些软件不行。所以正确的判断仍然要靠实践来积累经验。当你可以较准确判断代码的可综合性的时候你对HDL的掌握就算完全入门了。

类似资料

该用户的其他资料

OFDM中的峰均比问题(1).doc

OFDM系统中时间、频率同步和峰均比降低问题研究.pdf

Altera FPGA&amp;amp;CPLD设计(基础篇).pdf

Verilog HDL 华为入门教程.pdf

verilog黄金参考指南中文版.pdf

职业精品

精彩专题

结婚彩礼真有那么重要吗?

原创于西周而后沿袭至今的彩礼,虽然被一部分家长奉为圭臬,但越来越多的年轻人对结婚必须要彩礼不以为然。彩礼引发的社会矛盾越来越受到关注,结婚是自己的事,如人饮水冷暖自知,至于要不要彩礼或者要多少彩礼,因人而异,因财力而已,不可一概而论。

用户评论

0/200
    暂无评论
上传我的资料

精选资料

热门资料排行换一换

  • 电网络理论考博试题.pdf

  • 以色列特种部队.pdf

  • B0707历史着作史 下卷.pdf

  • B0707历史着作史 上卷.pdf

  • B0706宪章运动史.pdf

  • B0705旧制度与大革命.pdf

  • B0704秘鲁征服史.pdf

  • 章太炎全集08.pdf

  • 《三字经》全文解释.pdf

  • 资料评价:

    / 2
    所需积分:1 立即下载

    意见
    反馈

    返回
    顶部