从本质上谈Verilog与C语言的区别
一、硬件描述VS软件描述
Verilog是一种硬件描述语言,作用是进行电路设计,可以描述电路的功能、连接和时序。他关心的不仅是从功能逻辑这个问题如何解决,更关心这些功能如何实现,关心最终的电气连接。可综合的Verilog代码经过综合后,最终会转化为实际电路。
C语言是一种软件描述语言,作用是通过算法逻辑实现某个功能。他不关心电路如何实现,只关心要解决这个问题,我应该使用什么功能,如何使用这些功能。C语言经过编译后,最终转化为二进制码实现。
二、Verilog的抽象层次
Verilog的抽象层次是指,要实现一个功能,我们可以怎么用怎样的Verilog语言去描述他。Verilog一共有五种抽象层次,分别是:系统级、算法级、寄存器级、门级、开关级,其中系统级和算法级又称作是行为级,寄存器级又称为数据流级,门级和开关级又称作是结构级。
行为级是通过模块之间的数据流描述系统实现,并不关心具体的硬件层次。这一层次抽象层次最高,描述也最灵活。这一层次和C语言时类似的,语法逻辑上十分相似。
数据流级是通过通过描述模块内部或者模块之间,数据在寄存器间的流动和数据处理。数据流级抽象层次较低,一般数据流级描述可以进行逻辑综合。和C语言不同,数据流级描述涉及到具体的线路连接(如线网驱动和寄存器驱动)。
结构级是用具体的逻辑门(如与、或、非门等)和具体的开关器件实现模块功能。这一抽象层次级别最低,灵活性也较差。但是,同一个逻辑表达式表达的功能,用不同的电路结构去实现,最终的电路面积功耗速度稳定性等性能参数是完全不同的。这一层次上考虑的问题,C语言是完全不会考虑的。
总言之,Verilog有着比C语言更加丰富的抽象层次,这使得进行代码优化时,Verilog不仅可以像C语言一样,从算法逻辑上进行优化,灵活性高,还可以从电路设计实现的角度进行优化,更大程度上提高电路性能。
三、并行执行VS串行执行
Verilog是硬件描述,C语言是软件描述。硬件实现与软件实现相比,有一个最大的优点就是:硬件电路可以并行执行。因此,Verilog的部分描述语句可以并行执行,与语句出现的顺序无关;而C原因只能串行执行,上一条语句执行结束之后,才能执行下一条语句,代码的顺序决定了执行顺序。并行执行也带来了一个不得不考虑的问题:时序。因此,进行Verilog设计时,必须要考虑时序问题。
没有回复内容