快捷搜索: 王者荣耀 脱发

Verilog和VHDL的混合使用

有时,同一个设计中即需要使用Verilog语言,又需要使用VHDL语言。由于一些原因,一个设计团队可能在做下一个项目时切换到使用另一种语言,但是会复用现有的一些功能模块。现有的这些功能模块经常是用不同语言编写的第三方IP核,这使得设计中使用了不止一种语言。Xilinx的Microblaze处理器就是一个这样的例子,其多数外设采用VHDL编写,需要集成进Verilog项目中。

Xilinx的XST综合工具和ISIM模拟器完全支持混合使用Verilog/VHDL的项目。

下面这个简单的例子说明了Verilog和VHDL是如何使用的。模块Ifsr counter采用VHDL编写,在Verilog编写的模块top中例化。Verilog模块也可以在VHDL中例化。

只要所有边界规则得以满足,Verilog和VHDL模块就能直接在一起使用。每个综合工具的规则和限制可能稍微有所不同。Xilinx的XST用户指南定义了下面这些规则:

    VHDL和 Verilog的混合使用仅仅只限于设计单元的例化。VHDL设计中可以例化Verilog模块,Verilog设计中也可以例化VHDL实体。任何VHDL和 Verilog之间的其他类型混用是不被支持的。 在 VHDL设计中,VHDL类型的受约束子集、类属和端口允许用于连接到Verilog模块的边界上。同样,在 Verilog设计中, Verilog类型的受约束子集、参数和端口也允许用于连接到 VHDL实体或配置的边界上。 ·在VHDL 中例化 Verilog模块时不支持配置规范(configuration specification)、直接例化和元件配置。 VHDL和 Verilog 库是逻辑统一的。 为了例化 Verilog模块中的 VHDL 实体,将模块名定义为与想要例化的 VHDL实体相同,并且执行常规的Verilog例化。名称是大小写敏感的。 为了在 VHDL 设计中例化 Verilog模块,定义 VHDL元件名与想要例化的Verilog模块相同,例化 Verilog 元件类似于例化 VHDL元件。

需要注意的是,使用商业模拟器模拟混合语言的设计可能需要单独的授权。

更多有趣的话题请看链接:

经验分享 程序员 微信小程序 职场和发展