作者/ 黄诚1 唐明华2 1.湘潭大学 物理与光电工程学院(湖南 湘潭 411105) 2.湘潭大学 材料科学与工程学院(湖南 湘潭 411105)
*基金项目:国家自然科学基金(编号:51472210)
黄诚(1992-),男,硕士生,研讨方向:数字电路SoC规划等。
摘要:SoC是当时微电子芯片开展的趋势,可是因为受带开发环境的PC终端、额定硬件接口、衔接线等条件的束缚,很难支撑SoC产品的二次开发。本文提出一种SoC无线程序加载体系规划方案,经过无线操控完结不同程序的加载,不需求添加额定的接口与杂乱的模块,不需求衔接下载线和IDE开发环境等东西,简化了芯片的二次开发,添加了芯片的使用率。并且在FPGA板上测验经过。
导言
跟着SoC技能的不断开展,其产品在市场上的占用份额也越来越大。关于SoC的开发流程,它需求有一套相应的IDE开发东西,包括装有配套开发环境的PC、硬件接口和衔接线。开发完结后使用于嵌入式范畴,可是因为受带开发环境的PC终端、电路板、衔接线等条件的束缚,一般很难支撑二次开发。
为了处理上述技能问题,本文提出一种能便利完结二次开发、芯片使用率高的依据SoC的无线智能程序加载办法。运用带蓝牙功用的终端发送不同的指令即可挑选flash程序区中不同的程序加载到内存模块,经过无线操控完结不同程序的加载,不需求添加额定的接口与杂乱的模块,不需求衔接下载线和IDE开发环境等东西,并供给一种无线智能程序加载SoC体系。经过在FPGA开发板上测验,该办法能很好地使用在智能终端范畴中,例如智能玩具小车,主控选用本发明的SoC芯片,就能设定小车的三种作业场景——遥控操控小车、小车主动避障和小车循迹,经过带蓝牙的终端向主控发送相应的指令就能改动小车的作业形式,添加小车的功用。
1 体系整体结构
本文中的无线智能程序加载SoC体系包括时钟模块、处理器模块、只读存储器ROM模块、Wishbone总线裁定模块、SPI操控器模块、内存DDR2模块和通用异步收发传输器UART模块。一切模块均经过Wishbone总线衔接到处理器。总线裁定选用轮循机制完结主设备与从设备之间的拜访。本体系改动了传统的把一个程序存储在flash中,当烧录下一个程序时就会掩盖上一个程序的做法,而是把flash区分红三个程序区,烧录flash时,把不同的程序放在不同的程序区。当从SPI flash发动时,程序指针首要指向只读存储器ROM里的bootload区,以完结程序从flash复制到内存,再从内存开端履行指令。本体系在此基础上添加了bootload的功用,不仅能完结程序的复制,还能监测串口,依据收到的指令挑选一个程序区的程序复制到内存,使得芯片封装好之后,无需接线,无需相应的IDE软件来加载程序,经过手机或带有蓝牙模块的终端就能够加载不同的程序,简化芯片的二次开发,在智能终端范畴能有很好的使用。整体结构图如图1所示。
2 硬件体系规划
2.1 硬件顶层结构规划
体系硬件顶层选用硬件描绘言语Verilog HDL规划,以总线作为切割介质来看整个体系,包括一个主设备和四个从设备。其间主设备为处理器OR1200,从设备为只读存储器模块、内存模块、串行外设接口模块和通用异步办法传输器模块。如图2所示。
2.2 总线裁定规划
总线裁定规划首要包括两组裁定,一组为处理器中的指令总线IBUS,经过高位地址判别从只读存储器ROM取指令仍是从内存模块DDR2中取指令;另一组为处理器中的数据总线,经过高八位地址判别拜访哪个外设,详细拜访哪个寄存器经过低位判别。其间主设备选用轮询的机制抢占总线,中心规划思想为:计算主设备的个数n,然后界说n位的变量token={00….01},经过必定周期把1向左循环取到每个主设备,而完结裁定的轮循机制。
2.3 flash存储器程序区区分结构规划
如图3所示,flash存储器地址从0x100000到0x1c0000是bit文件放置区1,0x1c0001到0x1f0000是程序区Ⅰ2,地址从0x1f0001到0x220000是程序区Ⅱ 3,地址从0x220001到0x250000是程序区Ⅲ4,地址从0x250001到0x300000是扩展区5。SoC体系bit文件使用Xilinx ISE中的impact东西烧录进去,其他程序区的程序经过硬件描绘言语中的readmemh指令写入。
3 软件规划
体系在上电发动的时分,程序指针PC指向只读存储器ROM中Bootload区的一段代码,这段代码一般完结程序从flash存储器复制到内存,再将程序指针跳转去内存一条一条履行的功用。本文中的软件规划在此基础上添加了改善,如图4所示。首要优化串行外设接口SPI和通用异步收发传输器UART,并实时监测终端发过来的指令;若监测到指令,校验接收到的指令是否为有用指令,若为有用指令则依据接收到的指令挑选flash存储器相应程序区的有用地址,不然经过通用异步收发传输器UART和蓝牙模块向终端发送“过错”提示,持续等候指令。得到有用的地址后,初始化串行外设接口SPI,发生串行外设接口SPI时序和发送读指令,依据flash程序区的有用地址复制程序到内存模块DDR2中,直到程序巨细等于程序巨细变量sizeword的值,最终履行跳转指令,将处理器指向内存模块DDR2的开端方位,完结体系的自发动。程序流程图如图4所示。
4 仿真与下板测验
OR1200处理器是OpenRisc宗族中的一员,在软件编译的时分咱们需求装置OpenRisc穿插编译东西链;选用Xilinx的Virtex-5开发板,一起需求装置ISE等EDA东西。
编译东西链把前面规划的加载发动代码(bootloader)从汇编言语编译成硬件描绘言语,并实例化到SoC体系顶层中。然后进行flash存储器的分区并烧录程序,本文经过readmemh指令向程序区Ⅰ、程序区Ⅱ和程序区Ⅲ顺次烧录hellowa.c、hellowb.c和hellowc.c。这几个测验程序会经过串口别离打印出“Hello word A”、“Hello word B”和“Hello word C”。这样咱们就能够很直观地判别体系在履行哪个程序。
将板子上电,并使用Xilinx ISE中的impact东西将编译好的SoC体系bit文件烧录至flash存储器0x100000到0x1c0000区域,当编译归纳经过,下板成功后,咱们就能够抓取波形和串口打印判别成果。其波形图和串口打印如图5和图6所示。从波形图中咱们能够看出串口操控器输出14个字符,正好是“Hello World A/B/C”,扩大波形咱们能够看到第一个数据为0x48,正好是字符“H”的ASCLL码。而从窗口上打印的输出更为显着。给串口发送指令“0”,挑选flash程序区1 hellowa.c,从0x100000开端复制程序,仿真测验成果输出“Hello word A!”。给串口发送指令“1”,挑选flash程序区Ⅱ hellowb.c,从0x130001开端复制程序,仿真测验成果输出“Hello word B!”。给串口发送指令“2”,挑选flash程序区Ⅲ hellowc.c,从0x160001开端复制程序,仿真测验成果输出“Hello word C!”。
5 定论
本发明依据SoC的无线智能程序加载办法中,首要将flash存储器区分红若干个程序区,并经过加载指令把不同的程序别离加载到不同的程序区,然后运转加载发动代码,初始化串行外设接口并监测串口接收到的指令,从flash存储器中挑选相应程序区,完结程序到内存模块的复制,最终履行跳转指令,将处理器指向内存模块的开端方位,完结体系的自发动;整个加载进程简略,不需求接线和留出程序加载接口,也不需求相应的IDE软件来加载程序,经过手机或带有蓝牙模块的终端就能够加载不同的程序,适用范围广。
参考文献:
[1]唐明华,黄诚,刘新,等. 一种依据SoC的无线智能程序加载办法及体系. 国家发明专利. 专利申请号: 201610139229.2. 我国,2015.
[2]苏纪娟,孟祥玲,朱庆明.体系芯片技能国内外开展现状[J]. 军民两用技能与产品. 2015(13).
[3]王龙兴.集成电路的曩昔、现在和将来(一)国际集成电路的开展前史[J].%&&&&&%使用. 2014(01).
[4]李争,李范鸣,陈捷,等.依据Wishbone SoC总线接口的高性能SDRAM操控器[J].科学技能与工程. 2008(12).
[5]郑文静,李明强,舒继武. Flash存储技能[J]. 计算机研讨与开展. 2010(04).
[6]陈光武,范多旺,于超,等.依据Wishbone片上总线的IP核的互联[J].微计算机信息. 2009(20).
本文来源于《电子产品国际》2017年第9期第54页,欢迎您写论文时引证,并注明出处。