Verilog弘字象晚设计教程(第2服)4在上述第二、第三、第四种设计方案中,电路结构的考虑和决策至关重要。有的电路结构速度快,但所需的逻辑单元多,成本高;而有的电路结构速度慢,但所需的逻辑单元少,成本低。复杂数字逻辑系统设计的过程往往需要通过多次仿真,从不同的结构方案中找到一种符合工程技术要求的性能价格比最好的结构。一个优秀的有经验的设计师,能通过硬件描述语言的顶层仿真较快地确定合理的系统电路结构,减少由于总体结构设计不合理而造成的返工,从而大大加快系统的设计过程。8.专用硬线逻辑与微处理器的比较在信号处理专用计算电路的设计中,以专用微处理器芯片为中心来构成完成算法所需的电路系统是一种较好的办法。可以利用现成的微处理器开发系统,在算法已用C语言验证的基础上,在开发系统工具的帮助下,把该C语言程序转换为专用微处理器的汇缩,然后再编译为机器代码,最后加载到样机系统的存储区,即可以在开发系统工具的环境下开始相关算法的运算仿真或运算。采用这种方法,设计周期短、可以利用的资源多:但速度、能耗、体积等性能受该微处理器芯片和外围电路的限制。用高密度的FPGA(从几万门到几百万门)来构成完成算法所需的电路系统也是一种较好的办法。必须购置有关的FPGA开发环境、布局布线和编程工具。有些FPGA厂商提供的开发环境不够理想,其仿真工具和综合工具性能不够完善,还需要利用性能较好的硬件描述语言仿真器、综合工具,才能有效地进行复杂的DSP硬线逻辑系统的设计。由于FPGA是一种通用的器件,它的基本结构决定了只对某一种特殊的应用,其性能不如专用的ASIC电路。采用自行设计的专用ASIC系统芯片(systemonchip),即利用现成的微处理器IP核或根据某一特殊应用设计的微处理机核(也可以没有通用的微处理机核),并结合专门设计的高速ASIC运算电路,能设计出性能价格比最高的理想数字信号处理系统。这种方法结合了微处理器和专用的大规模集成电路的优点。由于微处理器IP核的挑选结合了算法和应用的特点,又加上专用的ASIC在需要高速部分的增强,能“量体裁衣”,因而各方面性能优越。但由于设计和制造周期长、投片成本高,往往只有经费充足、批量大的项目或重要的项目才采用这一途径。当然性能优良的硬件描述语言仿真器、综合工具是不可缺少的;另外,对所采用的半导体厂家基本器件库和IP库的深入了解也是必须的。以上所述算法的专用硬线逻辑的实现都需要对算法和数据接口协议有深入的了解,还须掌握硬件描述语言和相关的EDA仿真、综合和布局布线工具。9.C语言、Matlab与硬件描述语言在算法运算电路设计的关系和作用数字电路设计工程师一般都学习过编程语言、数字逻辑基础、各种EDA软件工具的使用。就编程语言而言,国内外大多数学校都以C语言为标准,目前狼少有学校使用Pascal和Fortran;而Matlab则是一个常用的数学计算软件包,有许多现成的数学函数可以利用,大大节省了复杂函数的编程时间,Matlab也提供手段可以与C程序模块方便地接口,因此用Matlab来做数学计算系统的行为仿真常常比直接用C语言方便,能很快生成有用的数据文件和表格,直接用于算法正确性的验证。基础算法的描述和验证常用C语言来做。例如要设计ReedSolomen编码/解码器,必须先深入了解ReedSolomen编码/解码的算法,再编写C语言的程序来验证算法的正确性。运行描迷缤码器的C语言程序,把在数据文件中的多组待编码的数据转换为相应的缩码后将数据并存入文件:再编写一个加千扰用的C语言程序,用手模拟信道。它能产生随机误码位(并
储诊5把误码位个数控制在纠错能力范围内)将其加入编码后的数据文件中。运行该加扰程序,产生带误码位的编码后的数据文件;然后再编写一个解码器的C语言程序,运行该程序把带误码位的编码文件解码为另一个数据文件。只要比较原始数据文件和生成的文件便可知道编码和解码的程序是否正确(能否自动纠正纠错能力范围内的错码位)。用这种方法就可以来验证算法的正确性。但这样的数据处理其运行速度只与程序的大小和计算机的运行速度有关,也不能独立于计算机而存在。如果要设计一个专门的电路来进行这种对速度有要求的实时数据处理,除了以上介绍的C程序外,还须编写硬件描述语言(如VerilogHDL或VHDL)程序,进行仿真以便从电路结构上保证算法能在规定的时间内完成,并能通过与前端和后端的设备接口正确无误地交换(输人/输出)数据。用硬件描述语言(HDL)的程序设计硬件的好处在于易于理解、易于维护、调试电路速度快,有许多易于掌握的仿真,综合和布局布线工具,还可以用C语言配合HDL来做逻辑设计的布线前和布线后仿真,验证功能是否正确。在算法硬件电路的研制过程中,计算电路的结构和芯片的工艺对运行速度有很大的影响。所以在电路结构完全确定之前,必须经过多次仿真,即:1)C语言的功能仿真,2)C语言的并行结构仿真;3)VerilogHDL的行为仿真;4)VerilogHDLRTL级仿真;5)综合后门级结构仿真:6)布局布线后仿真;7)电路实现验证。下面介绍用C语言配合VerilogHDL设计算法的硬件电路块时考患的三个主要问题:·为什么选择C语言与VerilogHDL配合使用:·C语言与VerilogHDL的使用有何限制;●如何利用C语言来加速硬件的设计和故障检测。(1)为什么选择C语言与VerilogHDL配合使用:首先,C语言很灵活,查错功能强,还可以通过PLl(编程语言接口)编写自已的系统任务,并直接与硬件仿真器(如Verilog一XL)结合使用。C语言是目前世界上应用最为广泛的一种编程语言,因而C程序的设计环境比Ver-ilogHDL更完整。此外,C语言有可靠的编译环境,语法完备,缺陷较少,可应用于许多领域。比较起来,Verilog语言只是针对硬件描述的,在别处使用(如用于算法表达等)并不方便。而且Verilog的仿真、综合、查错工具等大部分软件都是商业软件,与C语言相比缺乏长期大量的使用,可靠性较差,亦有很多缺陷。所以,只有在C语言的配合使用下,Verilog才能更好地发挥作用。面对上述问题,最好的方法是C语言与VerilogHDL语言相辅相成,互相配合使用。这就是既要利用C语言的完整性,又要结合Verilog对硬件描述的精确性,来更快更好地设计出符合性能要求的硬件电路系统。利用C语言完善的查错和编译环境,设计者可以先设计出一个功能正确的设计单元,以此作为设计比较的标准。然后,把C程序一段一段地改写成用并型结构(类似于Verilog)描述的C程序,此时还是在C的环境里,使用的依然是C语言。如果运行结果正确,就将C语言关键字用Verilog相应的关键字替换,进入Verilog的环境:将测
6Verilog数字系统键什教程(第2版)试输入同时加到C与Verilog·两个单元,将其输出做比较。这样很容易发现问题的所在,然后更正,再做测试,直至正确无误。剩下的工作就交给后面的设计工程师。(2)C语言与Verilog语言互相转换中存在的问题是,混合语言设计流程往往会在两种语言的转换中遇到许多难题。例如,怎样把C程序转换成类似Verilog结构的C程序,来增加并行度,以保证用硬件实现时运行速度达到设计要求,又如怎样不使用C语言中较抽象的语法,例如选代,指针,不确定次数的循环等,也能来表示算法,因为转换的目的是要用可综合的Verilog语句来代替C程序中的语句,而可用于综合的Verilog语法是相当有限的,往往找不到相应的关键字来替换。C程序是一行接一行依次执行的,属于顺序结构;而Verilog描述的硬件是可以在同一时间同时运行的,属于并行结构,这两者之间有很大的冲突。而Verilog的仿真软件也是顺序执行的,在时间关系上同实际的硬件是有差异的,可能会出现一些无法发现的问题。Verilog可用的输出输人函数很少,C语言的花样则很多,转换过程中会遇到一些困难。C语言的函数调用与Verilog中模块的调用也有区别。C程序用函数是没有延时特性的,一个函数是唯一确定的,对同一个函数的不同调用是一样的。而Verilog中对模块的不同调用是不同的,即使调用的是同一个模块,必须用不同的名字来指定。Verilog的语法规则狠死,限制很多,能用的判断语句有限。仿真速度较慢,查错功能差,错误信息不完整。仿真软件通常也很昂贵,而且不一定可靠。C语言没有时间关系,转换后的Verilog程序必须做到没有任何外加的人工延时信号,也就是必须表达为有限状态机,即RTL级的Verilog;否则将无法使用综合工具把Verilog源代码转化为门级逻辑。(3)如何利用C语言来加快硬件的设计和查错:表0.1中列出了常用的C语言与Verilog语言相对应的关键字与控制结构。表0.1C语言与Verilog语言的比较Verilog语言C语言sub-functionmodule, function, taskif - then - elseif - then - elsecasecase(.)begin, endforforwhilewhiledisablebreakdefinedefineintintprintfmonitor,display,strobe表0.2中,列出了C语言与Verilog语言相对应的运算符。从上面的讨论可以总结如下:①C语言与Verilog硬件描述语言可以配合使用,辅助设计硬件。②C语言与Verilog硬件描述语言类似,只要稍加限制,C语言的程序很容易转成Veril-og的行为程序
结轮表0.2C语言与Verllog语言相对应的运算符C语言Verilog语言功能桑**//除+x如加减-%%取模!!反逻辑&&&&逆辑与1I逻辑惑>>大于<小于V=>=大于等于An=小于等于n==等于I=不等于!=位反相~nu&&按位逻辑与按位逻辑或112.按位逐辑异或+按位逆辑同戒>>右>>左移AA?:同等于if-else叙述?.美国和中国台湾地区逻辑电路设计和制造厂家大都以VerilogHDL为主,中国大陆地区目前学习使用VerilogHDL已经超过VHDL。到底选用Verilog或是VHDL来配合C一起用,就留给各位同学自行去决定。但从学习的角度来看,VerilogHDL比较简单,也与C语言较接近,容易掌握;而从使用的角度看,支持Verilog硬件描述语言的半导体厂家也较支持VHDL的多,从发展趋势看Verilog也比VHDL有更宽广的前途。总结绪论全面介绍了信号处理与硬线逻辑设计的关系,以及有关的基本概念,引人了Verilog硬件措述语言,向读者展示一种20世纪90年代才真正开始在美国等先进的工业化国家逐步推广的数字逻辑系统的设计方法。在下面的各章里将分步骤地详细介绍这种设计方法
Veriiog数字集晚银计教程(第2版)8思考题1、什么是信号处理电路?它通常由哪两大部分组成?2,为什么要设计专用的信号处理电路?3.什么是实时处理系统?4为什么要用硬件描述语言来设计复杂的算法逻辑电路?5能不能完全用C语言来代替硬件描述语言进行算法逻辑电路的设计?6.为什么在算法逻辑电路的设计中需要用C语言和硬件述语言配合使用来提高设计效率?