实验五IP核生成工具使用实验1.实验背景知识IP核生成器(COREGenerator)是XilinxFPGA设计中的一个重要设计输入工具,它将原有验证过的设计模块重新利用,也就是一般的IP复用工具。它提供了大量成熟、高效的IP核为用户使用,这些IP核直接用XilinxFPGA底层硬件原语描述。该工具可以生成用户所需的IP核,在实际工程中例化。CoreGenerator可生成的IP核大致分为:基本模块、通信与网络模块、数字信号处理模块、数学功能模块、内存模块、微处理器、控制器与外设模块、标准与协议数据单元到复杂功能样机的众多设计,这些IP核是根据Xilinx的FPGA器件特点和结构而设计的,直接用XilinxFPGA底层硬件原语描述,充分发挥了FPGA的功能。(本实验是在VHDL环境下实现的)2.实验目的(1)学会使用IP核生成工具(COREGenerator);(2)例化组件到工程中。3.实验内容(1)IP核生成工具(COREGenerator)生成双口BlockRAM;(2)将生成的内存例化到工程中;(3)进行行为仿真并在板卡上验证设计;4.实验准备(1)将光盘下03.ExamplesofProgram实验程序目录下的01.ISE9.1文件夹拷贝到E:盘根目录下;(2)将USB下载电缆与计算机及XUPV2Pro板的J8连接好;(3)将RS232串口线一端与计算机连接好,另一端与板卡的J11相连接;(4)启动计算机后,将XUPV2Pro板的电源开关SW11打开到ON上。观察XUPV2Pro板上的+2.5V,+3.3V,+1.5V的电源指示灯是否均亮,若有不亮的,请断开电源,检查电源;(5)打开超级终端。5.实验步骤(1)生成ROM初始化文件1)选择Start→Programs→XilinxISE9.1i→ProjectNavigator,进入ISE的ProjectNavigator环境;。2)选择File→OpenProject,并指向如下目录,选择coregen_lab.ise打开工程;Verilog使用者:E:\labs\verilog\lab5\coregen_labVHDL使用者:E:\labs\vhdl\lab5\coregen_lab3)用文件编辑器打开lab5目录下的Assembler文件包中的program.psm汇编范本文件。在task#3部分写段代码,来完成响应来自按键的信号:LOADs1,ascii_CR;OUTPUTs1,uart_data_tx;LOADs1,ascii_LF;OUTPUTs1,uart_data_tx;;labtask#2;writecodetooutputashort(10characters;orless)messagetotheserialport.loop:INPUTs1,switch_in;OUTPUTs1,leds_out;rs232_echo:INPUTs1,data_present;XORs1,s0;JUMPZ,loop;INPUTs1,uart_data_rx;OUTPUTs1,uart_data_tx;JUMPloop;并使用cd命令指向如下的汇编编译器的目录下,输入kcpsm3program.psm命令,如图所示。完成后汇编编译器生成了一些文件,包括“.COE”的文件,是用来初始化CoreGenerator产生的内存;〉cdE:\01.ISE9.1\xupv2pro\labs\vhdl\lab5\Assembler图5-1操作示意(2)生成BLOCKRAMIP核1)单击工程Sources窗口中的顶层文件loopback.vhd,然后双击Processes窗口中的CreateNewSource,弹出的新资源对话框,选择IP(CoreGen&ArchitectureWizard),在FileName栏输入文件名称program;图5-2操作示意2)单击Next按钮后,在选择CoreType对话框中,展开Memories&StorageElements,展开RAMs&ROMs,选择BlockMemoryGeneratorv2.1,单击Next按钮;图5-3操作示意3)弹出核信息窗口,单击Finish按钮后,弹出COREGenerator™systemGUI对话框,并按照以下要求配置双口存储块核,并单击Next按钮;ComponentName:programMemoryType:DualPortROM图5-4操作示意4)选择以下参数,然后单击Next按钮;ReadWidth:18ReadDepth:1024Enable:AlwaysEnabled图5-5操作示意5)选择以下参数,然后点击Next按钮;ReadWidth:18ReadDepth:1024Enable:AlwaysEnabled图5-6操作示意6)选择LoadInitFile,单击Browse按钮打开lab5目录下的Assembler文件包中program.coe文件,单击next按钮,然后单击finish按钮;图5-7操作示意7)在ISE工程窗口生成以下信息;图5-8信息显示(3)BlockRAM核的例化1)双击工程Sources窗口的loopback.vhd文件,并选择Edit下拉菜单中的LanguageTemplates;图5-9操作示意2)在弹出的LanguageTemplates窗口展开COREGEN,然后展开VHDLComponentInstantiation并选择program,右端则出现相应的模板;图5-10操作示意3)在此模板上拷贝组件声明(从componentprogram到endcomponent;)并粘贴到loopback.vhd代码中的“--InsertcomponentdeclarationfortheMemoryblockhere”注释的下方;4)拷贝组件例化(从your_instance_name:program到最末)并粘贴到loopback.vhd代码中的“--insertcomponentinstantiationfortheMemoryhere”注释的下方,然后按照如下内容,修改添加的例化来完成此组件在本工程的例化;my_program:programportmap(clka=clk50MHz,addra=address,douta=instruction,clkb='0',addrb=0000000000,doutb=open);5)完成后选择File下拉菜单中的Save保存,从工程的Sources窗口会看到program.xco作为一个模块加入到顶层设计文件中;图5-11操作示意(4)进行行为仿真并下载测试1)在工程的Sources窗口,Sourcesfor选择Synthesis/Implementation,选择工程的program.xco,然后在Processes窗口展开COREGEN,并双击ViewVerilog/VHDLFunctionalModel。这个文件所涉及的模块在进行行为仿真的时候是自动从ISE的ProjectNavigator软件的XilinxCoreLib的仿真库中调用的;2)在工程的Sources窗口,Sourcesfor选择BehavioralSimulation,并双击打开testbench.vhd/v测试激励文件。展开Processes窗口中的XilinxISESimulator,右键单击SimulateBehavioralModel,并选择Properties,弹出的对话框将“Propertydisplaylevel”选项选择“Advanced”,“ProtertyName”选项中SimulationRunTime输入50000ns,如下图所示。单击OK按钮;图5-12操作示意3)双击SimulateBehavioralModel,观察生成的波形是否正确,是否与所写测试激励所要的结果相符合;4)在工程的Sources窗口,单击工程顶层文件loopback.vhd/v文件,展开Processes窗口中的GenerateProgrammingfile,然后双击ConfigureDevice(iMPACT)。弹出iMPACT对话框后,选择ConfigureDevicesusingBoundary-Scan(JTAG),然后单击Finish按钮。图5-13操作示意5)当等到弹出AssignNewConfigurationFile对话框后,前两个器件都选择bypass按钮,最后一个器件单击loopback.bit文件选择Open按钮,然后再点击OK按钮后弹出一个警告信息,单击OK按钮后如图:图5-14操作示意6)在iMPACT窗口右键点击xc2vp30,选择Program后弹出ProgrammingProperties窗口单击OK按钮。如果下载成功则出现ProgramSucceeded;图5-15操作示意7)在超级终端窗口则会看到图5-16显示示意