sysgen(system generator)下的使用black box导入现有的HDL模块,并使用modelsim模块仿真

标签:
sysgensystemgenerator导入hdl模块xilinx |
分类: FPGA |
导入外部的HDL程序模块
System
1.黑盒子HDL代码的要求
黑盒子模块队导入的HDL代码格式有一定的限制,其具体要求如下:
HDL实体的名字不能和设计中已有的模块名字重复;
顶层黑盒子实体中不能出现双向端口;
对于Verilog黑盒子,其模块和端口名必须小写,且命名要规范;
HDL模块的时钟信号以及时钟使能信号都必须是标准逻辑类型,即不能使用矢量输入信号,如:
input
input
黑盒子代码的时钟和时钟使能信号必须成对出现,即出现一个时钟信号,则必须有一个时钟使能信号。且时钟信号的名字中必须包含字符串clk,时钟使能信号的名字必须包含字符串ce,一对时钟信号和时钟使能信号的名字只能有clk和ce不同,如my_clk_1和my_ce_1。
2.黑盒子配置向导
System
1)
启动可配置向导
当在设计中添加一个黑盒子模块时,配置向导会自动启动。注意:在添加黑盒子之前,要将导入的HDL文件放在设计模型的文件夹中。可配置向导只在设计文件.mdl所在的文件中寻找.v和.vhd文件,如果没有找到相关文件,则会弹出警告提示对话框,如图7-47所示。
http://s12/mw690/735f2910gd5715405847b&690generator)下的使用black
当找到.v或者.vhd文件后,可配置向导会弹出一个新的对话框,并列出所有HDL文件,如图7-48所示。然后选中要导入的文件,点击“Open”按钮即可完成整个流程。自动生成的.m文件的名字为 “_config.m”,且存放在设计文件夹中。就是导入的HDL文件的名字。
2)
可配置向导的一些细节
可配置向导在运行过程中会自动提取大量的信息,并执行相应的转换,但是有些细节必须通过手动修改才能完成,如表7-12所示。另外,可配置向导会在.m函数相应的地方添加注释以提示设计人员。
http://s11/mw690/735f2910gd57169bdb2ca&690generator)下的使用black
3.可配置.m函数
导入的HDL文件都是以黑盒子模块来描述的,因此原HDL文件所有的信息都通过可配置.m函数加载到黑盒子中。可配置.m函数不仅定义了接口、物理实现以及仿真行为等信息,还包括以下配置信息:顶层模块的实体名字、VHDL或Verilog语言选择标志、端口描述、模块的一般性需求、时钟和采样速率、和模块有关的所有文件信息以及模块中是否含有组合逻辑路径。
例如:
在新的文件中拉入两个 black box
http://s16/mw690/735f2910gd571ad52346f&690generator)下的使用black
然后会自动弹出
http://s11/mw690/735f2910gd571b1ac8dba&690generator)下的使用black
分别有两个编写好的HDL文件,一个verilog,一个VHDL。分别选择一个HDL 文件。
http://s4/mw690/735f2910gd571aad10103&690generator)下的使用black
然后如果我们要使用modelsim仿真的话,要拖入这个
http://s7/mw690/735f2910gd571aae08c16&690generator)下的使用black
然后双击black box图标。
我们注意到在Block configuration
m-function一栏中,会自动出现自动生成的文件,这个文件是可配置的。
http://s15/mw690/735f2910gd571aae6955e&690generator)下的使用black
在HDL co-simulator中填入
然后点运行,会自动弹出modelsim仿真
http://s12/mw690/735f2910gd571f1f083ab&690generator)下的使用black
注意在Inactive 情况下scope没有波形。。。只有在modelsim或者ISE下scope才有波形
http://s14/mw690/735f2910gd571ff74bb6d&690generator)下的使用black
下面是实现编写好的verilog文件和VHDL 文件
shutter.v 文件内容
// `timescale 1 ns / 1 ns
`define false 0
`define true 1
module shutter(clk, ce, din, latch, dout);
endmodule // shutter
word_parity_block.vhd
文件内容
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity word_parity_block is
end word_parity_block;
architecture behavior of word_parity_block is
begin
end behavior;