基于OR1200的嵌入式SoC设计
RISC是一种执行较少类型计算机指令的微处理器,起源于80 年代的MIPS主机(即RISC 机),RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。RISC微处理器不仅精简了指令系统,采用超标量和超流水线结构;它们的指令数目只有几十条,却大大增强了并行处理能力。如:1987年Sun Microsystem公司推出的SPARC芯片就是一种超标量结构的RISC处理器。而SGI公司推出的MIPS处理器则采用超流水线结构,这些RISC处理器在构建并行精简指令系统多处理机中起着核心的作用。
近年来开放源代码运动迅速发展,开放性源码的概念已经从软件领域(如Linux,GCC等)扩展到了硬件领域,出现了专门发布免费的IP核源代码的组织--OpenCores.OR1200以其完全开放的源代码和编译器吸引了设计者。其结构简单、通用性和可移植性强,具备完整的开发平台,非常适合嵌入式SoC设计[1].关于OR1200的研究也受到学术界和工业界越来越多的关注。
1 32位开放源代码处理器核OpenRISC1200
OpenRISC1000系列处理器是开放IP核源代码组织OpenCores公布的32/64位处理器软核。OpenRISC1200采用了自主设计的OpenRISC1000体系结构和自定义的ORBIS32 指令集。它是一种32位、标量、哈佛结构、5 级整数流水线的RISC,支持Cache、MMU和基本的DSP 功能。OR1200具有较好的可配置性, 使用者可以根据自己的需要定制自定义的指令,确定是否使用MMU,配置Cache 的大小(1 KB~64 KB之间)。OR1200同时还提供了1个用于降低功耗的电源管理单元和1个支持片内调试的调试单元[2].
OR1200有完善的软件开发环境和操作系统的支持。使用者可以通过包括GCC、Binutils和GDB等在内的GNU tool chains进行基于OR1200内核的编译和调试。同时,OR1200拥有专门的仿真器Or1ksim,可以进行指令集一级的仿真,并支持Linux,μClinux,μC/OS-Ⅱ等任何一种现代操作系统。
OR1200典型应用情况[3]:使用0.18 ?滋m和6层金属工艺时,主频运行达到300 MHz,可以提供300Dhrystone、2.1MIPS和300 Hz的32 bit×32 bit的DSP乘加操作的能力。OR1200默认配置有100万个晶体管。
2 系统的总体方案
本文构建以OR1200微处理器为核心,包含软硬件平台的嵌入式SoC系统。硬件系统以开源32位RISC核+Wishbone总线为主干,进行增量迭代开发,将仿真验证过的模块逐个加入到OR1200嵌入式系统中,然后在FPGA上进行验证。软件部分进行交叉编译环境的建立、操作系统的移植、应用程序开发并利用驱动程序、函数库,经交叉编译工具最后生成可执行程序下载到内存中。最后在Altera的DE2-70开发板上验证系统能否稳定运行。系统开发流程如图1所示:
主函数中3个任务函数非常简单,优先级从高到底分别为1、2、3,系统提供的函数OSTimeDly()分别为10、20、30,OsTimeDly()是将1个任务挂起,延时若干个时钟节拍,CPU可以去执行其它任务。
图4给出的是通过串口工具输出μC/OS-II多任务调度的信息,3个任务根据优先级和延迟时间正确执行并打印出执行信息,测试证明OR1200嵌入式SoC系统能够稳定的运行μC/OS-II.
3 硬件平台的构建
OR1200Q嵌入式SoC系统组件包括:OR1200、Wishbone互联模块、Memory Controller、Flash、SDRAM、UART、GPIO、DM9000A接口模块以及DM9000A控制器。图2所示系统的硬件架构。
系统外接50 MHz的时钟,经过PLL分频,系统工作在25 MHz频率。由于OR1200的可配置性,配置了硬件乘法功能,选择8 KB的IC(指令缓存)、8 KB的DC(数据缓存),选择NO_DMMU,NO_IMMU,即未加内存管理单元。起始地址设为0x100,对系统做了硬件映射,复位时,0x04000000地址映射到0x0地址,所以系统可以从Flash启动。Memory Control为统一的存储控制器模块,控制着SDRAM和Flash 2种存储器。本系统针对AlteraDE2-70开发板硬件配置选择64 MB的SDRAM和8 MB的Flash.Flash用于存储压缩的内存映像文件及启动程序Bootloder.Bootloder把压缩的内存映像文件从Flash复制到SDRAM中,并跳到起始位置解压执行可执行文件、启动操作系统。UART是嵌入式中重要的I/O设备,本系统选择由OpenCores组织维护的UART16550 IP核,它与国家工业标准兼容并且可配置。UART通信协议的要求是:波特率9600 b/s、8个数据位、1个停止位、无奇偶校验位。GPIO在系统中主要用于控制LED显示状态。DM9000A支持8 bit和16 bit数据接口以适用于不同
- IP核在SoC设计中的接口技术 (08-06)
- 视频跟踪算法在Davinci SOC上的实现与优化(10-06)
- 基于赛灵思Spartan-3A DSP的安全视频分析(02-17)
- Linux下Sniffer程序的实现(06-12)
- linux操作系统下的进程通信设计(01-24)
- 基于S3C44B0X和uClinux的Socket通信实现(02-28)