版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上的嵌入式系统设计实例教学第1页/共409页4.1简单的硬件设计
1.实验简介本实验将指导读者使用XILINXPlatformStudio(XPS)创建一个基于Spartan-3EStarterKit的简单处理器系统。第2页/共409页
2.实验目的本实验的目的如下:
(1)使用BaseSystemBuilder(BSB)创建一个XPS工程。
(2)使用EmbeddedDevelopmentKit(EDK)上的XILINXIPs创建一个简单的硬件设计。
3.实验步骤本次实验的目的是使读者完整地完成一个硬件和软件处理器系统的设计。每个实验都是建立在先前实验的基础上的。图4.1.1表示完整的设计。第3页/共409页图4.1.1完整设计第4页/共409页这次实验,读者将会使用XPS系统的BSB创建一个处理器系统,该系统由下列处理器IP组成(见图4.1.2,其中深色方框表示):● MicroBlaze。● opb_mdm。● OPB总线。● BRAM的LMBBRAM控制器。● BRAM。●串行传输的UART。● LEDs的GPIO。第5页/共409页图4.1.2处理器IP第6页/共409页本次实验由三个主要步骤组成:使用BaseSystemBuilder创建系统,分析已创建工程,生成处理器和硬件IP网表。本次实验的简要流程如下:第7页/共409页4.1.1使用BaseSystemBuilder创建工程
(1)运行XILINXPlatformStudio(XPS),通过BaseSystemBuilder创建一个基于Spartan-3EStarterKit的工程。选择MicroBlaze处理器,处理器总线时钟频率为50MHz,片上H/W调试模块作为调试接口。具体步骤如下:①选择“开始”→“程序”→“XilinxPlatformStudio8.2i”→“XilinxPlatformStudio”(见图4.1.3),运行XPS。第8页/共409页图4.1.3选择XilinxPlatformStudio第9页/共409页注意:不要选择“XilinxPlatformStudioSDK”,否则会打开SoftwareDevelopmentKitIDE。②显示如图4.1.4所示的对话框,单击“OK”按钮来创建工程(如果单击了“Cance1”,读者可以选择File→NewProject,将会显示类似的对话框)。选择“BaseSystemBuilderwizard(recommended)”选项后,将会用BSB向导对话框创建一个新的XPS工程(见图4.1.5)。第10页/共409页图4.1.4创建新的BSB工程第11页/共409页图4.1.5使用BSB向导对话框创建新的XPS工程第12页/共409页③定位到c:\xup\embedded\labs文件夹,点击创建新的文件夹按钮,命名为lab1(见图4.1.6)。图4.1.6指定工程文件夹第13页/共409页④点击“OK”按钮,显示“WelcometoBaseSystemBuilder”对话框,选择“Iwouldliketocreateanewdesign”选项。⑤点击“Next”按钮,显示“SelectBoard”对话框(见图4.1.7),指定设置如下:● Boardvendor:Xilinx● Boardname:Spartan-3EStarterBoard● Boardrevision:C第14页/共409页图4.1.7“SelectBoard”对话框第15页/共409页⑥点击“Next”按钮,显示“SelectProcessor”对话框(见图4.1.8)。图4.1.8“SelectProcessor”对话框第16页/共409页⑦点击“Next”按钮,显示“ConfigureMicroBlaze”对话框(见图4.1.9),指定设置如下:● Referenceclockfrequency:50MHz(这是一个所使用板上的外部时钟源。该时钟源用于生成处理器和总线时钟,数值与FPGA或所用开发板有关,因为一定的片上资源(DCMs)要求时钟分频。)● Processor-Busclockfrequency:50MHz● DebugI/F:On-chipH/Wdebugmodule● DataandInstruction:8KB● Cachesetup:NoCache第17页/共409页图4.1.9“ConfigureMicroBlaze”对话框第18页/共409页
(2)选择LEDs_8Bit(OPBGPIO,无中断)、RS232_DCE(115200比特率,无配类,无中断)作为外围设备,生成存储测试样本请求和连接图。①在图4.1.9所示对话框中点击“Next”按钮,显示“ConfigureIOInterfaces”和“ConfigureAdditionalIOInterfaces”对话框(见图4.1.10)。确认选中“RS232_DCE”和“LEDs_8Bit”,而其他外围设备没有被选中。第19页/共409页图4.1.10“ConfigureIOInterfaces”对话框第20页/共409页注意:每个窗口显示的外围设备的数量取决于显示器的分辨率。②点击“Next”按钮,显示“ConfigureAdditionalIOInterfaces”对话框(见图4.1.11),未选中其余设备。③点击“Next”按钮,直到出现“AddInternalPeripherals”对话框,确认没有选中其他设备(见图4.1.12),读者可以点击“AddPeripheral”添加一些外围设备。在下一个实验中,读者将学会给已存在项目添加外围设备的另一种方法。第21页/共409页图4.1.11“ConfigureAdditional
IOInterfaces”对话框第22页/共409页图4.1.12“AddInternalPeripherals”对话框第23页/共409页④点击“Next”按钮,显示“SoftwareSetup”对话框。选中“Memorytest”采样测试,不要选中“Peripheralselftest”(见图4.1.13)。图4.1.13“SoftwareSetup”对话框第24页/共409页⑤点击“Next”按钮,显示“ConfigureMemoryTestApplication”对话框(见图4.1.14)。图4.1.14“ConfigureMemoryTestApplication”对话框第25页/共409页⑥点击“Next”按钮,显示“SystemCreated”对话框,框内是创建系统的说明(见图4.1.15)。图4.1.15“SystemCreated”对话框第26页/共409页⑦点击“Generate”按钮弹出一个祝贺对话框,表示BSB已经创建成功。⑧点击“Finish”按钮结束生成项目后,显示下一步对话框,确认选中“StartUsingPlatformStudio”并点击“OK”按钮。⑨此时将显示系统连接图(见图4.1.16),显示系统的外围设备、总线及系统的连接情况。第27页/共409页图4.1.16显示系统连接第28页/共409页4.1.2分析已创建工程点击Project→GenerateandViewBlockDiagram,在示意图中显示硬件设计。在System标签下,可以看见已创建的工程文件。使用系统连接图回答以下各问题。
(1)点击Project→GenerateandViewBlockDiagram打开模块图(见图4.1.17),观察已创建设计中的各个组成部分。第29页/共409页图4.1.17创建系统的模块图第30页/共409页读者在模块图上滚动鼠标滚轮以放大或缩小视图,可以看到MicroBlaze处理器、LMB控制器和连接MicroBlaze处理器的opb总线。
(2)下拉模块图,观察I/O端口的图示。
(3)关闭模块图。
(4)在系统连接图中,点击加号按钮,观察系统展开后详细的连接总线(见图4.1.18)。第31页/共409页图4.1.18总线连接详情第32页/共409页(5)点击“Ports”展开视图,如图4.1.19所示。第33页/共409页图4.1.19PortsFilter第34页/共409页第35页/共409页4.1.3生成处理器和硬件网表使用PlatGen生成硬件网表,具体步骤如下:
(1)在XPS中,选择Hardware→GenerateNetlist或者点击工具栏中的按钮。
(2)在控制窗口中查看网表的生成过程。
(3)选择开始→程序→附件→WindowsExplorer,打开WindowsExplorer。
(4)浏览Lab1文件夹。其中一些文件夹包含已创建的VHDL网表文件。第36页/共409页4.1.4生成Bitstream下载测试程序生成Bitstream文件并下载到开发板上,具体步骤如下:
(1)连接并打开Spartan-3EStarterKit。
(2)打开超级终端,设置如图4.1.20所示。第37页/共409页图4.1.20超级终端设置第38页/共409页
(3)在XPS中,选择DeviceConfiguration→DownloadBitstream,可以看到超级终端的输出如图4.1.21所示。图4.1.21超级终端输出第39页/共409页结论可以使用XPS中的BaseSystemBuilder创建工程。一些文件——包括MHS文件表示已创建的处理器系统。系统连接图表示系统硬件,提供了一般关键系统参数信息。在系统定义后,创建处理器系统的网表。之后读者将会学习添加其他核和设计仿真。第40页/共409页答案
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第41页/共409页
3.选择Addressesfilter,列出以下设备的地址。
RS232_DCE–Baseaddress: 0x40600000
RS232_DCE–Highaddress: 0x4060ffff
LEDs_8Bit–Baseaddress: 0x40000000
LEDs_8Bit–Highaddress: 0x4000ffff
dlmb_cntlr–Baseaddress: 0x00000000
dlmb_cntlr–Highaddress: 0x00001fff
ilmb_cntlr–Baseaddress: 0x00000000
ilmb_cntlr–Highaddress: 0x00001fff第42页/共409页
4.列出已创建文件夹。●
xps● blkdiagram● data● etc●hdl● implementation● pcores● microblaze_0● synthesis● TestApp_Memory第43页/共409页完整的MHS文件
#
#
#########################################
#
#CreatedbyBaseSystemBuilderWizardforXILINXEDK8.2BuildEDK_Im.14
#
#FriSep0111:41:452006
#第44页/共409页
#TargetBoard:XILINXSpartan-3EStarterBoardRevC
#Family: spartan3e
#Device: XC3S500e
#Package: FG320
#SpeedGrade: -4
#
#Processor:Microblaze
#Systemclockfrequency:50.000000MHz
#Debuginterface:On-ChipHWDebugModule
#OnChipMemory:8KB
#
#########################################第45页/共409页
PARAMETERVERSION=2.1.0
PORTfpga_0_RS232_DCE_RX_pin=
fpga_0_RS232_DCE_RX,DIR=I
PORTfpga_0_RS232_DCE_TX_pin=
fpga_0_RS232_DCE_TX,DIR=O
PORTfpga_0_LEDs_8Bit_GPIO_d_out_pin=fpga_0_LEDs_8Bit_GPIO_d_out,DIR=O,VEC=[0:7]
PORTsys_clk_pin=dcm_clk_s,DIR=I,SIGIS=CLK,
CLK_FREQ=50000000
PORTsys_rst_pin=sys_rst_s,DIR=I,RST_POLARITY=1,SIGIS=RST第46页/共409页
BEGINmicroblaze
PARAMETERINSTANCE=microblaze_0
PARAMETERHW_VER=5.00.a
PARAMETERC_USE_FPU=0
PARAMETERC_DEBUG_ENABLED=1
PARAMETERC_NUMBER_OF_PC_BRK=2
BUS_INTERFACEDLMB=dlmb
BUS_INTERFACEILMB=ilmb第47页/共409页
BUS_INTERFACEDOPB=mb_opb
BUS_INTERFACEIOPB=mb_opb
PORTDBG_CAPTURE=DBG_CAPTURE_s
PORTDBG_CLK=DBG_CLK_s
PORTDBG_REG_EN=DBG_REG_EN_s
PORTDBG_TDI=DBG_TDI_s
PORTDBG_TDO=DBG_TDO_s
PORTDBG_UPDATE=DBG_UPDATE_s
END第48页/共409页
BEGINopb_v20
PARAMETERINSTANCE=mb_opb
PARAMETERHW_VER=1.10.c
PARAMETERC_EXT_RESET_HIGH=1
PORTSYS_Rst=sys_rst_s
PORTOPB_Clk=sys_clk_s
END第49页/共409页
BEGINopb_mdm
PARAMETERINSTANCE=debug_module
PARAMETERHW_VER=2.00.a
PARAMETERC_MB_DBG_PORTS=1
PARAMETERC_USE_UART=1
PARAMETERC_UART_WIDTH=8
PARAMETERC_BASEADDR=0x41400000
PARAMETERC_HIGHADDR=0x4140ffff第50页/共409页
BUS_INTERFACESOPB=mb_opb
PORTDBG_CAPTURE_0=DBG_CAPTURE_s
PORTDBG_CLK_0=DBG_CLK_s
PORTDBG_REG_EN_0=DBG_REG_EN_s
PORTDBG_TDI_0=DBG_TDI_s
PORTDBG_TDO_0=DBG_TDO_s
PORTDBG_UPDATE_0=DBG_UPDATE_s
END第51页/共409页
BEGINlmb_v10
PARAMETERINSTANCE=ilmb
PARAMETERHW_VER=1.00.a
PARAMETERC_EXT_RESET_HIGH=1
PORTSYS_Rst=sys_rst_s
PORTLMB_Clk=sys_clk_s
END第52页/共409页
BEGINlmb_v10
PARAMETERINSTANCE=dlmb
PARAMETERHW_VER=1.00.a
PARAMETERC_EXT_RESET_HIGH=1
PORTSYS_Rst=sys_rst_s
PORTLMB_Clk=sys_clk_s
END第53页/共409页
BEGINlmb_bram_if_cntlr
PARAMETERINSTANCE=dlmb_cntlr
PARAMETERHW_VER=2.00.a
PARAMETERC_BASEADDR=0x00000000
PARAMETERC_HIGHADDR=0x00001fff
BUS_INTERFACESLMB=dlmb
BUS_INTERFACEBRAM_PORT=dlmb_port
END第54页/共409页
BEGINlmb_bram_if_cntlr
PARAMETERINSTANCE=ilmb_cntlr
PARAMETERHW_VER=2.00.a
PARAMETERC_BASEADDR=0x00000000
PARAMETERC_HIGHADDR=0x00001fff
BUS_INTERFACESLMB=ilmb
BUS_INTERFACEBRAM_PORT=ilmb_port
END第55页/共409页
BEGINbram_block
PARAMETERINSTANCE=lmb_bram
PARAMETERHW_VER=1.00.a
BUS_INTERFACEPORTA=ilmb_port
BUS_INTERFACEPORTB=dlmb_port
END第56页/共409页
BEGINopb_uartlite
PARAMETERINSTANCE=RS232_DCE
PARAMETERHW_VER=1.00.b
PARAMETERC_BAUDRATE=115200
PARAMETERC_DATA_BITS=8
PARAMETERC_ODD_PARITY=0
PARAMETERC_USE_PARITY=0第57页/共409页
PARAMETERC_CLK_FREQ=50000000
PARAMETERC_BASEADDR=0x40600000
PARAMETERC_HIGHADDR=0x4060ffff
BUS_INTERFACESOPB=mb_opb
PORTRX=fpga_0_RS232_DCE_RX
PORTTX=fpga_0_RS232_DCE_TX
END第58页/共409页
BEGINopb_gpio
PARAMETERINSTANCE=LEDs_8Bit
PARAMETERHW_VER=3.01.b
PARAMETERC_GPIO_WIDTH=8
PARAMETERC_IS_DUAL=0
PARAMETERC_IS_BIDIR=0
PARAMETERC_ALL_INPUTS=0
PARAMETERC_BASEADDR=0x40000000
PARAMETERC_HIGHADDR=0x4000ffff
BUS_INTERFACESOPB=mb_opb
PORTGPIO_d_out=fpga_0_LEDs_8Bit_GPIO_d_out
END第59页/共409页
BEGINdcm_module
PARAMETERINSTANCE=dcm_0
PARAMETERHW_VER=1.00.a
PARAMETERC_CLK0_BUF=TRUE
PARAMETERC_CLKIN_PERIOD=20.000000
PARAMETERC_CLK_FEEDBACK=1X第60页/共409页
PARAMETERC_EXT_RESET_HIGH=1
PORTCLKIN=dcm_clk_s
PORTCLK0=sys_clk_s
PORTCLKFB=sys_clk_s
PORTRST=net_gnd
PORTLOCKED=dcm_0_lock
END第61页/共409页4.2在硬件设计中添加IP
1.实验简介本实验将指导读者通过使用XILINXPlatformStudio(XPS)向一个已存在的处理器系统中添加额外的IP。读者将学会通过IP目录表添加额外的IP。在实验的最后,通过使用ISE创建设计网表并执行设计。第62页/共409页
2.实验目的本实验的目的如下:
(1)向硬件设计中添加一个额外的IP。
(2)通过ISE执行设计。
3.实验步骤本实验旨在扩充lab1的硬件设计。实验lab1中已包含MicroBlaze处理器、LMB总线和LMB存储器、一个GPIO以及MDM。lab2将增加另一个GPIO。本实验使用XPS系统的对话模式以及文本模式来添加IP到一个已存在的处理器系统中(见图4.2.1)。第63页/共409页图4.2.1完成后的设计第64页/共409页在Spartan-3E启动工具包中将按钮以及DIP开关作为接口对应的OPBGPIP的同时,也可通过分析system.mhs文件去理解微处理器硬件规格的各个部分。本实验由五个主要步骤组成:添加IP到lab1已经设计好的系统中,扩展硬件系统,分析MHS文件,创建一个系统导航以执行设计,包括添加一个软件应用程序以生成位流并把它下载到硬件上进行功能验证。第65页/共409页本次实验的简要流程如下:第66页/共409页4.2.1在处理器系统中增加IP如果我们希望继续在前一次实验中完成的设计,那么可以创建一个lab2文件夹,并将lab1中的文件复制到新文件夹中。执行XILINXPlatformStudio(XPS)并打开工程文件,其路径在c:\xup\embedded\labs\lab2(继续已创建的设计)或者c:\xup\embedded\completed\lab1,具体步骤如下:第67页/共409页
(1)如果继续在前一次实验中完成的设计,则可以创建一个lab2文件夹,将lab1中的文件复制到新文件夹中。
(2)通过点击开始→程序→XILINXPlatformStudio8.2i→XILINXPlatformStudio执行XPS。
(3)选择打开工程文件路径c:\xup\embedded\labs\lab2或者c:\xup\embedded\completed\lab1。
(4)选择system.xmp打开工程。第68页/共409页4.2.2扩展硬件系统
(1)通过SystemAssemblyView面板添加IP到处理器系统。
XPS提供了两种向已存在的工程中添加外设的方法。第一种方法是通过SystemAssemblyView面板来添加大部分IP并连接它们;第二种方法是手动编辑MHS文件。①在“XilinxPlatformStudio”左边窗口中选择“IPCatalog”标签并点击“GeneralPurposeIO”旁边的加号以查看其可选择的IP核(见图4.2.2)。第69页/共409页图4.2.2SystemAssemblyView面板第70页/共409页②双击“opb_gpio”核(version3.01.b)2次,即可添加2个实例到SystemAssemblyView面板中。③通过点击名字列,并输入外设的新名字,重新命名外设实例为“dip”和“push”。完成后,外设表显示如图4.2.3所示。第71页/共409页图4.2.3添加外设后的外设表第72页/共409页④点击“BusInterface”旁边的加号,单击“push”和“dip”实例的“BusConnection”列并选择“mb_opb”作为“SOPB”。完成后,“BusConnections”如图4.2.4所示。第73页/共409页图4.2.4显示总线到被添加外设的连接第74页/共409页⑤选择“Addresses”,读者可以手动设置外设的基址及大小,或让XPS自动生成地址。⑥点击“GenerateAddresses”,在系统中自动为外设产生低位及高位地址。⑦点击“push”和“dip”实例的“Size”栏并修改其值为“512”。基址和高位地址将改变为如图4.2.5所示。第75页/共409页图4.2.5外部设备地址第76页/共409页
(2)使用Ports为Push_Buttons_4Bit连接必需的端口。我们可以先设置实例的参数,然后在Push_Buttons_4Bit启动工具箱中生成按钮的外部连接。①在SystemAssemblyView工具栏中选择“Ports”并点击“Push_Buttons_4Bit”旁的加号。②在“push”实例中点击“GPIO_in”端口的Net列,当下拉列表出现时选择“push_GPIO_in”作为网线名(见图4.2.6)。第77页/共409页图4.2.6向“push”实例中添加“GPIO_in”端口连接第78页/共409页③在“dip”实例中点击“GPIO_in”端口的Net列,当下拉列表出现时选择“dip_GPIO_in”作为网线名(见图4.2.7)。图4.2.7向“dip”实例中添加“GPIO_in”端口连接第79页/共409页④双击“push”实例打开配置窗口。注意到外设可以设置为双通道,不过鉴于我们只想使用到一个通道,故将“EnableChannel2”保持非选中,见图4.2.8。⑤将“GPIODataBusWidth”设置为“4”并点击“OK”按钮,并按照图4.2.8进行通用参数的设置。第80页/共409页图4.2.8GPIO实例的设置参数第81页/共409页⑥点击“Channel1”查看通道1中可设置的参数(见图4.2.9)。图4.2.9设置配置参数第82页/共409页⑦将“Channel1isBi-directional”设置为“FALSE”,“Channel1isInputOnly”设置为“TRUE”,点击“OK”按钮结束。⑧重复上述步骤对dip实例进行配置。⑨在SystemAssemblyView中,点击“ExternalPorts”旁的加号,发现按钮端口尚未列入其中,见图4.2.10。第83页/共409页图4.2.10按钮端口尚未列入“ExternalPorts”中第84页/共409页⑩在“Net”列上点击“push”和“dip”实例的“GPIO_in”端口,选择“MakeExternal”(见图4.2.11)。图4.2.11设置外部端口第85页/共409页注意:端口将在FPGA上连接到外部,现在外部端口连接域中将显示[0:3],见图4.2.12。图4.2.12按钮如今被添加作为外部端口第86页/共409页
(3)生成库。添加一个已存在的C程序以实现按钮和发光二极管的功能。编译程序。改变工程选项以生成工程系统,将其作为最高层的ISE流。①点击按钮或Software→GenerateLibrariesandBSPs,在处理器的Applications表中生成库和xparameters.h文件。②在Applications表的Sources栏中,右击TestApp_Memory.c文件以选择Remove。③右击Sources,在c:\xup\embedded\source路径下添加lab.c源代码文件,见图4.2.13。第87页/共409页图4.2.13部分源程序第88页/共409页④点击Project表下的system.ucf文件并添加图4.2.14所示代码以设置按钮的管脚(c:\xup\embedded\constraintsdirectory路径下的lab2.ucf文件中存在相应代码,可以从中复制)。第89页/共409页图4.2.14UCF文件(管脚设置)第90页/共409页⑤在Application表中,双击编译选项设置优化方式为“NoOptimization”(见图4.2.15)。这可以保证代码中的forloop循环(用于软件延迟)不被优化。⑥保存 .ucf文件,点击按钮编译源程序,并保证其编译结果没有错误。第91页/共409页图4.2.15设置优化级别第92页/共409页4.2.3分析MHS文件打开system.mhs文件,理解其内容并完成习题。
(1)双击打开system.mhs文件。
(2)理解外部接口部分。
(3)理解整个MHS文件。第93页/共409页第94页/共409页第95页/共409页4.2.4验证硬件设计 下载位流至Spartan-3Exc3s500e,具体步骤如下:
(1)双击c:xup\embedded\hyperterm目录下的ht115200.ht文件以启动一个超级终端。图4.2.16位流下载时屏幕的显示
(2)连接并打开Spartan-3E,启动工具包。
(3)选择DeviceConfiguration→UpdateBitstream,这将花费几分钟在综合、执行以及产生位流的步骤上。
(4)下载位流。第96页/共409页注意:一旦位流下载完成,超级终端上将显示如图4.2.16所示信息。图4.2.16位流下载时屏幕的显示第97页/共409页
(5)通过按钮和拨动开关,超级终端上将作出相应的反应(见图4.2.17)。图4.2.17显示在超级终端上的按钮和开关的状态第98页/共409页结论
XILINXPlatformStudio(XPS)可以创建一个MHS文件来代表整个工程系统。用户可以通过使用外设参数以及控制内外接口来配置系统。在定义系统后,用户可以创建工程系统网表。在以后的实验中,大家将学会在XUPSpartan-3E板上如何添加自定义核、添加软件到工程、对设计进行仿真、调试软件程序以及验证已完成的设计等方法。第99页/共409页答案
1.填写空白框。外部接口数量:
7
作为输出的外部接口数量: 2
作为输入的外部接口数量: 5
双向外部接口数量:
0 第100页/共409页
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表中的基址对外设进行分类。第101页/共409页第102页/共409页完成后的MHS文件
#
###########################################
#CreatedbyBaseSystemBuilderWizardforXILINXEDK8.2BuildEDK_Im.14
#FriSep0111:41:452006
#TargetBoard:XILINXSpartan-3EStarterBoardRevC
#Family: spartan3e
#Device: XC3S500e
#Package: FG320第103页/共409页
#SpeedGrade: -4
#Processor:Microblaze
#Systemclockfrequency:50.000000MHz
#Debuginterface:On-ChipHWDebugModule
#OnChipMemory:8KB
#
############################################
###第104页/共409页
PARAMETERVERSION=2.1.0
PORTfpga_0_RS232_DCE_RX_pin=fpga_0_RS232_DCE_RX,DIR=I
PORTfpga_0_RS232_DCE_TX_pin=fpga_0_RS232_DCE_TX,DIR=O
PORTfpga_0_LEDs_8Bit_GPIO_d_out_pin=fpga_0_LEDs_8Bit_GPIO_d_out,DIR=O,VEC=[0:7]第105页/共409页
PORTsys_clk_pin=dcm_clk_s,DIR=I,SIGIS=CLK,CLK_FREQ=50000000
PORTsys_rst_pin=sys_rst_s,DIR=I,RST_POLARITY=1,SIGIS=RST
PORTpush_GPIO_in_pin=push_GPIO_in,DIR=I,VEC=[0:3]
PORTdip_GPIO_in_pin=dip_GPIO_in,DIR=I,VEC=[0:3]第106页/共409页
BEGINmicroblaze
PARAMETERINSTANCE=microblaze_0
PARAMETERHW_VER=5.00.a
PARAMETERC_USE_FPU=0
PARAMETERC_DEBUG_ENABLED=1
PARAMETERC_NUMBER_OF_PC_BRK=2
BUS_INTERFACEDLMB=dlmb
BUS_INTERFACEILMB=ilmb第107页/共409页
BUS_INTERFACEDOPB=mb_opb
BUS_INTERFACEIOPB=mb_opb
PORTDBG_CAPTURE=DBG_CAPTURE_s
PORTDBG_CLK=DBG_CLK_s
PORTDBG_REG_EN=DBG_REG_EN_s
PORTDBG_TDI=DBG_TDI_s
PORTDBG_TDO=DBG_TDO_s
PORTDBG_UPDATE=DBG_UPDATE_s
END第108页/共409页
BEGINopb_v20
PARAMETERINSTANCE=mb_opb
PARAMETERHW_VER=1.10.c
PARAMETERC_EXT_RESET_HIGH=1
PORTSYS_Rst=sys_rst_s
PORTOPB_Clk=sys_clk_s
END第109页/共409页
BEGINopb_mdm
PARAMETERINSTANCE=debug_module
PARAMETERHW_VER=2.00.a
PARAMETERC_MB_DBG_PORTS=1
PARAMETERC_USE_UART=1
PARAMETERC_UART_WIDTH=8
PARAMETERC_BASEADDR=0x41400000
PARAMETERC_HIGHADDR=0x4140ffff第110页/共409页
BUS_INTERFACESOPB=mb_opb
PORTDBG_CAPTURE_0=DBG_CAPTURE_s
PORTDBG_CLK_0=DBG_CLK_s
PORTDBG_REG_EN_0=DBG_REG_EN_s
PORTDBG_TDI_0=DBG_TDI_s
PORTDBG_TDO_0=DBG_TDO_s
PORTDBG_UPDATE_0=DBG_UPDATE_s
END第111页/共409页
BEGINlmb_v10
PARAMETERINSTANCE=ilmb
PARAMETERHW_VER=1.00.a
PARAMETERC_EXT_RESET_HIGH=1
PORTSYS_Rst=sys_rst_s
PORTLMB_Clk=sys_clk_s
END第112页/共409页
BEGINlmb_v10
PARAMETERINSTANCE=dlmb
PARAMETERHW_VER=1.00.a
PARAMETERC_EXT_RESET_HIGH=1
PORTSYS_Rst=sys_rst_s
PORTLMB_Clk=sys_clk_s
END第113页/共409页
BEGINlmb_bram_if_cntlr
PARAMETERINSTANCE=dlmb_cntlr
PARAMETERHW_VER=2.00.a
PARAMETERC_BASEADDR=0x00000000
PARAMETERC_HIGHADDR=0x00001fff
BUS_INTERFACESLMB=dlmb
BUS_INTERFACEBRAM_PORT=dlmb_port
END第114页/共409页
BEGINlmb_bram_if_cntlr
PARAMETERINSTANCE=ilmb_cntlr
PARAMETERHW_VER=2.00.a
PARAMETERC_BASEADDR=0x00000000
PARAMETERC_HIGHADDR=0x00001fff
BUS_INTERFACESLMB=ilmb
BUS_INTERFACEBRAM_PORT=ilmb_port
END第115页/共409页
BEGINbram_block
PARAMETERINSTANCE=lmb_bram
PARAMETERHW_VER=1.00.a
BUS_INTERFACEPORTA=ilmb_port
BUS_INTERFACEPORTB=dlmb_port
END第116页/共409页
BEGINopb_uartlite
PARAMETERINSTANCE=RS232_DCE
PARAMETERHW_VER=1.00.b
PARAMETERC_BAUDRATE=115200
PARAMETERC_DATA_BITS=8
PARAMETERC_ODD_PARITY=0
PARAMETERC_USE_PARITY=0第117页/共409页
PARAMETERC_CLK_FREQ=50000000
PARAMETERC_BASEADDR=0x40600000
PARAMETERC_HIGHADDR=0x4060ffff
BUS_INTERFACESOPB=mb_opb
PORTRX=fpga_0_RS232_DCE_RX
PORTTX=fpga_0_RS232_DCE_TX
END第118页/共409页
BEGINopb_gpio
PARAMETERINSTANCE=LEDs_8Bit
PARAMETERHW_VER=3.01.b
PARAMETERC_GPIO_WIDTH=8
PARAMETERC_IS_DUAL=0
PARAMETERC_IS_BIDIR=0
PARAMETERC_ALL_INPUTS=0
PARAMETERC_BASEADDR=0x40040000
PARAMETERC_HIGHADDR=0x4004ffff
BUS_INTERFACESOPB=mb_opb
PORTGPIO_d_out=fpga_0_LEDs_8Bit_GPIO_d_out
END第119页/共409页
BEGINdcm_module
PARAMETERINSTANCE=dcm_0
PARAMETERHW_VER=1.00.a
PARAMETERC_CLK0_BUF=TRUE
PARAMETERC_CLKIN_PERIOD=20.000000
PARAMETERC_CLK_FEEDBACK=1X
PARAMETERC_EXT_RESET_HIGH=1
PORTCLKIN=dcm_clk_s
PORTCLK0=sys_clk_s
PORTCLKFB=sys_clk_s
PORTRST=net_gnd
PORTLOCKED=dcm_0_lock
END第120页/共409页
BEGINopb_gpio
PARAMETERINSTANCE=push
PARAMETERHW_VER=3.01.b
PARAMETERC_IS_BIDIR=0
PARAMETERC_ALL_INPUTS=1
PARAMETERC_GPIO_WIDTH=4
PARAMETERC_BASEADDR=0x40000000
PARAMETERC_HIGHADDR=0x400001FF
BUS_INTERFACESOPB=mb_opb
PORTGPIO_in=push_GPIO_in
END第121页/共409页
BEGINopb_gpio
PARAMETERINSTANCE=dip
PARAMETERHW_VER=3.01.b
PARAMETERC_GPIO_WIDTH=4
PARAMETERC_IS_BIDIR=0
PARAMETERC_ALL_INPUTS=1
PARAMETERC_BASEADDR=0x40020000
PARAMETERC_HIGHADDR=0x400201FF
BUS_INTERFACESOPB=mb_opb
PORTGPIO_in=dip_GPIO_in
END第122页/共409页4.3在嵌入式系统中添加自定义IP
1.实验简介本节中的实验将指导如何使用CreateandImportPeripheralWizard在处理器系统中添加一个自定义的OPB外围设备。第123页/共409页
2.实验目的本实验的目的如下:
(1)创建一个自定义外围设备并将其添加到IP目录(IPCatalog)下。
(2)将该自定义外围设备添加到设计中。
(3)修改UCF文件。
(4)建立Bitstream文件并下载至开发板,检验运行结果。第124页/共409页
3.实验步骤这个实验是Lab1和Lab2的延续。Lab1包含有MicroBlaze处理器、调试模块、UART总线、控制LED的OPB总线GPIO接口、LMB总线上的BRAM控制器和BRAM。Lab2在这个基础上加入两个GPIO接口的实例(Instance)。而这个实验通过加入一个控制LCD的实例(Instance)对原来的硬件设计进一步扩展。第125页/共409页在这个实验里,我们将通过使用XILINXPlatformStudio(XPS)的CreateandImportPeripheralWizard工具来建立一个用HDL语言描述的用户外设,添加一个该引入外设的实例(Instance),并修改system.ucf文件来为板上LCD模块提供接口(见图4.3.1)。第126页/共409页图4.3.1完成后的设计第127页/共409页这个实验其中一步是添加一个OPB外设。尽管对于硬件的改变是简单的,但是这个实验阐明了如何通过CreateandImportPeripheralWizard添加用户外设,同时也阐明了如何给一个已有的外设提供OPB总线接口。实验的大致流程如下:第128页/共409页4.3.1打开工程建立文件夹lab3,并将lab2的内容复制到lab3文件夹中,以继续前一个实验中的设计,然后在XPS中打开工程,具体步骤如下:
(1)如果要继续实验2中的设计,则在c:\xup\embedded\labs目录下建立lab3文件夹,然后复制lab2中的内容到lab3中。
(2)在XPS中打开工程。第129页/共409页4.3.2用向导建立一个用户自定义OPB外设
(1)在XPS中,采用Create/ImportPeripheralWizard的Create模式,建立HDL模板,再向OPB总线上添加LCD控制器,具体步骤如下:①在XPS中,选择Hardware→CreateorImportPeripheral来启动Wizard。②点击“Next”按钮继续,接下来会出现图4.3.2所示的“CreateandImportPeripheralWizard”对话框中的流程选择。第130页/共409页图4.3.2“CreateandImportPeripheralWizard”对话框第131页/共409页③在“SelectFlow”选择面板中,选择“Createtemplatesforanewperipheral”,然后点击“Next”按钮,系统会在“RepositoryorProject”对话框中自动选择“ToanXPSproject”选项,对应地指定工程所在的路径,见图4.3.3。第132页/共409页图4.3.3“RepositoryorProject”对话框第133页/共409页④点击“Next”按钮后在“NameandVersion”对话框中输入名称“lcd_ip”,保持默认的版本号“1.00.a”,之后点击“Next”按钮(见图4.3.4)。第134页/共409页图4.3.4输入核的名称和版本号第135页/共409页⑤在总线接口选择面板,选择“On-chipPeripheralBus(OPB)”,点击“Next”按钮(见图4.3.5)。图4.3.5选择OPB总线第136页/共409页
(2)继续使用向导,选择UserlogicS/Wregistersupport;选择只有一个32位的软件可控的寄存器;建立模板驱动文件;选择路径为c:\up\embedded\labs\lab3。在整个步骤的最后回答相关的问题。①在“IPIFServices”对话框中选择“UserlogicS/Wregistersupport”(见图4.3.6)后点击“Next”按钮。第137页/共409页图4.3.6“IPIFServices”对话框第138页/共409页②在“UserS/WRegister”对话框中选择“Disablepostedwrite…”选项(见图4.3.7)并点击“Next”按钮,接受默认的寄存器值参数。第139页/共409页图4.3.7“UserS/WRegisters”对话框第140页/共409页③浏览“IPInterconnect(IPIC)”对话框(见图4.3.8),上面显示了默认的IPIC信号,这些是在之前的步骤中选择的,是用户逻辑可以使用的。第141页/共409页图4.3.8“IPInterconnect(IPIC)”对话框第142页/共409页④在“(OPTIONAL)PeripheralSimulationSupport”对话框中,保持“GenerateBFMsimulationplatformforModelSim-SEorModelSim-PE”(见图4.3.9)未被选中,点击“Next”按钮。第143页/共409页图4.3.9“(OPTIONAL)PeripheralSimulationSupport”对话框第144页/共409页⑤在“(OPTIONAL)PeripheralImplementationOptions”对话框中,保持“Generatetemplatedriverfilestohelpyoutoimplementsoftwareinterface”被选中,保持其他的选项未被选中,见图4.3.10。第145页/共409页图4.3.10“(OPTIONAL)PeripheralImplementationOptions”对话框第146页/共409页⑥点击“Next”按钮,将会看到信息总结面板(见图4.3.11)。图4.3.11信息总结面板第147页/共409页⑦点击“Finish”按钮关闭向导。⑧点击XPS中的“IPCatalog”标签,可以看到“lcd_ip”已经加入到了工程IP库中(ProjectRepository),见图4.3.12。图4.3.12“IPCatalog”更新后的目录第148页/共409页我们刚刚添加的外设已经加入到了可用核的列表。用Windows浏览器打开工程目录,确保图4.3.13所示的文件结构已经由“CreateandImportPeripheralWizard”建立起来了。第149页/共409页图4.3.13“CreateandImportPeripheralWizard”建立的文件结构第150页/共409页
(3)在MPD文件中加入一个名为“lcd”的端口,作为LCD外设控制器。①打开目录 \pcores\lcd_ip_v1_00_a\data。②用文本编辑器(比如写字板)打开lcd_ip_v2_1_0.mpd文件。③如图4.3.14所示,添加以下代码到“Ports”部分之后、“OPB_Clk”之前:
PORTlcd="",DIR=O,VEC=[0:6]。第151页/共409页图4.3.14为LCD控制器外设更新MPDfile第152页/共409页④保存文件,关闭文件。
(4)用文本编辑器打开目录c:\xup\embedded\labs\lab3\pcores\lcd_ip_v1_00_a\hdl\vhdl下的文件lcd_ip.vhd和user_logic.vhd,在这两个文件中添加必要的声明和逻辑。①打开\pcores\lcd_ip_v1_00_a\hdl\vhdl目录。②选择lcd_ip.vhd文件,并用文本编辑器打开它。③在标注“USERportsaddedhere”后面添加7位的用户端口lcd(见图4.3.15)。第153页/共409页图4.3.15添加用户端口lcd第154页/共409页④搜索下一个“-USER”,添加端点映射声明(见图4.3.16),然后保存文件,关闭文件。图4.3.16添加端口映射声明第155页/共409页⑤在vhdl文件夹下打开文件user_logic.vhd,在USERPorts区域添加端点lcd的定义,见图4.3.17。图4.3.17添加端点lcd的定义第156页/共409页⑥搜索下一个“-USER”,并为用户逻辑定义内部信号,见图4.3.18。图4.3.18UserLogic内部信号的定义第157页/共409页⑦搜索“-USERlogicimplementation”,添加如图4.3.19所示的代码。图4.3.19添加代码第158页/共409页4.3.3将自定义外设添加到系统中
(1)使用SystemAssemblyView添加lcd_ip实例(Instance),并将实例挂接到OPB总线上,再为它分配地址序列,连接lcd数据端点。①在IPCatalog中,选择lcd_ip核并拖动到SystemAssemblyView对话框中。②确保SystemAssemblyView的“Filters”选项框选择的是“BusInterface”,点击总线连接图表中的圆环来建立总线连接(见图4.3.20),就会看到实心的圆环,表示总线连接已经建立。第159页/共409页图4.3.20建立总线连接第160页/共409页③在“Filters”选项框中选择“Ports”,再点击“lcd_ip_0”实例(见图4.3.20),点击其下端点“lcd”的下拉选项框,选择“lcd_ip_0_lcd”作为网络的名称(见图4.3.21)。第161页/共409页图4.3.21对lcd_ip_0实例进行分配第162页/共409页④点击同样的位置,选择MakeExternal,于是这个端点也被添加到了外部端点列
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国道路反光标线带数据监测研究报告
- 2025年中国氟耐尔滤袋市场调查研究报告
- 2025至2031年中国白洋河葡萄酒行业投资前景及策略咨询研究报告
- 在线教育平台第二学期课程设计计划
- 2025担保合同与主合同之间的从属关系
- 2025年建筑工程材料员劳动合同模板3篇
- 2025造船合同与修船合同比较
- 2025年度台式计算机及配件租赁服务合同
- 2025化肥购买合同范文
- 2025出租车的转让合同范本
- 寒潮雨雪应急预案范文(2篇)
- DB33T 2570-2023 营商环境无感监测规范 指标体系
- 上海市2024年中考英语试题及答案
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)宣传海报
- 垃圾车驾驶员聘用合同
- 2025年道路运输企业客运驾驶员安全教育培训计划
- 南京工业大学浦江学院《线性代数(理工)》2022-2023学年第一学期期末试卷
- 2024版机床维护保养服务合同3篇
- 《论拒不执行判决、裁定罪“执行能力”之认定》
- 工程融资分红合同范例
- 2024国家安全员资格考试题库加解析答案
评论
0/150
提交评论