十五年老牛浅谈HDL语言

作为FPGA工程师,我们每天都在与HDL语言打交道。我不介绍基础语法(这些内容网上已有大量教程),而是分享对HDL语言本质的理解,希望能帮助同行更高效地进行硬件设计。

HDL(Hardware Description Language)语言,即硬件描述语言,顾名思义是用来描述硬件电路的结构和行为的语言。HDL(硬件描述语言)与C语言有着本质区别:前者是描述性语言,后者是过程式编程语言。虽然两者都需要逻辑思维,但设计理念截然不同。

  • 为什么把FPGA语言定义为硬件描述语言呢?

因为以前的电路是人工画出来的,就像我们画电路原理图一样。硬件描述语言的主要目的是用来描述已有电路的而非设计电路。

  • 描述给谁看呢?

HDL语言是描述给EDA工具(如Xilinx的ISE和Vivado软件等)看的,EDA工具根据你的描述,将电路绘制出来。如果EDA工具可以根据你编写的HDL语言原样绘制电路,你的HDL代码就成功的。

  • 语言的优势

因为使用硬件描述语言可以大大缩短硬件电路的设计开发周期。

  1. 设计效率:文本描述比原理图绘制更快
  2. 仿真验证:RTL级仿真可早期发现问题
  3. 可重用性:参数化设计提高IP复用率
  • 怎么才能写好HDL语言呢?

我喜欢将FPGA设计比喻成修一条很长的路,比如从湖南省长沙市我家开车去益阳市同事老家,要经过长沙市二桥、岳麓大道、长益高速、省道,最后达到同事老家。二桥、岳麓大道、长益高速、省道的搭建工艺、路面宽度、最高限速等等都不一样。二桥是双向4车道,最高限速40公里/时;岳麓大道是双向8车道,最高限速70公里/时;长益高速是双向4车道,最高限速70公里/时;省道是双向4车道,最高限速40公里/时。我们确定了它们的功能、搭建工艺、路面宽度、最高限速等等指标,就可以分包给不同的建造团队进行修建。拿长益高速做模块例子比较形象,高速入口就是模块的输入接口,高速本身是个黑盒处理,高速出口就是模块的输出接口。同理,我们在进行FPGA设计或者HDL语言编写时,可以把FPGA设计看成分段或者分模块的步骤,HDL语言编写就是把每个模块按功能和指标要求描述出来,最后把所有模块都连起来就可以了。

我认为HDL语言编写要有规范性,不是通常所说的便于阅读的规范性,而是便于EDA工具理解的规范性。EDA工具自带的编程模板(如Xilinx的Language Templates)就是最好的参考。比如,想搭建一个计数器,模板是怎么写的,我们就怎么写,这样能更好的便于EDA工具理解,原样绘制出我们描述的电路。

五、选择VHDL还是Verilog?

我认为VHDL还是Verilog两者没有好坏之分,本质上也很类似,只是VHDL更严谨而Verilog更智能。建议是精通其中一种语言,另一种语言达到能阅读和简单修改的水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值