EDK的定制IP设计.docx
《EDK的定制IP设计.docx》由会员分享,可在线阅读,更多相关《EDK的定制IP设计.docx(28页珍藏版)》请在冰豆网上搜索。
![EDK的定制IP设计.docx](https://file1.bdocx.com/fileroot1/2022-12/17/0e9422d0-b311-49de-8354-5afbe237ea65/0e9422d0-b311-49de-8354-5afbe237ea651.gif)
EDK的定制IP设计
基于EDK的定制IP设计
--基于PLB总线定制IP
在XPS中,不仅仅可以加载已经存在的IPCore,同样可以自己建立自己的IPCore。
XPS也提供了创建和导入外围设备向导(CreateAndImportPeripheral,CIP)可以协助用户完成是定制性IPCore的创建以及导入。
使用CIP来简化用户定制外围设备的创建过程如下:
一、确定设备类型
自定义设备必须和CoreConnect兼容。
CIP利用预定义的IPIF库,可以创建和CoreConnect兼容的4种类型的外围设备:
OPB从属外围设备、OPB主从结合的外围设备、PLB从属外围设备和PLB主从设备结合的外围设备。
二、创建定制IPCore
1、创进入定制IP的创建与输入外设向导
选择菜单中的“Hardware”选项中的“CreateorImportPeripheral”选项来进入与输入设备(CIP)向导:
直接点击“Next”进入PeripheralFlow(设计流程)界面
在“SelectFlow”选项中含有两个选项:
1)、Createtemplatesforanewperipheral(新建一个外设)
2)、Importexistingperipheral(添加已经存在的外设)用于加载建立好的定制IPCore
这里我们选择Createtemplatesforanewperipheral来建立一个新的外设。
在Flowdescription选项中,有关于此选项的一些描述以及Options选项
Options选项是加载已经存在的设置,适用于大批量加载,在这里不使用此选项。
2、选择定制外设的存储位置
点击“Next”选项进入RepositoryorProject(工程存储)界面
此界面含有两个界面:
1)、ToanEDKuserrepository(AnydirectoryoutsideofyourEDKinstallationpath)
2)、ToanXPSproject
选择“ToanEDKuserrepository”,可以将工程存放到EDK安装路径外的任何目录;选择“ToanXPSproject”选项时,是将其添加到XPS工程中。
系统默认的选项为“ToanXPSproject”,在此我们采用系统默认。
3、定义定制IP的名字和版本
本例中的IP名为“led”,版本号是1.00.a。
这里的IPCore名称需要使用小写,下面与相应的版本号设定,可以自己去设定。
(规范的版本管理是一个设计者的良好习惯!
!
!
)
4、选择定制IP所连接的总线
点击“Next”选项,进入Businerface(总线设置界面)界面
此界面含有五种总线模式:
1)、AXI4-Lite:
Sipler,non-burstcontrolregisterstyleinterface
2)、AXI4:
BurstCapable,high-throughputmemorymappedmappedinterface
3)、AXI4-Stream:
Burstcapable,high-throughoutstreaminginterface
4)、ProcessorLocalBus(PLBv4.6)
5)、FaostSimplexLink(FSL)
前三种总线适用于AXI4总线模式,在此不需要。
选取总线模式时,需要根据设备的速度以及设计人员的熟悉程度来决定,因为IP的功能就是实现相应总线时序到用户设备时序的转化。
在这里我们选用PLB总线模式。
5、IPIF服务
点击“Next”选项,进入到IPIF(IPInterface)Services(IPIF服务)界面。
此界面含有两种设计模式:
1)、Slaveserviceandconfiguration(从设备支持)
2)、Masterseviceandconfigurrtion(主设备支持)
其中Slaveserviceandconfiguration(从设备支持)中含有六种用于设置需求的总线特性,有需求,可以选取相关的选项。
6、选择从设备支持
点击“Next”选项,进入到“SlaveInterface”界面
7、软件寄存器设置
点击“Next”进入“UserS\WRegister”界面
Numberofsoftwareaccessibleregister软件寄存器个数,在这里采用了32个。
8、选择寄存器和IP互联(IPIC)
点击“Next”进入“IPInterconnect(IPIC)”界面。
此界面拥有可选择的IPIF模块和用户逻辑之间的接口信号,应用这些链接可以从硬件外设的寄存器输入\输出数据。
XPS会默选择一些信号线,是IPIC所需求的,不能取消;其余的信号线可以根据需求来添加。
当选去某一信号时,在右窗口会有相关功能的描述。
在本例中采用默认设置。
9、选择定制IP的仿真支持
点击“Next”选项,进行下一设置。
此界面中含有IP仿真支持选项,在此不需要,因此没有选取。
10、模板语言选择
点击“Next”选项,进行下一设置(模板语言界面)。
此界面含有三个选项:
1)、Generatestub’user_logic’templateinVeriloginsteadofVHDL:
选择Verilog为模板中用户逻辑设计语言。
2)、GenerateISEandXSTprojcetfilestohelpyoutemplatetheperipheralusingXSTflow:
选择生成ISE工程文件,帮助用户在ISE环境下完成用户逻辑设计,默认这一选项是选中的。
3)、Generatetemplatedriverfilestohelpyouinplementsoftwareinterface:
选择生成软件驱动模板,帮助用户生成必要的驱动软件。
本例中只选取了第一项。
11、完成定制IP的生成
点击“Next”选项,进入到最后的确认界面。
此界面,汇总了定制IPCore的相关的设置,可以浏览一下,然后点击“Finish”选项完成定制IP的相关设置和生成。
12、添加*_top.v文件
完成定制IPCore的生成以及设置后,并不表示此IP是可以使用的,还需要修改以下的相关文件。
打开工程文件中的“pcores”目录,进入“*_v1_00_a”目录,打开“hdl”目录下的“verilog”目录,添加需要的相关“*.v”文件。
13、实现定制IPCore的用户逻辑部分
在XPS中选择:
“Flie”→“Open”
在弹出的对话框中打开“pocore\led_v1_00_a\hdl\verilog\user_logic.v”
如下:
14、修改user_logic.v文件
1)、在user_logic.v中添加用户逻辑的端口。
在user_logic.v端口声明语句中,注释语句“//--ADDUSERPORTSABOVETHISLINE---------------
//--DONOTEDITBELOWTHISLINE------------------”之间为用户总线端口添加区域,将需要的用户端口添加进去,其他的不用去修改。
2)、添加端口方向以及位宽声明:
3)、添加内部端口或者寄存器声明:
4)、调用用户添加的模块以及相关的映射控制:
15、修改*.vhd文件
1)、打开“pocore\led_v1_00_a\hdl\vhdl\led.vhd”然后在“--ADDUSERPORTSABOVETHISLINE------------------
--DONOTEDITBELOWTHISLINE---------------------“之间添加用户端声明。
2)、添加例化user_logic模块端口声明:
3)、添加user_logic端口映射:
16、修改led_v2_1_0.pao文件
1)、打开“pocore\led_v1_00_a\data\led_v2_1_0.pao”
2)、添加“##userlibled_v1_00_aled_topverilog”
17、修改*_v2_1_0.mpd文件
1)、打开“pocore\led_v1_00_a\data\led_v2_1_0.mpd”
2)、添加“##ExternalPORTPORTled="",DIR=O,VEC=[2:
0]”
在完成以上步骤后,在XPS主界面的IPCatalog工程界面的“ProjectLocalPCore”选项前面有一个“+”号,打开后会有“USER”选项,继续打开,可以看到添加的定制IPCore“LED”。
说明已经将定制IPCORE添加到XPS工程中了。
可以像添加XPS提供的IPCore一样使用。
三、添加定制IPCore到XPS工程
1、添加定制IP
选中XPS界面的“IPCatalog\ProjectLocalPcore\USER\LED”IPCore,单击鼠标右键→“addIP”:
弹出的对话框:
点击“Yes”;
可以设定一些相关的数值以及地址,在此选择默认,点击“ok”。
在XPS界面的“systemassenblyview”窗口可以看到新添加的“led_0”的定制IPCore。
2、修改Bus
打开led_0前面的“+”号,在SPLB所对应的“BusName”选项中的下拉菜单中选择“mb_plb”。
3、更改Ports
然后切换到“Ports”界面:
打开led_0前面的“+”号,点击“led”所对应的“ConnectedProtDirection”选项的下拉菜单,选中“ExternalPort”
如果“led_0”前面没有“+”号,请在IPCatalog界面中点击
,刷新!
4、修改Addersses
然后切换到“Addersses”界面:
打开UnmappedAddersses前面的“+”号,点击“led_0”所对应的“Size”选项的下拉菜单,选中“64K”(这个可以任意,按照需求来选)
5、修改*.mhs
然后切换到“project”界面:
打开“MHSFile:
led.mhs”:
如图片的右半部分显示。
“PORTled_0_led_pin=led_0_led,DIR=O,VEC=[2:
0]”
6、ucf约束
在“project”界面:
打开“UCFFile:
data\led.ucf”:
添加:
“Netled_0_led_pin<0>=;Netled_0_led_pin<1>=;Netled_0_led_pin<2>=;”然后将硬件的映射添加上去就可以了。
四、最后:
点击XPS界面左侧的Netlist或者BitStream或者ExportDesign,依次生成Netlist、生成BitStream,ExportDesign(也可直接点击ExportDesign,系统会自动依次执行)