FPGA上的嵌入式系统设计实例 教学课件 赵峰_ 第4章.ppt_第1页
FPGA上的嵌入式系统设计实例 教学课件 赵峰_ 第4章.ppt_第2页
FPGA上的嵌入式系统设计实例 教学课件 赵峰_ 第4章.ppt_第3页
FPGA上的嵌入式系统设计实例 教学课件 赵峰_ 第4章.ppt_第4页
FPGA上的嵌入式系统设计实例 教学课件 赵峰_ 第4章.ppt_第5页
已阅读5页,还剩404页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在线教务辅导网:,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,,第4章 基于MicroBlaze的基础实验,4.1 简单的硬件设计 4.2 在硬件设计中添加IP 4.3 在嵌入式系统中添加自定义IP 4.4 编写基本的应用软件 4.5 添加定时器 4.6 软、硬件系统协同调试,4.1 简单的硬件设计 1. 实验简介 本实验将指导读者使用XILINX Platform Studio(XPS)创建一个基于Spartan-3E Starter Kit的简单处理器系统。,2. 实验目的 本实验的目的如下: (1) 使用Base System Builder(BSB)创建一个XPS工程。 (2) 使用Embedded Development Kit(EDK)上的XILINX IPs创建一个简单的硬件设计。 3. 实验步骤 本次实验的目的是使读者完整地完成一个硬件和软件处理器系统的设计。每个实验都是建立在先前实验的基础上的。图4.1.1表示完整的设计。,图4.1.1 完整设计,这次实验,读者将会使用XPS系统的BSB创建一个处理器系统,该系统由下列处理器IP组成(见图4.1.2,其中深色方框表示): MicroBlaze。 opb_mdm。 OPB总线。 BRAM的LMB BRAM控制器。 BRAM。 串行传输的UART。 LEDs的GPIO。,图4.1.2 处理器IP,本次实验由三个主要步骤组成:使用Base System Builder创建系统,分析已创建工程,生成处理器和硬件IP网表。 本次实验的简要流程如下:,4.1.1 使用Base System Builder创建工程 (1) 运行XILINX Platform Studio(XPS),通过Base System Builder创建一个基于Spartan-3E Starter Kit的工程。选择MicroBlaze处理器,处理器总线时钟频率为50 MHz,片上H/W调试模块作为调试接口。具体步骤如下: 选择“开始”“程序”“Xilinx Platform Studio 8.2i”“Xilinx Platform Studio”(见图4.1.3),运行XPS。,图4.1.3 选择Xilinx Platform Studio,注意:不要选择“Xilinx Platform Studio SDK”,否则会打开Software Development Kit IDE。 显示如图4.1.4所示的对话框,单击“OK”按钮来创建工程(如果单击了“Cance1”,读者可以选择FileNew Project,将会显示类似的对话框)。选择“Base System Builder wizard(recommended)”选项后,将会用BSB向导对话框创建一个新的XPS工程(见图4.1.5)。,图4.1.4 创建新的BSB工程,图4.1.5 使用BSB向导对话框创建新的XPS工程, 定位到c:xupembeddedlabs文件夹,点击创建新的文件夹按钮,命名为lab1(见图4.1.6)。,图4.1.6 指定工程文件夹, 点击“OK”按钮,显示“Welcome to Base System Builder”对话框,选择“I would like to create a new design”选项。 点击“Next”按钮,显示“Select Board”对话框(见图4.1.7),指定设置如下: Board vendor: Xilinx Board name: Spartan-3E Starter Board Board revision: C,图4.1.7 “Select Board”对话框, 点击“Next”按钮,显示 “Select Processor”对话框(见图4.1.8)。,图4.1.8 “Select Processor”对话框, 点击“Next”按钮,显示“Configure MicroBlaze”对话框(见图4.1.9),指定设置如下: Reference clock frequency: 50 MHz(这是一个所使用板上的外部时钟源。该时钟源用于生成处理器和总线时钟,数值与FPGA 或所用开发板有关,因为一定的片上资源(DCMs)要求时钟分频。) Processor-Bus clock frequency: 50 MHz Debug I/F: On-chip H/W debug module Data and Instruction:8 KB Cache setup: No Cache,图4.1.9 “Configure MicroBlaze”对话框,(2) 选择LEDs_8Bit(OPB GPIO,无中断)、RS232_DCE (115200比特率,无配类,无中断)作为外围设备,生成存储测试样本请求和连接图。 在图4.1.9所示对话框中点击“Next”按钮,显示“Configure IO Interfaces”和“Configure Additional IO Interfaces”对话框(见图4.1.10)。确认选中“RS232_DCE”和“LEDs_8Bit”,而其他外围设备没有被选中。,图4.1.10 “Configure IO Interfaces”对话框,注意:每个窗口显示的外围设备的数量取决于显示器的分辨率。 点击“Next”按钮,显示“Configure Additional IO Interfaces”对话框(见图4.1.11),未选中其余设备。 点击“Next”按钮,直到出现“Add Internal Peripherals”对话框,确认没有选中其他设备(见图4.1.12),读者可以点击“Add Peripheral”添加一些外围设备。在下一个实验中,读者将学会给已存在项目添加外围设备的另一种方法。,图4.1.11 “Configure Additional IO Interfaces”对话框,图4.1.12 “Add Internal Peripherals”对话框, 点击“Next”按钮,显示“Software Setup”对话框。选中“Memory test”采样测试,不要选中“Peripheral selftest”(见图4.1.13)。,图4.1.13 “Software Setup”对话框, 点击“Next”按钮,显示“Configure Memory Test Application”对话框(见图4.1.14)。,图4.1.14 “Configure Memory Test Application”对话框, 点击“Next”按钮,显示“System Created”对话框,框内是创建系统的说明(见图4.1.15)。,图4.1.15 “System Created” 对话框, 点击“Generate”按钮弹出一个祝贺对话框,表示BSB已经创建成功。 点击“Finish”按钮结束生成项目后,显示下一步对话框,确认选中“Start Using Platform Studio”并点击“OK”按钮。 此时将显示系统连接图(见图4.1.16),显示系统的外围设备、总线及系统的连接情况。,图4.1.16 显示系统连接,4.1.2 分析已创建工程 点击ProjectGenerate and View Block Diagram,在示意图中显示硬件设计。在System标签下,可以看见已创建的工程文件。使用系统连接图回答以下各问题。 (1) 点击ProjectGenerate and View Block Diagram打开模块图(见图4.1.17),观察已创建设计中的各个组成部分。,图4.1.17 创建系统的模块图,读者在模块图上滚动鼠标滚轮以放大或缩小视图,可以看到MicroBlaze处理器、LMB控制器和连接MicroBlaze处理器的opb总线。 (2) 下拉模块图,观察I/O端口的图示。 (3) 关闭模块图。 (4) 在系统连接图中,点击加号按钮,观察系统展开后详细的连接总线(见图4.1.18)。,图4.1.18 总线连接详情,(5) 点击“Ports”展开视图,如图4.1.19所示。,图4.1.19 Ports Filter,4.1.3 生成处理器和硬件网表 使用PlatGen生成硬件网表,具体步骤如下: (1) 在XPS中,选择HardwareGenerate Netlist或者点击工具栏中的按钮。 (2) 在控制窗口中查看网表的生成过程。 (3) 选择开始程序附件Windows Explorer,打开Windows Explorer。 (4) 浏览Lab1文件夹。其中一些文件夹包含已创建的VHDL网表文件。,4.1.4 生成Bitstream下载测试程序 生成Bitstream文件并下载到开发板上,具体步骤如下: (1) 连接并打开Spartan-3E Starter Kit。 (2) 打开超级终端,设置如图4.1.20所示。,图4.1.20 超级终端设置,(3) 在XPS中,选择Device ConfigurationDownload Bitstream,可以看到超级终端的输出如图4.1.2所示。,图4.1.21 超级终端输出,结论 可以使用XPS中的Base System Builder创建工程。一些文件包括MHS文件表示已创建的处理器系统。系统连接图表示系统硬件,提供了一般关键系统参数信息。在系统定义后,创建处理器系统的网表。之后读者将会学习添加其他核和设计仿真。,答案 1. 列出下列设备的连接总线。 debug_module: mb_opb dlmb_cntlr: dlmb RS232_Uart: mb_opb 2. 列出以下端口的连线。 RS232_Uart OPB_CLK: sys_clk_s RS232_Uart RX: fpga_0_RS232_DCE_RX RS232_Uart TX: fpga_0_RS232_DCE_TX LEDs_4Bit - GPIO: fpga_0_LEDs_8Bit_GPIO_d_out,3. 选择Addresses filter,列出以下设备的地址。 RS232_DCE Base address: 0x40600000 RS232_DCE High address: 0x4060ffff LEDs_8Bit Base address: 0x40000000 LEDs_8Bit High address: 0x4000ffff dlmb_cntlr Base address: 0x00000000 dlmb_cntlr High address: 0x00001fff ilmb_cntlr Base address: 0x00000000 ilmb_cntlr High address: 0x00001fff,4. 列出已创建文件夹。 xps blkdiagram data etc hdl implementation pcores microblaze_0 synthesis TestApp_Memory,完整的MHS文件 # # # # # Created by Base System Builder Wizard for XILINX EDK 8.2 Build EDK_Im.14 # # Fri Sep 01 11:41:45 2006 #,# Target Board: XILINX Spartan-3E Starter Board Rev C # Family: spartan3e # Device: XC3S500e # Package: FG320 # Speed Grade: -4 # # Processor: Microblaze # System clock frequency: 50.000000 MHz # Debug interface: On-Chip HW Debug Module # On Chip Memory : 8 KB # # #,PARAMETER VERSION = 2.1.0 PORT fpga_0_RS232_DCE_RX_pin = fpga_0_RS232_DCE_RX, DIR = I PORT fpga_0_RS232_DCE_TX_pin = fpga_0_RS232_DCE_TX, DIR = O PORT fpga_0_LEDs_8Bit_GPIO_d_out_pin = fpga_0_LEDs_8Bit_GPIO_d_out, DIR = O, VEC = 0:7 PORT sys_clk_pin = dcm_clk_s, DIR = I, SIGIS = CLK, CLK_FREQ = 50000000 PORT sys_rst_pin = sys_rst_s, DIR = I, RST_POLARITY = 1, SIGIS = RST,BEGIN microblaze PARAMETER INSTANCE = microblaze_0 PARAMETER HW_VER = 5.00.a PARAMETER C_USE_FPU = 0 PARAMETER C_DEBUG_ENABLED = 1 PARAMETER C_NUMBER_OF_PC_BRK = 2 BUS_INTERFACE DLMB = dlmb BUS_INTERFACE ILMB = ilmb,BUS_INTERFACE DOPB = mb_opb BUS_INTERFACE IOPB = mb_opb PORT DBG_CAPTURE = DBG_CAPTURE_s PORT DBG_CLK = DBG_CLK_s PORT DBG_REG_EN = DBG_REG_EN_s PORT DBG_TDI = DBG_TDI_s PORT DBG_TDO = DBG_TDO_s PORT DBG_UPDATE = DBG_UPDATE_s END,BEGIN opb_v20 PARAMETER INSTANCE = mb_opb PARAMETER HW_VER = 1.10.c PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT OPB_Clk = sys_clk_s END,BEGIN opb_mdm PARAMETER INSTANCE = debug_module PARAMETER HW_VER = 2.00.a PARAMETER C_MB_DBG_PORTS = 1 PARAMETER C_USE_UART = 1 PARAMETER C_UART_WIDTH = 8 PARAMETER C_BASEADDR = 0x41400000 PARAMETER C_HIGHADDR = 0x4140ffff,BUS_INTERFACE SOPB = mb_opb PORT DBG_CAPTURE_0 = DBG_CAPTURE_s PORT DBG_CLK_0 = DBG_CLK_s PORT DBG_REG_EN_0 = DBG_REG_EN_s PORT DBG_TDI_0 = DBG_TDI_s PORT DBG_TDO_0 = DBG_TDO_s PORT DBG_UPDATE_0 = DBG_UPDATE_s END,BEGIN lmb_v10 PARAMETER INSTANCE = ilmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT LMB_Clk = sys_clk_s END,BEGIN lmb_v10 PARAMETER INSTANCE = dlmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT LMB_Clk = sys_clk_s END,BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = dlmb_cntlr PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00001fff BUS_INTERFACE SLMB = dlmb BUS_INTERFACE BRAM_PORT = dlmb_port END,BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = ilmb_cntlr PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00001fff BUS_INTERFACE SLMB = ilmb BUS_INTERFACE BRAM_PORT = ilmb_port END,BEGIN bram_block PARAMETER INSTANCE = lmb_bram PARAMETER HW_VER = 1.00.a BUS_INTERFACE PORTA = ilmb_port BUS_INTERFACE PORTB = dlmb_port END,BEGIN opb_uartlite PARAMETER INSTANCE = RS232_DCE PARAMETER HW_VER = 1.00.b PARAMETER C_BAUDRATE = 115200 PARAMETER C_DATA_BITS = 8 PARAMETER C_ODD_PARITY = 0 PARAMETER C_USE_PARITY = 0,PARAMETER C_CLK_FREQ = 50000000 PARAMETER C_BASEADDR = 0x40600000 PARAMETER C_HIGHADDR = 0x4060ffff BUS_INTERFACE SOPB = mb_opb PORT RX = fpga_0_RS232_DCE_RX PORT TX = fpga_0_RS232_DCE_TX END,BEGIN opb_gpio PARAMETER INSTANCE = LEDs_8Bit PARAMETER HW_VER = 3.01.b PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_IS_DUAL = 0 PARAMETER C_IS_BIDIR = 0 PARAMETER C_ALL_INPUTS = 0 PARAMETER C_BASEADDR = 0x40000000 PARAMETER C_HIGHADDR = 0x4000ffff BUS_INTERFACE SOPB = mb_opb PORT GPIO_d_out = fpga_0_LEDs_8Bit_GPIO_d_out END,BEGIN dcm_module PARAMETER INSTANCE = dcm_0 PARAMETER HW_VER = 1.00.a PARAMETER C_CLK0_BUF = TRUE PARAMETER C_CLKIN_PERIOD = 20.000000 PARAMETER C_CLK_FEEDBACK = 1X,PARAMETER C_EXT_RESET_HIGH = 1 PORT CLKIN = dcm_clk_s PORT CLK0 = sys_clk_s PORT CLKFB = sys_clk_s PORT RST = net_gnd PORT LOCKED = dcm_0_lock END,4.2 在硬件设计中添加IP 1. 实验简介 本实验将指导读者通过使用XILINX Platform Studio(XPS)向一个已存在的处理器系统中添加额外的IP。读者将学会通过IP目录表添加额外的IP。在实验的最后,通过使用ISE创建设计网表并执行设计。,2. 实验目的 本实验的目的如下: (1) 向硬件设计中添加一个额外的IP。 (2) 通过ISE执行设计。 3. 实验步骤 本实验旨在扩充lab1的硬件设计。实验lab1中已包含MicroBlaze处理器、LMB总线和LMB存储器、一个GPIO以及MDM。lab2将增加另一个GPIO。 本实验使用XPS系统的对话模式以及文本模式来添加IP到一个已存在的处理器系统中(见图4.2.1)。,图4.2.1 完成后的设计,在Spartan-3E启动工具包中将按钮以及DIP开关作为接口对应的OPB GPIP的同时,也可通过分析system.mhs文件去理解微处理器硬件规格的各个部分。 本实验由五个主要步骤组成:添加IP到lab1已经设计好的系统中,扩展硬件系统,分析MHS文件,创建一个系统导航以执行设计,包括添加一个软件应用程序以生成位流并把它下载到硬件上进行功能验证。,本次实验的简要流程如下:,4.2.1 在处理器系统中增加IP 如果我们希望继续在前一次实验中完成的设计,那么可以创建一个lab2文件夹,并将lab1中的文件复制到新文件夹中。执行XILINX Platform Studio(XPS)并打开工程文件,其路径在c:xupembeddedlabslab2(继续已创建的设计)或者c:xupembeddedcompletedlab1,具体步骤如下:,(1) 如果继续在前一次实验中完成的设计,则可以创建一个lab2文件夹,将lab1中的文件复制到新文件夹中。 (2) 通过点击开始程序XILINX Platform Studio 8.2iXILINX Platform Studio执行XPS。 (3) 选择打开工程文件路径c:xupembeddedlabslab2或者c:xupembeddedcompletedlab1。 (4) 选择system.xmp打开工程。,4.2.2 扩展硬件系统 (1) 通过System Assembly View面板添加IP到处理器系统。 XPS提供了两种向已存在的工程中添加外设的方法。第一种方法是通过System Assembly View面板来添加大部分IP并连接它们;第二种方法是手动编辑MHS文件。 在“Xilinx Platform Studio”左边窗口中选择“IP Catalog”标签并点击“General Purpose IO”旁边的加号以查看其可选择的IP核(见图4.2.2)。,图4.2.2 System Assembly View面板, 双击“opb_gpio”核(version 3.01.b)2次,即可添加2个实例到System Assembly View面板中。 通过点击名字列,并输入外设的新名字,重新命名外设实例为“dip”和“push”。完成后,外设表显示如图4.2.3所示。,图4.2.3 添加外设后的外设表, 点击“Bus Interface”旁边的加号,单击“push”和“dip”实例的“Bus Connection”列并选择“mb_opb”作为“SOPB”。完成后,“Bus Connections”如图4.2.4所示。,图4.2.4 显示总线到被添加外设的连接, 选择“Addresses”,读者可以手动设置外设的基址及大小,或让XPS自动生成地址。 点击“Generate Addresses”,在系统中自动为外设产生低位及高位地址。 点击“push”和“dip”实例的“Size”栏并修改其值为“512”。基址和高位地址将改变为如图4.2.5所示。,图4.2.5 外部设备地址,(2) 使用Ports为Push_Buttons_4Bit连接必需的端口。我们可以先设置实例的参数,然后在Push_Buttons_4Bit启动工具箱中生成按钮的外部连接。 在System Assembly View工具栏中选择“Ports”并点击“Push_Buttons_4Bit”旁的加号。 在“push”实例中点击“GPIO_in”端口的Net列,当下拉列表出现时选择“push_GPIO_in”作为网线名(见图4.2.6)。,图4.2.6 向“push”实例中添加“GPIO_in”端口连接, 在“dip”实例中点击“GPIO_in”端口的Net列,当下拉列表出现时选择“dip_GPIO_in”作为网线名(见图4.2.7)。,图4.2.7 向“dip”实例中添加“GPIO_in”端口连接, 双击“push”实例打开配置窗口。注意到外设可以设置为双通道,不过鉴于我们只想使用到一个通道,故将“Enable Channel 2”保持非选中,见图4.2.8。 将“GPIO Data Bus Width”设置为“4”并点击“OK”按钮,并按照图4.2.8进行通用参数的设置。,图4.2.8 GPIO实例的设置参数, 点击“Channel 1”查看通道1中可设置的参数(见图4.2.9)。,图4.2.9 设置配置参数, 将“Channel 1 is Bi-directional”设置为“FALSE”,“Channel 1 is Input Only”设置为“TRUE”,点击“OK”按钮结束。 重复上述步骤对dip实例进行配置。 在System Assembly View中,点击“External Ports”旁的加号,发现按钮端口尚未列入其中,见图4.2.10。,图4.2.10 按钮端口尚未列入“External Ports”中, 在“Net”列上点击“push”和“dip”实例的“GPIO_in”端口,选择“Make External”(见图4.2.11)。,图4.2.11 设置外部端口,注意:端口将在FPGA上连接到外部,现在外部端口连接域中将显示0:3,见图4.2.12。,图4.2.12 按钮如今被添加作为外部端口,(3) 生成库。添加一个已存在的C程序以实现按钮和发光二极管的功能。编译程序。改变工程选项以生成工程系统,将其作为最高层的ISE流。 点击按钮或SoftwareGenerate Libraries and BSPs,在处理器的Applications表中生成库和xparameters.h文件。 在Applications表的Sources栏中,右击TestApp_Memory.c文件以选择Remove。 右击Sources,在c:xupembeddedsource路径下添加lab.c源代码文件,见图4.2.13。,图4.2.13 部分源程序, 点击Project 表下的system.ucf文件并添加图4.2.14所示代码以设置按钮的管脚(c:xupembedded constraints directory路径下的lab2.ucf文件中存在相应代码,可以从中复制)。,图4.2.14 UCF 文件(管脚设置), 在Application表中,双击编译选项设置优化方式为“No Optimization”(见图4.2.15)。 这可以保证代码中的for loop循环(用于软件延迟)不被优化。 保存 .ucf文件,点击 按钮编译源程序,并保证其编译结果没有错误。,图4.2.15 设置优化级别,4.2.3 分析MHS文件 打开system.mhs文件,理解其内容并完成习题。 (1) 双击打开system.mhs文件。 (2) 理解外部接口部分。 (3) 理解整个MHS文件。,4.2.4 验证硬件设计 下载位流至Spartan-3E xc3s500e,具体步骤如下: (1) 双击c:xupembeddedhyperterm目录下的ht115200.ht文件以启动一个超级终端。图4.2.16 位流下载时屏幕的显示 (2) 连接并打开Spartan-3E,启动工具包。 (3) 选择Device ConfigurationUpdate Bitstream,这将花费几分钟在综合、执行以及产生位流的步骤上。 (4) 下载位流。,注意:一旦位流下载完成,超级终端上将显示如图4.2.16所示信息。,图4.2.16 位流下载时屏幕的显示,(5) 通过按钮和拨动开关,超级终端上将作出相应的反应(见图4.2.17)。,图4.2.17 显示在超级终端上的 按钮和开关的状态,结论 XILINX Platform Studio(XPS)可以创建一个MHS文件来代表整个工程系统。用户可以通过使用外设参数以及控制内外接口来配置系统。在定义系统后,用户可以创建工程系统网表。 在以后的实验中,大家将学会在XUP Spartan-3E板上如何添加自定义核、添加软件到工程、对设计进行仿真、调试软件程序以及验证已完成的设计等方法。,答案 1. 填写空白框。 外部接口数量: 7 作为输出的外部接口数量: 2 作为输入的外部接口数量: 5 双向外部接口数量: 0,2. 列出连接到sys_clk_s的实例。 microblaze_0、mb_opb、debug_module、ilmb、dlmb、 dcm_0、LEDs_8Bit、push, dip、RS232_DCE 列出连接到mb_opb总线的设备。 microblaze_0、debug_module、LEDs_8Bit、push、dip、RS232_DCE 3. 画出系统地址图,标出实例名。 读者可以按照Addresses表中的基址对外设进行分类。,完成后的MHS文件 # # # Created by Base System Builder Wizard for XILINX EDK 8.2 Build EDK_Im.14 # Fri Sep 01 11:41:45 2006 # Target Board: XILINX Spartan-3E Starter Board Rev C # Family: spartan3e # Device: XC3S500e # Package: FG320,# Speed Grade: 4 # Processor: Microblaze # System clock frequency: 50.000000 MHz # Debug interface: On-Chip HW Debug Module # On Chip Memory : 8 KB # # #,PARAMETER VERSION = 2.1.0 PORT fpga_0_RS232_DCE_RX_pin = fpga_0_RS232_DCE_RX, DIR = I PORT fpga_0_RS232_DCE_TX_pin = fpga_0_RS232_DCE_TX, DIR = O PORT fpga_0_LEDs_8Bit_GPIO_d_out_pin = fpga_0_LEDs_8Bit_GPIO_d_out, DIR = O, VEC = 0:7,PORT sys_clk_pin = dcm_clk_s, DIR = I, SIGIS = CLK, CLK_FREQ = 50000000 PORT sys_rst_pin = sys_rst_s, DIR = I, RST_POLARITY = 1, SIGIS = RST PORT push_GPIO_in_pin = push_GPIO_in, DIR = I, VEC = 0:3 PORT dip_GPIO_in_pin = dip_GPIO_in, DIR = I, VEC = 0:3,BEGIN microblaze PARAMETER INSTANCE = microblaze_0 PARAMETER HW_VER = 5.00.a PARAMETER C_USE_FPU = 0 PARAMETER C_DEBUG_ENABLED = 1 PARAMETER C_NUMBER_OF_PC_BRK = 2 BUS_INTERFACE DLMB = dlmb BUS_INTERFACE ILMB = ilmb,BUS_INTERFACE DOPB = mb_opb BUS_INTERFACE IOPB = mb_opb PORT DBG_CAPTURE = DBG_CAPTURE_s PORT DBG_CLK = DBG_CLK_s PORT DBG_REG_EN = DBG_REG_EN_s PORT DBG_TDI = DBG_TDI_s PORT DBG_TDO = DBG_TDO_s PORT DBG_UPDATE = DBG_UPDATE_s END,BEGIN opb_v20 PARAMETER INSTANCE = mb_opb PARAMETER HW_VER = 1.10.c PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT OPB_Clk = sys_clk_s END,BEGIN opb_mdm PARAMETER INSTANCE = debug_module PARAMETER HW_VER = 2.00.a PARAMETER C_MB_DBG_PORTS = 1 PARAMETER C_USE_UART = 1 PARAMETER C_UART_WIDTH = 8 PARAMETER C_BASEADDR = 0x41400000 PARAMETER C_HIGHADDR = 0x4140ffff,BUS_INTERFACE SOPB = mb_opb PORT DBG_CAPTURE_0 = DBG_CAPTURE_s PORT DBG_CLK_0 = DBG_CLK_s PORT DBG_REG_EN_0 = DBG_REG_EN_s PORT DBG_TDI_0 = DBG_TDI_s PORT DBG_TDO_0 = DBG_TDO_s PORT DBG_UPDATE_0 = DBG_UPDATE_s END,BEGIN lmb_v10 PARAMETER INSTANCE = ilmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT LMB_Clk = sys_clk_s END,BEGIN lmb_v10 PARAMETER INSTANCE = dlmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT LMB_Clk = sys_clk_s END,BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = dlmb_cntlr PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00001fff BUS_INTERFACE SLMB = dlmb BUS_INTERFACE BRAM_PORT = dlmb_port END,BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = ilmb_cntlr PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00001fff BUS_INTERFACE SLMB = ilmb BUS_INTERFACE BRAM_PORT = ilmb_port END,BEGIN bram_block PARAMETER INSTANCE = lmb_bram PARAMETER HW_VER = 1.00.a BUS_INTERFACE PORTA = ilmb_port BUS_INTERFACE PORTB = dlmb_port END,BEGIN opb_uartlite PARAMETER INSTANCE = RS232_DCE PARAMETER HW_VER = 1.00.b PARAMETER C_BAUDRATE = 115200 PARAMETER C_DATA_BITS = 8 PARAMETER C_ODD_PARITY = 0 PARAMETER C_USE_PARITY = 0,PARAMETER C_CLK_FREQ = 50000000 PARAMETER C_BASEADDR = 0x40600000 PARAMETER C_HIGHADDR = 0x4060ffff BUS_INTERFACE SOPB = mb_opb PORT RX = fpga_0_RS232_DCE_RX PORT TX = fpga_0_RS232_DCE_TX END,BEGIN opb_gpio PARAMETER INSTANCE = LEDs_8Bit PARAMETER HW_VER = 3.01.b PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_IS_DUAL = 0 PARAMETER C_IS_BIDIR = 0 PARAMETER C_ALL_INPUTS = 0 PARAMETER C_BASEADDR = 0x40040000 PARAMETER C_HIGHADDR = 0x4004ffff BUS_INTERFACE SOPB = mb_opb PORT GPIO_d_out = fpga_0_LEDs_8Bit_GPIO_d_out END,BEGIN dcm_module PARAMETER INSTANCE = dcm_0 PARAMETER HW_VER = 1.00.a PARAMETER C_CLK0_BUF = TRUE PARAMETER C_CLKIN_PERIOD = 20.000000 PARAMETER C_CLK_FEEDBACK = 1X PARAMETER C_EXT_RESET_HIGH = 1 PORT CLKIN = dcm_clk_s PORT CLK0 = sys_clk_s PORT CLKFB = sys_clk_s PORT RST = net_gnd PORT LOCKED = dcm_0_lock END,BEGIN opb_gpio PARAMETER INSTANCE = push PARAMETER HW_VER = 3.01.b PARAMETER C_IS_BIDIR = 0 PARAMETER C_ALL_INPUTS = 1 PARAMETER C_GPIO_WIDTH = 4 PARAMETER C_BASEADDR = 0x40000000 PARAMETER C_HIGHADDR = 0x400001FF BUS_INTERFACE SOPB = mb_opb PORT GPIO_in = push_GPIO_in END,BEGIN opb_gpio PARAMETER INSTANCE = dip PARAMETER HW_VER = 3.01.b PARAMETER C_GPIO_WIDTH = 4 PARAMETER C_IS_BIDIR = 0 PARAMETER C_ALL_INPUTS = 1 PARAMETER C_BASEADDR = 0x40020000 PARAMETER C_HIGHADDR = 0x400201FF BUS_INTERFACE SOPB = mb_opb PORT GPIO_in = dip_GPIO_in END,4.3 在嵌入式系统中添加自定义IP 1. 实验简介 本节中的实验将指导如何使用Create and Import Peripheral Wizard在处理器系统中添加一个自定义的OPB外围设备。,2. 实验目的 本实验的目的如下: (1) 创建一个自定义外围设备并将其添加到IP目录(IP Catalog)下。 (2) 将该自定义外围设备添加到设计中。 (3) 修改UCF文件。 (4) 建立Bitstream文件并下载至开发板,检验运行结果。,3. 实验步骤 这个实验是Lab1和Lab2的延续。Lab1包含有MicroBlaze处理器、调试模块、UART总线、控制LED的OPB总线GPIO接口、LMB总线上的BRAM 控制器和BRAM。Lab2在这个基础上加入两个GPIO接口的实例(Instance)。而这个实验通过加入一个控制LCD的实例(Instance)对原来的硬件设计进一步扩展。,在这个实验里,我们将通过使用XILINX Platform Studio(XPS)的Create and Import Peripheral Wizard工具来建立一个用HDL语言描述的用户外设,添加一个该引入外设的实例(Instance),并修改system.ucf文件来为板上LCD模块提供接口(见图4.3.1)。,图4.3.1 完成后的设计,这个实验其中一步是添加一个OPB外设。尽管对于硬件的改变是简单的,但是这个实验阐明了如何通过Create and Import Peripheral Wizard添加用户外设,同时也阐明了如何给一个已有的外设提供OPB总线接口。 实验的大致流程如下:,4.3.1 打开工程 建立文件夹lab3,并将lab2的内容复制到lab3文件夹中,以继续前一个实验中的设计,然后在XPS中打开工程,具体步骤如下: (1) 如果要继续实验2中的设计,则在c:xupembeddedlabs目录下建立lab3文件夹,然后复制lab2中的内容到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论