1MicroBlaze软核处理器
MicroBlaze嵌入式软核的运行速度较快,可配置性强,属于32位RISC处理器,该处理器支持CoreConnect总线的标准外设集合,和CPU同频,并支持FCB、XSL、XCL等高速连接,此外,通过MAILBOX和MUTEX,该软核处理器还能实现多核处理系统。从理论上来讲,FPGA容量是唯一影响CPU数量的因素,但是实际上CPU数量最多只能到8个。对MicroBlaze处理器进行设计之前,需要先明确其功能任务,这样才能快速选取或者设计处理器组件,进行参数化控制,缩短设计时间。设计MicroBlaze处理器时选用任务目标为导向的设计方法,设计的主要内容如下所述:(1)根据FPGA型号确定主频,并根据处理能力需求确定单核或者是多核。(2)根据具体的软件运行空间和处理器要求,确定容量、FLASH芯片及RAM类型。(3)根据需要的外部接口、外部芯片及片内模块等,选取相应的IP-Core或设计相应的模块,实现各类接口。初步确定设计的参数和元件后,进行优化设计。
2嵌入式系统结构
本文采用SOPC技术设计了基于MicroBlaze软核处理器的嵌入式系统,设计过程体现了SOPC技术的优点。系统的网络接口选择SMSC91C111芯片实现,支持CoreConnect总线的标准外设集合,DDRSDRAM和BRAM用来存储相关的数据,并且存储的数据不同,其中BRAM存储系统数据及系统运行代码,DDRSDRAM存储系统中的软件代码和系统参数。LCD显示屏的主要作用是显示系统的运行状态。该系统要实现和以太网的数据传输,其实质是以太网控制器,具有MAC层及物理层的功能。
3基于MicroBlaze的嵌入式系统开发流程
完成MicroBlaze处理器的设计之后,开始对嵌入式系统的硬件进行设计,硬件的设计如下所述。先创建硬件平台,平台的创建通过XPS的BSB向导实现;然后删减或者添加开发板平台的IP核,并对IP核的属性进行设置;最后在SystemAssem⁃blyview界面中分配地址、对端口和相应的总线连接进行设置。在开发板中下载系统生成的正确的Bitstreams,SDK中运行相应的应用程序时会看到对应的现象。系统的开发包括硬件开发和软件开发,通过EDK平台完成。
3.1硬件开发设计
用基本系统向导BSB搭建Microblaze平台,平台的搭建主要包括三方面的内容:确定FPGA器件的型号,并对器件的属性进行设置;根据系统需求添加需要的外设,添加之后设置其属性;平台功能测试等。XPS能够自定义IP核,生成向导创建User_Logic用户逻辑模块及IPIF接口模块,两个模块的功能和属性各不相同,其中用户可以采用User_Logic模块,根据系统需求任意添加自定义逻辑,不必考虑它们和Microblaze之间的通信链接,而IPIF接口模块的功能是进行协议转换并捕捉到PLB总线信号,和PLB总线进行交互,如果用户想要自定义输入/输出信号,只要在IPIF模块中声明即可。设计系统平台时,需要添加多种外设,如添加SMSC91C111芯片的控制逻辑;添加外部存储器SRAM的控制逻辑;FPGA的I/O接口控制逻辑及添加用户自定义的逻辑接口控制逻辑等,这些外设和Microblaze软核处理器的连接是通过特定的片内总线实现。
3.2软件开发设计
通过EDK平台的SDK组件可以完成完整的嵌入式系统软件平台的设计。利用SDK组件用户可以生成需要的MHS文件及MSS文件。MHS文件包含了整个MicroBlaze系统的总线、外设、处理器等描述。MSS文件包含了全部的外设驱动信息描述,通过驱动文件完成软件调度程序,由MB2GCC工具编译调度程序生成可执行程序。最终生成软件程序及.bit文件下载到开发板。程序设计好之后,需要进行测试,如果程序运行中存在问题,则可以应用XMD调试软件,使程序更加完善,解决问题完成设计。MHS文件可以根据系统需求进行更改,使系统变得更加完善。PlatGen(硬件平台生成器)产生整个系统的网表,结合约束文件能够生成可配置文件(.bit),用来下载。此外,EDK还提供了大量的函数库,完整的操作系统及板级支持包(BSP)都能够帮助用户开发软件平台。用户可以根据功能需求需要对外设进行设置,应用VerilogHDL或者VHDL代码在ProjectNavigatorISE环境中对用户的IPcore进行设计,然后利用creat—importperipheral工具(XPS中)完成创建和导入IPcore。EDK系统存在的IPcore和用户自己定义的IPcore可以构建一个完整的嵌入式系统。
3.3操作系统的移植
该嵌入式系统应用了μC/OS操作系统,该操作系统是一种实时操作系统,比较适用于微控制器。设计μC/OS操作系统时,要以平台的移植需求为基础,对于不同的平台μC/OS系统的要求也不相同,因此,需要改写宏和函数。*OS_ENTER_CRITICAL及OS_ENTER_CRITICAL:这是两个不同的宏,它们的主要功能是进行临界段保护。在该嵌入式系统中临界段保护的实现需要利用汇编代码关。*OS_TASK_SW:这个宏的主要作用是用于任务切换,嵌入式系统中任务切换主要利用CPU的软件中断方式实现。如果需要中断则调用此宏,宏产生软件中断,相应的中断处理程序会对中断进行处理,实现任务的切换及上下文保护。*OSIntCtxSw::采用纯汇编实现中断级任务切换。*OSTickISR:采用纯汇编实现系统定时器中断的处理函数。*OSCtxSw::采用纯汇编实现,用户级上下文切换。*OSTaskStkInit:创建任务时,初始化任务堆栈。
4结论
随着计算机技术的发展,嵌入式系统的应用越来越广泛,本文采用SOPC技术搭建嵌入式测试系统,这种技术是对嵌入式系统传统设计理念的创新,推动了硬件和软件的整体设计的进步,简化了软件设计程序,并且提高了其移植性,使硬件电路设计更加简单和高效。随着计算机技术的发展,嵌入式系统的设计会越来越简单,并且成为将来研究的热点。
作者:苏智华 李校红 单位:西安欧亚学院