4.3 加入一个用户IP
在FPGA中创建嵌入式系统的一个重要优点是能够包含用户IP,并把IP与处理器相连接。这部分指导将描述必要的步骤来包含用户IP核。
4.3.1 生成一个用户IP
在XPS中,
1) 选择Hardware → Create or Import Peripheral… 来打开创建和引入外设向导。
2) 点击Next。选择Create templates for a new peripheral。
默认情况下新的外设将被存在project_directory/pcores目录下。这能够使XPS在嵌入式系统设计时找到可用的核。
3) 单击Next。在Create Peripheral - Name and Version对话框中,输入my_ip作为外设的名字。见图 4.3.1。

图 4.3.1 创建自定义外设—外设名和版本号
4) 点击Next。在 Create Peripheral – Bus Interface 对话框中,选择PLB,这是新的外设将要连接的总线。
5) 点击Next。Create Peripheral – IPIF Services 对话框能够在几种service中选择。想了解关于每个service的更多情况,选择More Info。
接下来选择User logic S/W register项。

图 4.3.2 创建自定义外设—IPIF服务
6) 点击 Next。
7) 点击 Next。在Create Peripheral – User S/W Register 对话框中,更改Number of software accessible registers 为4。

图 4.3.3 Create Peripheral - User S/W Register
8) 点击Next。出现Create Peripheral – IP Interconnect (IPIC)。
9) 点击Next。在Create Peripheral – (OPTIONAL) Peripheral Simulation Support对话框中,能够产生总线功能模块Bus Functional Model (BFM) 仿真环境。BFM 仿真不在这次指导范围内。保持无效。
10) 点击Next。
11) 在Create Peripheral – (OPTIONAL) Peripheral Implementation Support 对话框, 让Generate ISE and XST project files to help you implement the peripheral using XST flow无效。
12) 点击Next 然后Finish。
4.3.2 用户IP样本目录
Create or Import Peripheral Wizard 产生一个新的名称为my_ip_v1_00_a的目录。新目录包含以下:

图 4.3.4 用户目录结构
以下是在每个目录下的文件的一些介绍:
4.3.3 修改用户IP实现功能
现在样本已经产生了,user_logic.vhd 必须改成包含用户IP功能。
(1) 打开user_logic.vhd。 现在代码提供了一个能读写4个32位寄存器的样例。这次指导代码将不会被修改。
(2) 关闭user_logic.vhd。
(3) 为了让XPS能加载新的用户IP核到设计中去,pcores 目录必须被重新扫描。这能够通过选择Project → Rescan User Repositories完成。当工程打开时XPS也会自动扫描pcores 目录。
用Platform Studio 修改设计。
(4) 双击System Assembly View 中任意列出的IP能够修改该特定IP。
System Assembly View 有如下过滤器:
IP Catalog 标签显示所有可用于EDK工程的IP。想添加新IP:

图 4.3.5 插入IP
(5) 当总线接口过滤器激活时,按下Connection Filter 按钮并选择所有。
展开my_ip_0实例。
高亮显示slave PLB连接(SPLB)
(6) 选择No Connection下拉菜单并改成my_plb。

图 4.3.6 修改总线连接
(7) 现在选择端口过滤器
点Connection Filter 按钮并选择所有
展开my_ip_0实例
高亮显示PLB_Clk端口
选择Default Connection下拉菜单 并把时钟连接改成sys_clk_s

图 4.3.7 修改端口连接
注意:在System Assembly View的名称栏右击能提供更多的过滤器选择。
(8) 选择地址过滤器来为一个新添的用户IP外设定义一个地址。地址能通过输入Base Address 或者工具来分配地址。在这次指导中,将用工具来分配地址。
将dlmb_cntlr和 ilmb_cntlr 的大小改成8K.
点击Generate Addresses。
当地址表产生成功时在控制窗口会有一个消息显示。设计现在将要用来配置了。

图 4.3.8 为用户IP分配地址