====== Demo: FPGA Project with Microblaze ====== ---- ===== 1. Create a FPGA Project ===== 参考:[[library:fpga:createiseproject|ISE 14.7 新建工程]] ===== 2. Create a Microblaze Project ===== 参考:[[library:fpga:createmicroblaze|Create a Microblaze Core]] ===== 3. Add Microblaze to FPGA Project ===== ==== 3.1 添加Microblaze ==== 在ISE中打开FPGA工程,在主菜单使用 [Source] [Add Source..] 命令,选择第二节中生成的CPU软核(xxx.xmp). ==== 3.2 调用Microblaze ==== * 修改顶层模块(top.v),加入引用Microblaze的代码及相关端口修改,修改后的代码如下: `timescale 1ns / 1ps module top ( input CLK_IN, input RSTN_IN, output LED, output EXT10, input EXT12, output EXT14, output EXT16 ); // Clock & reset signal remap wire clk; wire rst_n; // Core connections wire uart_tx; wire uart_rx; wire uart_gnd; wire led; assign clk = CLK_IN; assign rst_n = RSTN_IN; assign LED = led; assign EXT16 = uart_gnd; assign EXT14 = uart_tx; assign uart_rx = EXT12; assign EXT10 = clk; (* BOX_TYPE = "user_black_box" *) cpu CPU_i ( .uart_rx ( uart_rx ), .uart_tx ( uart_tx ), .led ( led ), .clk ( clk ), .rst_n ( rst_n ) ); endmodule * 修改约束文件(top.ucf) NET "CLK_IN" LOC = T8; NET "RSTN_IN" LOC = R5; NET "LED" LOC = T13; NET "EXT16" LOC = C9; NET "EXT14" LOC = A9; NET "EXT12" LOC = B10; NET "EXT10" LOC = A10; NET "EXT12" PULLUP; * 编译 ...... Checking platform address map ... Initializing Memory... Running Data2Mem with the following command: data2mem -bm "implementation/cpu_bd" -p xc6slx25ftg256-2 -bt "implementation/cpu.bit" -bd "bootloops/microblaze_0.elf" tag microblaze_0 -o b implementation/download.bit Memory Initialization completed successfully. Process "Generate Programming File" completed successfully ===== 4. 软件设计 ===== ==== 4.1 建立软件工程 ==== 在ISE(ISE Project Navigator)中,选中CPU,[Export Hardware Design To SDK with Bitstream]: 软件workspace设置:**E:\FpgaLab\MicroBlaze\ProcessorForLx25\Demo\SDK\workspace** Running DRC Tcl procedures for OPTION SYSLEVEL_DRC_PROC... Conversion to XML complete. xdsgen -inp cpu.xmp -report SDK\SDK_Export\hw/cpu.html -make_docs_local Release 14.7 - xdsgen EDK_P.20131013 (nt64) Copyright (c) 1995-2013 Xilinx, Inc. All rights reserved. Generated Block Diagram. Rasterizing microblaze_0.jpg..... Rasterizing mb_plb.jpg..... Rasterizing ilmb.jpg..... Rasterizing dlmb.jpg..... Rasterizing dlmb_cntlr.jpg..... Rasterizing ilmb_cntlr.jpg..... Rasterizing lmb_bram.jpg..... Rasterizing RS232.jpg..... Rasterizing LEDS.jpg..... Rasterizing clock_generator_0.jpg..... Rasterizing mdm_0.jpg..... Rasterizing proc_sys_reset_0.jpg..... Rasterizing cpu_blkd.jpg..... Report generated. Report generation completed. Done! ==== 4.2 建立Demo软件项目 ==== 在SDK(Xilinx Software Development Kit)中使用菜单命令 [File] [New] [Application Project],填写项目名称:demo \\ 使用工程模板** [Peripheral Tests]** \\ SDK自动生成项目代码,主函数在 testperiph.c 中的定义。 ==== 4.3 测试软件工程 ==== - 使用Jtag加载配置文件到FPGA - 在SDK中编译并运行程序 - 通过串口接收打印信息 ===== 5. 软件合入FPGA配置文件 ===== 在SDK中,主菜单工具 [Xilinx Tools] -> [Program FPGA],填写参数:\\ Bitstream: system.bit \\ BMM File: system_bd_bmm \\ microblaze_0: demo.elf \\ 15:20:40 INFO : FPGA configured successfully with bitstream "E:/FpgaLab/MicroBlaze/ProcessorForLx25/Demo/SDK/workspace/MicroZed_hw_platform/download.bit"