制作和调用基于ISE的blackbox在自己制作FPGA的blackbox(.ngc)的过程中,如果blackbox中调用了IPcores生成的DCM和FIFO等。ISE调用blackbox时,在Translate过程中容易出现上图错误。摸索了很多天的经验:在生成blackbox(.ngc)文件需要三个关键点:(1)在生成blackbox(.ngc)的过程中,在DesignProperties设置中的Top-LevelSourceType选择NGC/NGO。(2)在SpecificOptions设置中,XilinxSpecificOptions栏,-iobuf的Value值设为空。(3)双击GeneratePost-SynthesisSimulationModel,生成.ngc文件。调用blackbox(.ngc)文件需要7个关键点:(1)制作wrapper文件。每个BlackBox网表都需要有一个与之相对应的HDL文件来注明它的端口。这个HDL只说明BlackBox的端口信息,而不提供具体实现信息。这个只提供端口信息的HDL文件称为Wrapper。Wrapper的名字通常需要与BlackBox网表的名字相同。例如:entityencodeisport(mclk:instd_logic;rstn:instd_logic;ena:instd_logic;dtin:instd_logic_vector(9downto0);dout:outstd_logic_vector(9downto0));endencode;architecturertlofencodeisbeginendrtl;(2)在ISE工程中使用BlackBox时只需要将它的Wrapper添加到工程中。然后像普通的模块一样在其上层声明和例化就可以使用。编制top文件,调用Wrapper,完成模块声明和例化。(3)新建文件夹(IP),将.ngc文件拷贝到IP文件夹下。如果在制作blackbox时调用了IPcores产生的FIFO或RAM,则需要把FIFO或RAM的.ngc也拷贝到IP文件夹下;如果在制作blackbox时调用了IPcores产生的DCM,DCM是没有.ngc文件的,暂且不管。(4)在SynthesisOptions设置中,SynthesisOptions栏,-sd和-vlgincdir的value值选择第(3)步的IP文件夹。(5)在TranslateProperities设置中,TranslateProperties栏,-sd的value值选择第(3)步的IP文件夹。(6)blackbox不支持BehavioralSimulation,所以双击GeneratePost-TranslateSimulationModel,准备Post-Translate仿真。(7)接下来就可以添加testbench进行Post-Translate仿真了。TB-Top-Wrapper-.ngc