1,面对C语言比verilogHDL更加成熟,而且更加可靠,因为verilog
的编译,查错工具大都是商业软件,因此没有像C语言一样得到广泛的应用,各种缺陷也较C来说 较多。基于这样的原因,在设计算法的硬件电路块时,一般采用C语言和verilog相结合的方式,利用C语言完善的查错和编译环境,设计者可以先设计出一个功能正确的设计单元,以此作为设计比较的标准。然后,把C程序一段一段地改写成用并型结构(类似于Verilog)描述的C程序,此时还是在C的环境里,使用的依然是C语言。如果运行结果都正确,就将C语言关键字用Verilog相应的关键字替换,进入Verilog的环境。将测试输入同时加到C与Verilog两个单元,将其输出做比较。这样很容易发现问题的所在,然后更正,再做测试,直至正确无误。
2,C语言的代码是一行一行执行的,属于顺序结构,而verilog是一种硬件描述语言,语句同时进行,属于并行结构,并且verilog的仿真软件大多都是顺序结构的,所以有很多的问题没有办法发现。
3,verilog的输入输出函数较少,而C却多种多样,因此在转化上存在很大的问题。C函数调用是没有时间延时特性的,不同时间调用同一个函数的功能是一样的,而Verilog中对模块的不同调用是不同的,即使调用的是同一个模块,必须用不同的名字来指定。Verilog的语法规则很死,限制很多,能用的判断语句有限。仿真速度较慢,查错功能差,错误信息不完整。仿真软件通常也很昂贵,而且不一定可靠。C语言没有时间关系,转换后的Verilog程序必须要能做到没有任何外加的人工延时信号,也就是必须表达为有限状态机,即RTL级的Verilog,否则将无法使用综合工具把Verilog源代码转化为门级逻辑。
4,verilog与C的常用关键字相互转化如下: