硬件描述语言与软件编程语言的本质的区别是:用途不一样。VHDL等硬件描述语言主要用于CPLD、FPGA的大规模可编程逻辑器件;而C语言等高级编程语言主要用于计算机等方面。
一、硬件描述语言与软件编程语言的本质的区别
用途不一样。VHDL等硬件描述语言主要用于CPLD、FPGA的大规模可编程逻辑器件;而C语言等高级编程语言主要用于计算机等方面。做单片机方面,汇编语言是必学的,虽然单片机编程所用的大部分是C语言。VhdL语言是针对FPGA和CPLD的硬件描述语言,两者没多大共同点,是针对两个不同领域的语言。
首先说VHDL:它是描述电路的计算机工具,早期的CPLD等器件是基于与-或阵列的,更容易说明这点,VHDL是描述电路行为的,当下载到器件后,它就是具体的电路,这个电路全由与-或阵列组成。后期的FPGA也一样,只是它是基于查找表的。再说C语言:我们可以认为它是用于控制特定电路的工作。我们都知道可以C编程的控制器都有程序存储器,它里面就存放了C编译后的二进制代码。而VHDL里下载后根本就不需要这个存放程序的地方。
延伸阅读:
二、Verilog的抽象层次
Verilog的抽象层次是指,要实现一个功能,我们可以怎么用怎样的Verilog语言去描述他。Verilog一共有五种抽象层次,分别是:系统级、算法级、寄存器级、门级、开关级,其中系统级和算法级又称作是行为级,寄存器级又称为数据流级,门级和开关级又称作是结构级。
行为级是通过模块之间的数据流描述系统实现,并不关心具体的硬件层次。这一层次抽象层次较高,描述也最灵活。这一层次和C语言时类似的,语法逻辑上十分相似。
数据流级是通过通过描述模块内部或者模块之间,数据在寄存器间的流动和数据处理。数据流级抽象层次较低,一般数据流级描述可以进行逻辑综合。和C语言不同,数据流级描述涉及到具体的线路连接(如线网驱动和寄存器驱动)。
结构级是用具体的逻辑门(如与、或、非门等)和具体的开关器件实现模块功能。这一抽象层次级别最低,灵活性也较差。但是,同一个逻辑表达式表达的功能,用不同的电路结构去实现,最终的电路面积功耗速度稳定性等性能参数是完全不同的。这一层次上考虑的问题,C语言是完全不会考虑的。
总言之,Verilog有着比C语言更加丰富的抽象层次,这使得进行代码优化时,Verilog不仅可以像C语言一样,从算法逻辑上进行优化,灵活性高,还可以从电路设计实现的角度进行优化,更大程度上提高电路性能。