首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Xilinx ISE Black Box使用

Xilinx ISE Black Box使用

正常的Xilinx设计,无论里面是否调用了IP核,可以封装成和普通的IP核一样的形式。由NGC网表文件和一个标有顶层模块输入输出的wrapper文件组成。在新的设计调用此生成的IP核的时候,只要将wrapper实例化即可。Translate的时候会自动替换成ngc文件。Ngc文件内包含了一些初始化内容,包括通过coe文件初始化的ram等等。
1、下面是具体操作的过程,现假设有一个已经完成的工程,在Synthesize上面右键,选择Process Properties


将Add I/O Buffers去掉,这是因为,正常的综合过程会在顶层模块加IO Buffer,但是我们生成的模块是用作其他设计的内部实例化,不用做顶层模块,因此要去掉。否则会报错,因为里面加了两次IO buffer。


2、然后就可以综合了,会得到top module的.ngc文件、以上所说两个文件还差一个warpper。假设一个模块顶层模块如下:
moduledht512 (data_in ,data_out ,clk ,rst ,start ,finished ,enable ,addr_out,mode_sel ,addr_in);

parameterWIDTH = 64;
parameterLENGTH =512;
parameterINDEX = 9;
parameterFFT = 2'b00;
parameterIFFT = 2'b01;
parameterDHT = 2'b10;
input[1:0] mode_sel; //00:FFT 01:IFFT 10HT select process mode
input[WIDTH-1:0] data_in;
input clk,rst ,enable;
inputstart;
output[WIDTH-1:0] data_out;
outputfinished;
output[INDEX-1:0] addr_out ,addr_in;
wire en,rst_n;
//databetween process elements
wire[WIDTH-1:0] data_pe3_pe2 ,data_pe2_pe1 ,data_pe1_pe0,data_pe37_pe36,data_pe36_pe35 ,data_pe35_pe34 ,data_pe34_pe33 ,data_pe33_pe32,data_pe32_pe31 ,data_pe41_pe22 ,data_pe41_pe22_mux ,data_pe38_pe39,data_pe39_pe310 ,data_pe310_pe311 ,data_pe311_pe312 ,data_pe312_pe313,data_pe313_pe314 ,data_pe22_pe38 ,data_pe314_pe51 ,data_pe12_pe22 ,data_in_fft,data_in_ifft ,data_out_ifft ,data_out_fft;
//WNaddresses and wires
wire[0:0] wn_addr1;
wire[0:1] wn_addr2;
wire[0:2] wn_addr3;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。
Endmodule
Warpper只需要module接口和输入输出定义:
moduledht512 (data_in ,data_out ,clk ,rst ,start ,finished ,enable ,addr_out,mode_sel ,addr_in);
input[1:0] mode_sel; //00:FFT 01:IFFT 10HT select process mode
input[WIDTH-1:0] data_in;
input clk,rst ,enable;
inputstart;
output[WIDTH-1:0] data_out;
outputfinished;
output[INDEX-1:0] addr_out ,addr_in;
endmodule
将它保存为.v文件即可当作wrapper.v使用。
3、将上述wrapper文件和所有ngc文件(其中需要上述工程中用过的其他IP核的ngc文件)复制到新的工程目录下。 然后在新的工程里面实例化,就可以了。完成了上面的步骤,只能进行综合,在Translate的时候会报错。这是因为Translate的时候找不到ngc文件,我们需要在Translate下面设置:


在下面的Marco Search Path里面加上ngc文件所放的位置。


完成了上面的,Implement就可以过了。以上完成了通过ngc文件实例化的过程。
但是如果需要仿真的话,上面的文件是出不来波形的,那么我们需要实例化另一个文件,通过下面的方法产生:


点击Generate Post-Synthesis Simulation Model,将在工程目录下的netgen文件夹下生成_synthesis.v文件,将它实例化就可以看到波形啦!



来源:alan5555的专栏
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表