Microblaze串口设计流程Word文档格式.docx
- 文档编号:22027642
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:1.65MB
Microblaze串口设计流程Word文档格式.docx
《Microblaze串口设计流程Word文档格式.docx》由会员分享,可在线阅读,更多相关《Microblaze串口设计流程Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
MicroBlaze嵌入式软核是一个被Xilinx公司优化过的可以嵌入在FPGA中的RISC处理器软核,具有运行速度快、占用资源少、可配置性强等优点,广泛应用于通信、军事、高端消费市场等领域。
1.MicroBlaze的体系结构
MicroBlaze是基于Xilinx公司FPGA的微处理器IP核,和其它外设IP核一起,可以完成可编程系统芯片(SOPC)的设计。
MicroBlaze处理器采用RISC架构和哈佛结构的32位指令和数据总线,可以全速执行存储在片上存储器和外部存储器中的程序,并和其它外设IP核一起,可以完成可编程系统芯片(SOPC)的设计。
MicroBlaze处理器采用RISC架构和哈佛结构的32位指令和数据总线,可以全速执行存储在片上存储器和外部存储器中的程序,并访问其的数据。
MicroBlaze内部有32个32位通用寄存器和2个32位特殊寄存器—PC指针和MSR状态标志寄存器。
为了提高性能,MicroBlaze还具有指令和数据缓存。
所有的指令字长都是32位,有3个操作数和2种寻址模式。
指令按功能划分有逻辑运算、算术运算、分支、存储器读/写和特殊指令等。
指令执行的流水线是并行流水线,它分为3级流水:
取指、译码和执行。
MicroBlaze可以响应软件和硬件中断,进行异常处理,通过外加控制逻辑,可以扩展外部中断。
利用微处理器调试模块(MDM)IP核,可通过JTAG接口来调试处理器系统。
多个MicroBlaze处理器可以用1个MDM来完成多处理器调试。
MicroBlaze处理器具有8个输入和8个输出快速单一链路接口(FSL)。
FSL通道是专用于单一方向的点到点的数据流传输接口。
FLS和MicroBlaze的接口宽度是32位。
每一个FSL通道都可以发送和接收控制或数据字。
2.MicroBlaze的开发
应用EDK(嵌入式开发套件)可以进行MicroBlazeIP核的开发。
工具包中集成了硬件平台生产器、软件平台产生器、仿真模型生成器、软件编译器和软件调试工具等。
EDK中提供一个集成开发环境XPS(Xilinx平台工作室),以便使用系统提供的所有工具,完成嵌入式系统开发的整个流程。
EDK中还带有一些外设接口的IP核,如LMB、OPB总线接口、外部存储控制器、SDRAM控制器、UART、中断控制器、定时器等。
利用这些资源,可以构建一个较为完善的嵌入式微处理器系统。
在FPGA上设计的嵌入式系统层次结构为5级。
可在最低层硬件资源上开发IP核,或用已开发的IP核搭建嵌入式系统,这是硬件开发部件;
开发IP核的设备驱动、应用接口(API)和应用层(算法),属软件开发内容。
利用MicroBlaze构建基本的嵌入式系统。
通过标准总线接口—PLB总线的IP核,MicroBlaze就可以和各种外设IP核相连。
EDK中提供的IP核均有相应的设备驱动和应用接口,使用者只需利用相应的函数库,就可以编写自己的应用软件和算法程序。
对于用户自己开发的IP核,需要自己编写相应的驱动和接口函数。
3.MicroBlaze的应用
在软件无线电系统中,一般采用“微处理器+协处理器”结构。
微处理器一般使用通用DSP,主要完成系统通信和基带处理等工作;
协处理器用FPGA实现,主要完成同步和预处理等底层算法的运算任务。
在本课题中,采用的基带处理算法比较简单,应用软处理器IP核代替DSP,在一片FPGA内就能实现整个系统的设计。
这样可以简化系统的结构,提高系统的整体性。
FPGA片上系统主要完成两个任务—发送和接收数据。
对于发送任务,FPGA完成硬件算法的初始化,接收串口数据,并将数据存储在双口SRAM中,系统硬件算法部分对双口SRAM中数据进行基带处理,并将结果送给D/A转换器。
对于接收任务,FPGA接收A/D转换器送来的数据,进行基带处理,并将数据存储在双口SRAM中,把存储在双口SRAM中的数据通过串口发送回主机。
在EDK开发套件的XPS集成开发环境下进行系统硬件设计。
在其界面环境下,添加IP核,进行系统连接和各项参数设置。
由于系统中包含的硬件算法模块不是标准模块,因此工程需要设置成子模块方式,利用平台产生器,根据硬件描述文件(.MHS文件),生成嵌入式系统子模块的网表文件(.NGC)。
然后在ISE设计环境下,从外部通过GPIO端口与硬件算法模块相连,从而构成整个应用系统的硬件模型。
在EDK中,每一个外设IP模块都有自己的软件函数库。
利用Libgen工具,将所需外设函数数库的头文件添加进工程中,通过调用这些函数可以操作和控制这些外设。
使用标准C语言进行应用程序的开发,编写相应的算法软件,完成系统功能。
将编写的程序代码利用mb-gcc编译工具,根据系统的软件一并,生成.ELF文件。
在编译链接之前,若选择调试方式,就会在生成文件中加入调试接口SMDstub,进行程序的硬件调试。
利用系统的硬件模型以及RAM块的组织结构文件、ELF文件和用户结束文件,应用FPGA综合实现工具(如XilinxXST)进行综合,然后下载生成的配置BIT文件到目标板上。
利用EDK中提供的GDB调试工具可以进行程序调试。
有两种调试方法:
软件仿真和硬件调试。
软件仿真可以进行程序的功能调试,在开发工具内部就可以进行,不需要硬件支持。
硬件调试就是通过JTAG接口或串口(可在硬件设计时选择),连接到目标板上的应用系统中的XMD调试接口,将软件程序下载到系统中进行调试。
4.使用XPS和SDK开发环境步骤流程
4.1XPS搭建硬件平台,建立Microblaze工程
EDK提供了一种简单的方式——利用BSBwizard的界面帮助用户生成基本硬件系统。
启动XPS界面:
我们通过BSBwizard来建立工程,选中利用向导,点击OK,出现如下界面:
选择建立工程的路径,修改工程名字,可以默认system.xmd,点击OK。
选择新建,点击Next,
选择开发板,点击Next,
此处我们选择单个处理器,点击Next,
设置FPGA片外晶振为100MHz,选择Microblaze处理器,CPU核主频为100MHz,使用8K字节片内BlockRAM作为CPU核的数据和指令暂存,点击Next,
只使用串口,选择使用中断,设置串口波特率、数据位宽和奇偶校验位,点击Next,
连续点击两个Next后出现BSBwizard的最后一个界面,显示所有的选项情况,系统同时自动生成每个硬件模块的地址范围,检查无误后点击Finish进入以下界面:
选中StartusingPlatformStudio进行其它设置,点击OK;
本项目中,我们需要有八个串口来采集陀螺的数据,用一个串口将FPGA中的数据传到上位机进行显示,所以我们需要在XPS中加入八个串口,在IPCatalog里面找到XPSUART(Lite),右击添加IP,连续添加八个串口;
添加完成之后,将其连接PLB总线上面;
切换SystemAssemblyView文件窗口到Ports子窗口,展开刚添加的八个IP,右击输入输出和中断将其进行新的连接,然后将RX和TX分别设置为外部连接,右击选择MakeExternal,并且注意修改外部管教的输入输出情况;
最后切换到SystemAssemblyView文件窗口到Addresses子窗口,将每个串口地址范围设置为64K,点击自动生成。
分别如下面几个图所示:
以上完成了硬件逻辑上的构建工作,下面将逻辑结构定位到具体的硬件芯片中,修改UCF文件来指定管脚和约束,硬件自动生成的UCF文件如下:
#Virtex4ML403EvaluationPlatform
Netfpga_0_RS232_Uart_RX_pinLOC=W1|IOSTANDARD=LVCMOS33;
Netfpga_0_RS232_Uart_TX_pinLOC=W2|IOSTANDARD=LVCMOS33;
Netfpga_0_clk_1_sys_clk_pinTNM_NET=sys_clk_pin;
TIMESPECTS_sys_clk_pin=PERIODsys_clk_pinkHz;
Netfpga_0_clk_1_sys_clk_pinLOC=AE14|IOSTANDARD=LVCMOS33;
Netfpga_0_rst_1_sys_rst_pinTIG;
Netfpga_0_rst_1_sys_rst_pinLOC=D6|PULLUP;
我们需要将上面的管脚重新定位到自己使用的FPGA芯片上面,同时将添加的八个串口的管脚连接到FPGA上面,修改后如下所示:
Netfpga_0_RS232_Uart_RX_pinLOC=F1|IOSTANDARD=LVCMOS33;
Netfpga_0_RS232_Uart_TX_pinLOC=A9|IOSTANDARD=LVCMOS33;
Netfpga_0_clk_1_sys_clk_pinLOC=B15|IOSTANDARD=LVCMOS25;
Netfpga_0_rst_1_sys_rst_pinLOC=Y4|PULLUP;
Netxps_uartlite_0_RX_pinLOC=C2|IOSTANDARD=LVCMOS33;
Netxps_uartlite_0_TX_pinLOC=D2|IOSTANDARD=LVCMOS33;
Netxps_uartlite_1_RX_pinLOC=D6|IOSTANDARD=LVCMOS33;
Netxps_uartlite_1_TX_pinLOC=D5|IOSTANDARD=LVCMOS33;
Netxps_uartlite_2_RX_pinLOC=D4|IOSTANDARD=LVCMOS33;
Netxps_uartlite_2_TX_pinLOC=G6|IOSTANDARD=LVCMOS33;
Netxps_uartlite_3_RX_pinLOC=H7|IOSTANDARD=LVCMOS33;
Netxps_uartlite_3_TX_pinLOC=G7|IOSTANDARD=LVCMOS33;
Netxps_uartlite_4_RX_pinLOC=C1|IOSTANDARD=LVCMOS33;
Netxps_uartlite_4_TX_pinLOC=C6|IOSTANDARD=LVCMOS33;
Netxps_uartlite_5_RX_pinLOC=C5|IOSTANDARD=LVCMOS33;
Netxps_uartlite_5_TX_pinLOC=C4|IOSTANDARD=LVCMOS33;
Netxps_uartlite_6_RX_pinLOC=G5|IOSTANDARD=LVCMOS33;
Netxps_uartlite_6_TX_pinLOC=H6|IOSTANDARD=LVCMOS33;
Netxps_uartlite_7_RX_pinLOC=H8|IOSTANDARD=LVCMOS33;
Netxps_uartlite_7_TX_pinLOC=G9|IOSTANDARD=LVCMOS33;
修改完UCF文件后,再修改CMD文件,原文件内容如下:
setMode-bscan
setCable-pauto
identify
assignfile-p3-fileimplementation/download.bit
program-p3
quit
在这个文件中,setMode命令设置编程模式为边界扫描模式,即我们熟悉的JTAG编程模式;
setCable命令设置编程电缆类型为自动检测,使用第一个检测到的电缆下载bit文件;
identify命令识别目标板上有几个可编程的器件,该命令可以列出目标板上的FPGA、PROM、ACE、CPLD等所有使用JTAG链可以编程的器件;
assignfile命令指定编程使用的比特流文件;
program命令指编程器件;
quit命令最后退出;
我们的开发板在JTAG链上面连接了PROM和FPGA两个元件,并且FPGA是JTAG链上的第二个元件,所以要修改CMD文件中的两个3,将其改为2。
4.2SDK里面进行软件编写
通过以上步骤,在XPS里面已经完成硬件结构的搭建,然后生成网表和比特流文件,更新完比特流文件后,可以将测试代码的可执行文件下载到FPGA中进行简单测试,最后直接导入到SDK中,SDK图形界面集中提供了全面的软件设计工具,我们将在这里面完成代码的编写和调试工作,导入后图形界面如下:
在SDK里面新建一个工程,按照以下方式使用默认的设置和选项进行建立;
完成上述步骤后,在工程管理窗口右键单击Standalone_bsp_0,按照下图所示新建工程;
在接下来出现的对话框中选择XilinxCProject并点击Next,出现下图所示,输入工程名字,选择EmptyApplication并点击Next;
出现下图所示界面选择TargetanexistingBoardSupportPackage,完成;
在工程管理窗口右击uart工程名字,选择新建SourceFile,输入新建原文件的名称,确定后出现代码编辑窗口,如下图所示,开始代码的编写;
代码编写完成之后,下载到FPGA中进行调试,我们也可以进行Debug调试,最终实现我们需要的功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Microblaze 串口 设计 流程
![提示](https://static.bdocx.com/images/bang_tan.gif)