|
发表于 2014-3-19 11:11:43
|
显示全部楼层
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。 |
|