0
很多老师都将硬件描述语言当成一门编程语言来教,我本人也一直认为硬件描述语言与传统的编程语言类似,只不过添加了时序特征。 但其实这都是非常不正确的,硬件描述语言并不同于传统的编程语言,它更多是所见即所得–用于描述硬件功能,而不是告知程序如何运行…
对比
高级编程语言(High-Level Programming Language, HLL)大家都比较熟悉,如C/C++/Java/Python等等都属于这个范畴,它告诉计算机程序的执行过程,即怎么做(how)硬件描述语言(Hardware Description Language, HDL)重点则在于描述,目前主流的有Verilog和VHDL,它告诉计算机电路图的模样/电路图是怎么连的(输入输出端口、连接方式等),即是什么(what)
虽然Verilog语法与C类似(就像很多伪代码也会用类C的语法,会用//作为注释符等等),但它们本质上是完全不同的,也就是前面所说的要区分编程与描述两者之间的差异。
HDL与HLL最大的区别在于HDL显性包含了时间的语义,但HLL是没有的,这也是HLS关键要处理的一个问题。HLL是过程性的(procedural),更HDL更多包含了并行(concurrency)的元素HLL编译后将产生一条条指令,而HDL编译后则直接变成一个个门
三种硬件描述语言的形式
结构化模型(structural modeling):照着原理图(schematic)给出元件名,是什么,输入输出是什么例化and U1 (c,a,b)数据流模型(dataflow modeling):直接给出输入与输出的逻辑表达式连续赋值assign y=(a&b)|(~c)行为模型(behavior modeling):真值表case
历史
1971,引入RTL及第一门有影响力的HDL(Golden Bell)1985,第一门现代的HDL Verilog诞生(Gateway Design Automation)1987,VHDL(US Department of Defense)
现状
由前面的历史可以知道Verilog最开始是被设计为一门模拟(simulation)的语言,用于debug因而赋予了更多功能,但这些testbench是不会放入板上的; 而不是用于综合(