EDK 6.3 MicroBlaze Tutorial Page 1 of 22 EDK 6.3 MicroBlaze Tutorial 声 明 : 本 人 初 次 接 触 Xilinx EDK, 摸 索 了 一 段 时 间, 在 网 上 搜 索 了 一 些 资 料 终 于 试 验 成 功 闲 来 无 事, 想 到 当 初 寻 找 文 档 的 种 种 艰 辛, 并 且 为 了 纪 念 这 一 历 史 时 刻, 本 人 特 撰 写 此 文 档, 与 那 些 想 接 触 EDK 和 刚 刚 接 触 EDK 的 新 手 们 共 享 为 了 达 到 能 够 让 从 没 接 触 过 EDK 的 同 胞 们 在 最 短 的 时 间 内 学 会 使 用 EDK, 本 文 图 文 并 茂, 步 骤 清 楚, 并 附 有 源 代 码 是 一 个 十 足 的 傻 瓜 式 文 档 通 过 阅 读 该 文 档, 我 相 信 每 一 个 人 都 可 以 在 30 分 钟 内 学 会 使 用 EDK, 在 Xilinx FPGA 内 实 现 一 个 MicroBlaze 的 soft core. 另 外, 本 人 所 做 工 作 只 是 将 各 部 分 知 识 收 集 整 理, 不 涉 及 任 何 版 权 问 题 鸣 谢 : 首 先 我 要 感 谢 我 的 女 朋 友 reecho, 是 她 给 我 精 神 上 的 支 持 如 果 这 片 文 档 是 我 的 孩 子 的 话, 那 么 她 无 疑 将 是 这 个 孩 子 的 母 亲 另 外, 还 要 感 谢 pml 同 学, 感 谢 他 帮 助 我 解 决 了 许 多 实 际 的 问 题, 并 提 供 c 的 源 代 码 后 记 : 稍 后, 本 人 还 会 推 出 使 用 Altera 公 司 niosii 实 现 软 核 的 傻 瓜 式 文 档 ( 试 验 已 完 成 ) 敬 请 大 家 关 注 替 朋 友 做 的 广 告 : 出 售 Altera-Xilinx 双 模 下 载 线 推 荐 网 址 : 该 下 载 线 同 时 支 持 altera 系 列 和 xilinx 系 列 FPGA 让 大 家 可 以 同 时 享 受 的 更 多 的 功 能, 一 物 两 用 会 让 你 觉 得 倍 儿 有 面 子!!!! 绝 对 便 宜!!! 绝 对 超 值!!!!^_* 大 家 如 果 谁 想 要 可 以 发 email:ads_678@126.com 有 信 必 复!!! 长 期 有 效!!! http://www.edacn.net/cgi-bin/leoboard.cgi http://www.xilinx-china.com/ http://www.xilinx.com http://www.fpga.com.cn/ 敬 告 : 转 载 请 注 明 出 处! 联 系 方 式 ( 本 人 ): readyaiming@163.com
EDK 6.3 MicroBlaze Tutorial Page 2 of 22 硬 件 配 置 : 1. Microblaze 或 Power PC 支 持 的 Xilinx FPGA 板 一 个 ( 板 上 最 好 有 一 个 LED) 2. JTAG 下 载 线 一 个 ( 推 荐 使 用 本 人 推 荐 的 下 载 线!! 哈 哈 哈 哈 ) 软 件 配 置 : EDK 6.3 或 以 上 版 本 ( 估 计 更 低 版 本 应 该 也 可 以, 不 过 界 面 不 太 一 样 ) 1. 运 行 Xilinx Platform Studio 进 入 到 以 下 界 面, 点 击 OK:
EDK 6.3 MicroBlaze Tutorial Page 3 of 22 2. 点 击 Next
EDK 6.3 MicroBlaze Tutorial Page 4 of 22 3. 选 择 I would like to create a system for custom board. 然 后 点 击 Next
EDK 6.3 MicroBlaze Tutorial Page 5 of 22 4. 选 择 你 的 Xilinx FPGA 板 型 号 如 果 你 的 Xilinx FPGA 芯 片 支 持 Microblaze 和 PowerPC, 你 可 以 选 择 MicroBlaze 点 击 Next
EDK 6.3 MicroBlaze Tutorial Page 6 of 22 5. 输 入 电 路 板 上 晶 振 的 频 率, 例 如 19.2MHz, Local Data and Instruction Memory 选 择 16KB, 其 他 不 变
EDK 6.3 MicroBlaze Tutorial Page 7 of 22 6. 点 击 Add Device,IO Interface Type 选 择 GPIO,Device 选 择 LEDS 点 击 OK
EDK 6.3 MicroBlaze Tutorial Page 8 of 22 7. 在 GPIO Data Width 中 选 择 你 板 子 上 led 的 个 数, 如 果 开 发 板 上 只 有 一 个 led, 选 择 1; 如 果 有 4 个 led, 就 选 择 4 然 后 点 击 Next
EDK 6.3 MicroBlaze Tutorial Page 9 of 22 8. 点 击 Next
EDK 6.3 MicroBlaze Tutorial Page 10 of 22 9. 点 击 Next
EDK 6.3 MicroBlaze Tutorial Page 11 of 22 10. 点 击 Next
EDK 6.3 MicroBlaze Tutorial Page 12 of 22 11. 点 击 finish 12. 这 时, 会 弹 出 一 个 窗 口, 它 的 意 思 是 你 需 要 修 改 两 个 文 件 一 个 是 当 前 目 录 下 data/system.ucf 文 件 ( 这 是 一 个 管 脚 map 文 件, 后 面 我 们 会 提 到 ) 另 外 一 个 是 etc/download.cmd 文 件 ( 这 是 JTAG 下 载 配 置 文 件, 后 面 我 们 会 提 到 ) 点 击 OK
EDK 6.3 MicroBlaze Tutorial Page 13 of 22 插 播 广 告 : 哈 哈 出 售 Altera-Xilinx 双 模 下 载 线 该 下 载 线 同 时 支 持 altera 系 列 和 xilinx 系 列 FPGA 让 大 家 可 以 同 时 享 受 的 更 多 的 功 能, 一 物 两 用 会 让 你 觉 得 倍 儿 有 面 子!!!! 绝 对 便 宜!!! 绝 对 超 值!!!!^_* 大 家 如 果 谁 想 要 可 以 发 email:ads_678@126.com 有 信 必 复!!! 长 期 有 效!!!
EDK 6.3 MicroBlaze Tutorial Page 14 of 22 13. 在 system 下,Project Files 下 双 击 download.cmd 文 件 download.cmd 文 件 如 下 : setmode -bscan setcable -p auto identify assignfile -p 1 -file implementation/download.bit program -p 1 quit 蓝 色 的 字 体 是 download.cmd 的 内 容 其 中 需 要 修 改 的 只 有 红 色 的 1 字 这 个 数 字 代 表 的 是 你 的 FPGA 在 JTAG 链 中 是 第 几 个 如 果 是 第 一 个, 就 改 成 1; 如 果 是 第 二 个, 就 改 成 2 很 简 单 在 我 的 开 发 板 上, 是 第 三 个, 所 以 我 改 成 3
EDK 6.3 MicroBlaze Tutorial Page 15 of 22
EDK 6.3 MicroBlaze Tutorial Page 16 of 22 14. 双 击 system.ucf 文 件 system.ucf 为 FPGA 管 脚 绑 定 文 件 内 容 如 下 ############################################################################ ## This system.ucf file is generated by Base System Builder based on the ## settings in the selected Xilinx Board Definition file. Please add other ## user constraints to this file based on customer design specifications. ############################################################################ Net sys_clk_pin LOC=W13; Net sys_rst_pin LOC=AD4; ## System level constraints Net sys_clk_pin PERIOD = 52089 ps; Net sys_rst_pin TIG; ## FPGA pin constraints Net fpga_0_leds_gpio_d_out_pin<0> LOC=D5; Net fpga_0_leds_gpio_d_out_pin<1> LOC=F7; Net fpga_0_leds_gpio_d_out_pin<2> LOC=E7; Net fpga_0_leds_gpio_d_out_pin<3> LOC=D7; 其 中 主 要 需 要 修 改 的 为 红 色 的 字 体 分 别 对 应 你 的 clock 管 脚,reset 管 脚 ( 一 定 要 有!!!!), 和 led 管 脚 注 意 : 系 统 一 定 要 有 reset 信 号 并 且 要 把 reset 信 号 接 在 地 上, 系 统 才 会 工 作 Reset 信 号 悬 空, 系 统 不 会 工 作! 然 后 保 存
EDK 6.3 MicroBlaze Tutorial Page 17 of 22 15. Tools->Generate Netlist 然 后 就 等 吧, 可 以 去 趟 厕 所
EDK 6.3 MicroBlaze Tutorial Page 18 of 22 16. Tools->Generate Libraries and BSPs
EDK 6.3 MicroBlaze Tutorial Page 19 of 22 17. 双 击 Application 下 sources 下 的 TestApp.c 文 件 编 辑 如 下 : #include "xbasic_types.h" #include "xparameters.h" #include "xutil.h" #include "xgpio_l.h" #define XPAR_GPIO_REG_BASE XPAR_LEDS_BASEADDR #define LED_DELAY 1000000 #define LED_CHANNEL 1 int main() { Xuint32 Data=0xaa; volatile int Delay; int count=0; /* Set the direction for all signals to be inputs except the LED output */ XGpio_mSetDataDirection(XPAR_GPIO_REG_BASE, LED_CHANNEL, 0x0); /* Loop forever blinking the LED */ while (1) { count++; if (count%2==0) { XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL, 0x55); } else
EDK 6.3 MicroBlaze Tutorial Page 20 of 22 { } XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL,0xaa); /* Wait a small amount of time so the LED is visible */ for (Delay = 0; Delay < LED_DELAY; Delay++); if (count%2==0) { XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL, 0x0f); } else { XGpio_mSetDataReg(XPAR_GPIO_REG_BASE, LED_CHANNEL,0xf0); } for (Delay = 0; Delay < LED_DELAY; Delay++); } return 0; } 源 代 码 由 pml 提 供!!!! 再 次 感 谢 pml!!!! 可 能 需 要 适 当 修 改, 不 过 整 体 来 说 不 会 变 多 少
EDK 6.3 MicroBlaze Tutorial Page 21 of 22 18. Tools->Build All User Applications. 等
EDK 6.3 MicroBlaze Tutorial Page 22 of 22 19. 最 后 一 步 :Tools->Download (JTAG 接 好, 电 源 打 开 ) 然 后 狂 等 最 后 你 应 该 可 以 看 见 你 的 led 在 一 闪 一 闪 亮 晶 晶 的 了 注 意 : 系 统 一 定 要 有 reset 信 号 并 且 要 把 reset 信 号 接 在 地 上, 系 统 才 会 工 作 Reset 信 号 悬 空, 系 统 不 会 工 作! 祝 工 作 顺 利!!!! 另 : 由 于 本 人 才 疏 学 浅, 文 中 出 现 纰 漏 则 在 所 难 免 如 有 什 么 错 误 和 问 题, 请 您 联 系 readyaiming@163.com 谢 谢 大 家!