Microblaze串口设计流程.docx

上传人:b****2 文档编号:24523080 上传时间:2023-05-28 格式:DOCX 页数:21 大小:1.65MB
下载 相关 举报
Microblaze串口设计流程.docx_第1页
第1页 / 共21页
Microblaze串口设计流程.docx_第2页
第2页 / 共21页
Microblaze串口设计流程.docx_第3页
第3页 / 共21页
Microblaze串口设计流程.docx_第4页
第4页 / 共21页
Microblaze串口设计流程.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Microblaze串口设计流程.docx

《Microblaze串口设计流程.docx》由会员分享,可在线阅读,更多相关《Microblaze串口设计流程.docx(21页珍藏版)》请在冰豆网上搜索。

Microblaze串口设计流程.docx

Microblaze串口设计流程

基于XilinxFPGA的数据通信设计流程

EDK是Xilinx公司在可编程逻辑器件上进行嵌入式处理器系统设计的一系列软件工具,它支持IBMPowerPC处理器硬核和Xilinx公司的MicroBlaze处理器软核。

EDK包括如下部分:

<1>XilinxPlatformStudio(XPS)图形界面;

<2>嵌入式系统工具集;

<3>嵌入式处理IP核,比如处理器和外围设备;

<4>PlatformStudioSDK(软件开发工具),可用于开发嵌入式应用程序。

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_pin100000kHz;

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上面,修改后如下所示:

#Virtex4ML403EvaluationPlatform

Netfpga_0_RS232_Uart_RX_pinLOC=F1|IOSTANDARD=LVCMOS33;

Netfpga_0_RS232_Uart_TX_pinLOC=A9|IOSTANDARD=LVCMOS33;

Netfpga_0_clk_1_sys_clk_pinTNM_NET=sys_clk_pin;

TIMESPECTS_sys_clk_pin=PERIODsys_clk_pin100000kHz;

Netfpga_0_clk_1_sys_clk_pinLOC=B15|IOSTANDARD=LVCMOS25;

Netfpga_0_rst_1_sys_rst_pinTIG;

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调试,最终实现我们需要的功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1