微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > ISE下用户自定义IP如何挂在EDK下?

ISE下用户自定义IP如何挂在EDK下?

时间:10-02 整理:3721RD 点击:
ISE下用户自定义的逻辑模块,可以封装成用户IP,但是这个IP怎样挂在EDK下?

有一本书叫介绍关于Xilinx的基于EDK设计方面的,有介绍相关方面的章节,但是深入理解还需去官方网站查找这方面的资料



  不知道小编主要做什么的,但是好像xilinx的EDK软件之前的版本(9.1,10.1)不是很好用,经常有莫名奇妙的一些软件之外的问题,不知道最新的版本怎么样了

非常感谢

也在找相关的资料,谢谢了

这个是非常容易 ,理解了 PLB 和 AXI_LITE 就明白。

EDK中如何使用ISE的Core Generator中的IP核,如RAM,FIFO等。
以本工程为例说明使用过程,本工作的用户IP使用了一个双端口RAM,为prog_buf。本工程用户IP核为nand_flash_controller,在nand_flash_controller_v1_00_a下。
1.在\project_2\project_2.srcs\sources_1\edk\nand_system\pcores\nand_flash_controller_v1_00_a下新建一个文件夹,命名为:netlist;
2.将在ISE的Core Generator生成prog_buf.v及prog_buf.ngc文件复制出来,其中prog_buf.v放到nand_flash_controller_v1_00_a文件夹下的hdl/verilog文件夹下,prog_buf.ngc放到刚才新建的netlist文件夹下;
3.在nand_flash_controller_v1_00_a\data文件夹下新建一个与此文件夹下mpd及pao文件同名,但后缀为bbd的文件,例如,本工程中mpd及pao文件为nand_flash_controller_v2_1_0.mpd及nand_flash_controller_v2_1_0.pao,则新建的bbd文件名称加后缀应为:
nand_flash_controller_v2_1_0.bbd;
4.打开刚才新建的nand_flash_controller_v2_1_0.bbd文件,添加以下语句:
————————————————————————————————————————————————————————————————————————————————————————
FILES
prog_buf.ngc
————————————————————————————————————————————————————————————————————————————————————————
由于本工程只使用了一个Core Generator中的IP核,所以只添加了一个,如果多个则应写成如下形式:
————————————————————————————————————————————————————————————————————————————————————————
FILES
ip1.ngc, ip2.ngc, ip3.ngc
————————————————————————————————————————————————————————————————————————————————————————
注意,一定不能写成这样:
————————————————————————————————————————————————————————————————————————————————————————
FILES ip1.ngc, ip2.ngc, ip3.ngc
————————————————————————————————————————————————————————————————————————————————————————
5.用notepad或者记事本打开data文件夹下的nand_flash_controller_v2_1_0.mpd文件,在Peripheral Options中加入“OPTION STYLE = MIX ”,如:
————————————————————————————————————————————————————————————————————————————————————————
... ...
BEGIN nand_flash_controller
## Peripheral Options
OPTION IPTYPE = PERIPHERAL
OPTION IMP_NETLIST = TRUE
OPTION HDL = MIXED
OPTION IP_GROUP = MICROBLAZE:USER
OPTION DESC = NAND_FLASH_CONTROLLER
OPTION STYLE = MIX
OPTION ARCH_SUPPORT_MAP = (others=DEVELOPMENT)
... ...
————————————————————————————————————————————————————————————————————————————————————————
6.用notepad或者记事本打开data文件夹下的_nand_flash_controller_xst.prj文件,参照已有的例子添加好prog_buf.v的路径,如
————————————————————————————————————————————————————————————————————————————————————————
... ...
vhdl axi_lite_ipif_v1_01_a "C:/Xilinx/14.4/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/axi_lite_ipif_v1_01_a/hdl/vhdl/address_decoder.vhd"
vhdl axi_lite_ipif_v1_01_a "C:/Xilinx/14.4/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/axi_lite_ipif_v1_01_a/hdl/vhdl/slave_attachment.vhd"
vhdl axi_lite_ipif_v1_01_a "C:/Xilinx/14.4/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/axi_lite_ipif_v1_01_a/hdl/vhdl/axi_lite_ipif.vhd"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/user_logic.v"
vhdl nand_flash_controller_v1_00_a "../hdl/vhdl/nand_flash_controller.vhd"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/constants.v"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/nand_flash_controller_top.v"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/nand_erase.v"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/nand_init.v"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/nand_program.v"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/nand_read.v"
verilog nand_flash_controller_v1_00_a "../hdl/verilog/prog_buf.v"
... ...
————————————————————————————————————————————————————————————————————————————————————————
7.用notepad或者记事本打开data文件夹下的nand_flash_controller_v2_1_0.pao文件,参照已有的例子添加好prog_buf.v的module名称,如
————————————————————————————————————————————————————————————————————————————————————————
... ...
lib proc_common_v3_00_a  all
lib axi_lite_ipif_v1_01_a  all
lib nand_flash_controller_v1_00_a user_logic verilog
lib nand_flash_controller_v1_00_a nand_flash_controller vhdl
lib nand_flash_controller_v1_00_a prog_buf verilog
... ...
————————————————————————————————————————————————————————————————————————————————————————
8.编译即可。
注意:有时候编译的时候还会出错,告诉你无法综合ISE的IP核,此时,只要在user_logic.v中把IP核实例化一下即可,不连线也行,如:
————————————————————————————————————————————————————————————————————————————————————————
... ...
prog_buf tst_ram_buffer(
  .clka(),
  .wea(),
  .addra(),
  .dina(),
  .clkb(),
  .addrb(),
  .doutb()
);
... ...
————————————————————————————————————————————————————————————————————————————————————————
这样,就可以综合了,估计这是EDK的一个bug。



   在用EDK搭硬件平台的时候,就可以做IP,IP一端通过总线(AXI,LMB等可选)和MB链接,用户逻辑自己做修改。xilinx有一份参考设计,详细说明了自定义IP的步骤,官网上有的,很详细



    你好,我就是这样做的,用了个ISE的FIFO IP核,结果在EDK的生成阶段死活过不去,ERROR:NgdBuild:604 - logical block
   'receive_send_data_0/receive_send_data_0/gtx_data_fifo2' with type
   'a_fifo_16_16' could not be resolved. A pin name misspelling can cause this,
   a missing edif or ngc file, or the misspelling of a type name. Symbol
   'a_fifo_16_16' is not supported in target 'virtex5'.

我建IP核的过程是标准流程。而且也按网上对604错误的处理处理过了,还是不行。知道为什么不?谢谢!



   没看懂你这个错误原因,不过这么挂IP核肯定没有问题,我用过很多回了。



   我也觉得没问题,可就是出问题了,我试试重新操作一遍。



  这是软件的一个小BUG,你需要在你的工程ISE工程目录下将例化的FIFO.NGC文件添加进去。

想问一下各位大神,我想挂一个rom核,它的初始化.coe文件该怎么办?



   在ISE中生成ROM的时候就导进去吧

谢谢小编!

标题
我是想问我在edk下挂一个自建的IP核里面包括ise中的rom核。那么这个时候.coe文件该怎么办?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top