【精品博文】做算法设计的FPGAer应该多用VHDL

VHDL似乎快被FPGA/ASIC界遗忘了。不说ASIC那几个工具本来就不待见VHDL,越来越多的高校也采用与C形似的verilog进行教学,各个论坛讨论群里常见的问题或者求助绝大多数也是以Verilog系列为主。偶尔几个VHDL语法帖子多半也是无人搭理。

纵然VHDL的类型转换让人崩溃,还是有很多优秀的特性。这些特性有一些被sv所借鉴,比如记录类型record、再比如signal数据类型。个人使用后的感觉是这些特性非常类似面向对象的编程思想,因而非常适合大规模复杂逻辑为主的算法建模。建议算法实现工程师可以多多使用VHDL。

下面举几个特性的例子说明一下。

1、使用record类型定义模块接口。VHDL的record类型类似C语言中定义的结构体。VHDL支持record数据类型作为模块的接口定义。对于厌倦了超级繁琐漫长繁复但没啥意义模块接口和变量说明的FPGAers,record类型简直神器。将大大减少代码量,同时使端口例化、互联变得容易。值得一提的是record类型体现了数据结构的特点。将同一模块下的信号量打包,如fifo的读写接口,有利于代码阅读和维护,更为了更大规模、更复杂逻辑的建模奠定基础。

2、package的应用。record类型的引入有了数据结构的影子,package则能看出面向对象编程中“类”的影子。结合record类型,把新定义的对record类型定义的变量的赋值、变换等常用操作,以function的形式打包到一个package中。在上层模块package中use进来,从下而上最终组成系统。各个package由于功能独立完全,可以很方便的继承、扩展,从而更容易代码复用。这种面向对象的编程思想,非常匹配一些复杂逻辑的算法硬件加速。

3、属性的应用。VHDL最被诟病的就是其及其严格的类型转换。但是VHDL完备的属性却使得代码对信号位宽具有更好的兼容性。这有啥用?这能让你的代码通用性更好。通用性更好有啥用?可以使你的模块独立性更好,从而在更小的改动下完成系统的搭积木操作。对类似a<= {Width{1'b1}}写法感到崩溃的盆友体会一下,a <= a'HIGH的简洁。当然有人说Verilog中可以把位宽定义成parameter,也很方便啊。那你可能没做过有符号数,在位宽参数化情况下的符号位扩展吧。

附以下是VHDL中预定义的可综合的数值类属性:

d’LOW             –返回数组索引的下限值

d’HIGH            –返回数组索引的上限值

d’LEFT             –返回数组索引的左边界值

d’RIGHT            –返回数组索引的右边界值

d’LENGTH       –返回矢量的长度值

d’RANGE          –返回矢量的位宽范围

。。。。。。 当然还有更多。

最后说几个VHDL的缺点平衡一下本文。强制类型转换就不说了,其断言语句比较弱,对FPGA综合器综合指令的支持更是太弱了。

(0)

相关推荐

  • 例说Verilog HDL和VHDL区别,助你选择适合自己的硬件描述语言

    如果你搜索Verilog和VHDL的区别,你会看到很多讨论这场HDL语言战争的区别页面,但大多数都很简短,没有很好地举例说明,不方便初学者或学生理解. Verilog和VHDL之间的区别将在本文中通过 ...

  • 听一位行业老兵介绍FPGA学习经验,受益良多啊!

    相信很多刚接触FPGA的初学者们都对它一知半解,不知道它真正的优势在哪里.当然,这对于初学者来说,确实不需要太过于深入了解,也了解不了那么多.对于初学者们,有一些过来人的建议,小编觉得还是非常有用的, ...

  • Vscode中自动生成Verilog/VHDL模板以及代码自动联想

    为了高效开发VHDL/Verilog,使用的编辑器一般会有很多的插件便于用户的开发,比如自动生成测试文件的插件(我当初也发过相关的脚本),语法的检测,模块的联想自动补充,这些插件提供的都属于通用的功能 ...

  • 【精品博文】今年秋季的FPGAer聚会

    来也匆匆,去也匆匆,时间从上一次博客更新到现在已经快1年了,这次聚会无仍旧是无主题式演讲加聚餐,新面孔比较多,但也有老面孔是认识的.信哉! 深圳的天仍旧那么美,蓝蓝的天上白云清晰可见,这个时候的深圳今 ...

  • 【精品博文】高级FPGA设计——第五章:复位电路

    复位极端重要,但是却常常容易被忽略.在这一章,我们就来聊聊复位的事. 1,同步复位和异步复位 众所周知,复位操作包括同步复位和异步复位.我们先来了解下两者存在的问题. 1.1 完全异步复位的问题 完全 ...

  • 【精品博文】高级FPGA设计——第四章:跨时钟域问题

    在FPGA设计中,不太可能只用到一个时钟.因此跨时钟域的信号处理问题是我们需要经常面对的. 跨时钟域信号如果不处理的话会导致2个问题: (1) 若高频率时钟区域输出一个脉冲信号给低频率时钟区域,则该脉 ...

  • 【精品博文】高级FPGA设计——第三章:功耗结构设计

    除了速度和面积外,数字设计中还有另外一个主要特性:功耗. 在CMOS技术中,动态功耗与门和金属引线的寄生电容充放电有关.在电容中消耗电流的一般方程为:I=V*C*f (其中I是总电流,V是电压,C是电 ...

  • 【精品博文】高级FPGA设计——第二章:面积结构设计

    在上一章中,我们提到速度是FPGA设计中的重要特性,现在要说说另一重要特性:面积. 面积过大意味着成本的提升,对FPGA以及ASIC都是如此.因此,我们需要竭力控制面积,可采用以下方法: 1,折叠流水 ...

  • 【精品博文】高级FPGA设计——第一章:高速度结构设计

    我们使用FPGA,除了实现预期功能之外,最关心的就是系统运行的速度,这是我们使用FPGA的最重要的原因. FPGA中速度包含3个指标: 流量(Throughput):每个时钟周期处理的数据量,度量为每 ...

  • 【精品博文】ARRIA10开发设计要领

    估计大概明年很多人就会用arria10做网络平台加速了,还有安防的视频加速算法,无线小基站,或者arria10做机器视觉平台.这些都是明年2018的可能要做的事情. arria10虽然吹了这么几年,但 ...

  • 【精品博文】关于FPGA图像处理算法验证板

    淘宝网和电子论坛,卖开发板都是烂大街了.说实在的,视频处理开发板也是挺多的.但是说实在,总感觉很多fpga图像处理板子,无非简单利用摄像头做做图像插值,滤波器,二值化处理. 但真正项目有这么简单吗?图 ...

  • 【精品博文】加密芯片——3DES算法特点与应用注意事项

    3DES是三重数据加密算法的通称.它是DES算法的增强版,相当于对每个数据块应用三次DES运算.因为密钥长度的增加,安全等级和破解难度也要高于DES算法. 3DES算法的加密流程分为3步 1.明文数据 ...