摘 要:本文首先对32位开源CPU(OR1K)进行了介绍,然后对基于此CPU的SOC(System On Chip)片上系统设计、仿真、调试进行了介绍。SOC系统采用的总线是开源的Wishbone总线,系统中集成的IP都是开源的。本文还对Linux操作系统下SOC仿真验证环境进行了介绍。
关键词:OR1K;SOC;开源
现代电子系统中,需要高性能的CPU做为系统的核心部件,进行系统控制或者运行操作系统,以CPU为核心的SOC设计成为当前IC设计的新趋势。在32位CPU中,OR1K是开源、免费的CPU, 其性能介于ARM7和ARM9之间。
1 开源CPU简介
CPU和操作系统是现代计算机系统的两大基石,CPU设计技术的水平是集成电路技术发展的标志之一。CPU分为商业CPU和开源CPU两类,商业CPU是由专业公司开发、维护,具有功能强大、运行稳定、充分的技术支持等优点,但商业CPU源码是不开放的,使用者无法对其源代码进行深入理解和研究,而且其使用成本很高,用户的每一块终端产品都要向CPU产权拥有者上交一定的版税。
开源CPU是对商业CPU的有益补充,开源CPU将源代码公之于众,使用者都可以通过互联网免费得到它的源代码进行研究和二次开发,开源CPU如果有设计上的缺陷也能及时被使用者发现并及时更新。但开源CPU也有它的缺点,设计不成熟、稳定性差、没有及时的技术支持等都阻碍了它的进一步应用,特别是在要求高可靠性的应用领域。开源CPU的出现为我国科研人员研发具有自主知识产权的CPU创造了条件。
OpenRISC1200 处理器,简称OR1K,是由OpenCores 负责维护的基于GPL协议的32位开源处理器,和其他开源CPU相比,它技术成熟,性能稳定,经过了FPGA和实际流片验证,具有完整的文档支持,其性能介于ARM7和ARM9之间,能够满足大部分嵌入式应用。OR1K使用开放性的Wishbone总线结构,而OpenCores负责维护的其他开源IP大部分都支持这种总线,这也为基于OR1K组建SOC提供了方便。本文所阐述的SOC就是基于此CPU,并整合了其他具有Wishbone总线的开源IP。
2 SOC系统详细设计
2.1 系统整体框架
SOC系统整体框图如图一所示。系统采用Wishbone做为片上总线进行系统互联,总线上连接有OR1K CPU,Debug(调试)模块,RAM 模块,通用异步串行通讯(UART)模块,以及用于存储程序的基于SPI接口的串行FLASH控制器模块。
系统中的Wishbone总线模块来自OpenCores的一个开源IP: wb_conmax,wb_conmax模块负责整个片上系统进行互联。它最多可以连接16个Wishbone的Master设备和16个Wishbone的Slave设备。
图一 SOC系统整体框图
2.2 OR1K CPU
OR1K是具有哈佛结构的32位开源CPU,指令和数据总线有单独的接口,并且符合Wishbone总线标准,OR1K由以下几部分组成:
(1)CPU/DSP核心;
(2)数据和指令高速缓存;
(3)数据和指令MMU(存储器管理单元);
(4)可编程的中断管理器;
(5)Tick定时器(Tick Timer);
(6)电源管理单元;
(7)调试单元。
2.3 Wishbone 总线
Wishbone是一个真正开放和免费的总线规范,最先由Silicore公司提出,目前由OpenCores组织维护。由于其开放性,OpenCores上的免费IP大多采用Wishbone总线。Wishbone总线具有简单、灵活、轻量的特点,适合小型IP之间的连接。具有标准的Wishbone总线的主机和从机的连接示意图如图二所示。
图二 标准的Wishbone总线连接示意图
2.4 其他基于Wishbone总线的IP
UART控制器。UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART常用来与PC机进行通信。本系统集成的UART也是基于Wishbone总线的开源IP,典型的UART数据传输格式如图三所示:
图三 UART串行数据传输格式
SPI控制器。 (Serial Peripheral Interface串行外设接口) 是一种同步串行外设接口总线,它在MCU与各种外围设备之间以串行方式进行同步通信以交换信息。SPI以主从模式工作,在一个SPI系统中只能有一个主设备,可以有多个从设备。同步时钟信号有主设备发出。在本系统中,SPI控制器是具有标准Wishbone总线的开源IP,它在SOC内部接到Wishbone总线上,在外部接到具有SPI接口的串行FLASH上,用于存储OR1K需要的程序代码。本系统中的SPI控制器做为主设备工作,外部的串行FLASH做为从设备工作。
3, 模拟验证环境的搭建及测试
3.1 Testbench的搭建
SOC设计完成后,就要对其进行仿真验证,以便找出设计中的缺陷。编写testbench是验证SOC的最好办法。Testbench是由verilog编写的顶层文件,模拟SOC的工作环境,它主要负责全局时钟信号、复位信号的产生,给输入信号赋初值,检查输出信号是否正确,产生VCD(value change dump)波形文件,以及控制仿真过程等。
SOC仿真的过程包括运行仿真软件得到仿真结果和波形文件,检查仿真结果和波形文件是否和设计一致,如果仿真出现错误,就要进行调试(debug),修改设计代码,重新跑仿真、检查结果。直至得到正确的仿真结果。
3.2 SOC系统模拟仿真
本系统采用的仿真工具是开源的iverilog(Icarus Verilog),iverilog是verilog仿真器和综合器,本系统中我们只用它的仿真器功能。Iverilog提供命令行的编译模式和文本界面输出,编译后会输出一个以 .out为后缀的文件,然后直接运行这个输出文件就能得到仿真结果和仿真波形。Iverilog在Linux下运行的界面如图四所示。
图四 Iverilog运行界面
3.3 仿真波形查看和代码调试
验证设计的正确与否主要是检查输出的波形是否和设计的初衷一致。VCD格式的文件是仿真工具输出的标准波形文件,它用来记录仿真过程中信号的变化,通过检查波形文件可以查看任何一个信号在任何时间点的值。本系统使用gtkWave软件作为查看波形的工具,gtkWave也是开源软件,它运行在linux操作系统上,可以打开标准的VCD文件,但由于VCD文件太大,所以可以将iverilog产生的VCD文件转为lxt格式的文件,lxt格式是gtkWave的专用格式,它体积很小,gtkWave能很方便的将VCD文件转为lxt文件。gtkWave在linux下运行的命令:
Gtkwave -o -t ../
4, 结束语
本文对基于OR1K的32位CPU为核心的SOC系统进行了介绍,并介绍了SOC系统的搭建、仿真、波形查看与调试的基本知识和工具。面对商业CPU高昂的版税和闭源CPU的不开放性,研究并产业化开源、免费CPU具有重要的经济和社会意义。本文的研究重点放在了SOC系统的集成与仿真上,进一步的研究将会延伸到基于该SOC的操作系统和应用软件领域,以使开源CPU能更接近实用系统。
参考文献:
WISHBONE System-on-Chip (SoC)Interconnection Architecture for Portable IP Cores,
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。