首页 » 技术文章 » 基于太阳能LED照明控制系统的处理器设计

基于太阳能LED照明控制系统的处理器设计

作者:  时间:2010-11-30 10:42  来源:EDN

  4 处理器结构

  处理器主体结构如图2 所示, 下面具体介绍处理器各部分。

  4. 1 存储结构

  本处理器的存储结构采用哈佛( Harvard) 结构。这是嵌入式处理器中被广泛采用的结构, ARMMIPS 等。特别适用于采用RISC 指令集的处理器。哈佛结构的主要特点是: 程序指令存储通路与数据指令存储通路物理上是分离的。使得两个存储器可以独立编址、独立访问, 从而避免了程序访问与数据访问之间产生的相关性冲突。这中并行设计架构相当于提高了1 倍的吞吐量, 从而提高了处理器性能。

  4. 2 流水线结构

  基于哈佛存储结构, 处理器核心的设计采用5 级流水线( pipe2line) 结构 分别是: 取指令级( IF) 、译码级( ID) 、寄存器访问级( LO) 、运算级( EX) 、回写级(WB) 。流水线的设计方法在高性能大规模系统中得到广泛应用, 其实际上就是把规模较大、层次较多的组合逻辑分为几个级, 在每一级插入寄存器并暂存中间数据。这样做大大地增加了时钟周期的利用率, 最大限度地发挥电路潜能。在不提高时钟频率的前提下提高了处理器效率, 可以实现在同等效率下相对于非流水线设计功率可降低25 , 实现低功耗设计。

  4. 3 片内其他模块

  整个芯片是围绕着流水线核心实现。根据系统需求, 处理器要实现精确计时以及脉冲充电方式。为了实现这两种功能, 在流水线核心的基础上添加了两个可独立流水线运行的模块: TIMER( 定时器) PWM( 脉宽调制) T IMER 模块是16 位定时器, 时钟源采用32 768 Hz晶振。其可以准确分辨1 s 时间单位, 误差低, 可为本系统长年室外稳定工作提供支持。定时器可以供中断和查询2 种操作方式, 以供系统后期的灵活配置。PWM 是脉冲调制模块。其功能是产生占空比可变的方波, 以驱动大功率MOS 管进行脉冲充电。其占空比变化范围为0~ 100% , 步长1%。本模块减轻了处理器流水线部分的负担, 使脉冲驱动可与其他控制信号并行执行, 增强了系统的稳定性。

  处理器片内还包含通用I/ O 控制单元。此单元完成对管脚数据方向的控制, 并为输出数据提供保持功能, 对输入数据进行同步。此单元对外部异步信号域与内部同步信号域进行隔离。避免产生信号毛刺, 简化时序分析。

  5 仿真与实现

  本设计通过FPGA 实现了所需求功能。设计流程如图3 所示。

  5. 1 仿真

  在太阳能LED 照明控制系统中, 控制器所需要面对的指令流主要有三种: 运算指令流( 顺序执行) 、分支跳转指令流、循环指令流。

  5. 1. 1 运算操作指令流( 加法)

  完成加法指令需要的步骤包括:

  (1) 准备2 个操作数。这2 个操作数如果已经存在于寄存器组中则可以忽略此步骤, 如果其中一个或两个是立即数或者在存储器中, 则需要MOV 指令或LOAD 指令完成准备过程。

  (2) 进行运算。一条ALU 加操作。

  (3) 写回存储器。根据不同的需求会编译出不同的指令组合, 这里以两立即数相加结果存放在寄存器中为例进行加法操作。这需要首先执行两条MOVD 指令准备操作数, 之后进行加法操作。需要注意的是, 在流水线中由于数据相关性问题, MOVD 指令之后ADD 指令不能马上进入流水线执行。

  当ADD 指令进入LO 级进行取数操作时, 其之前的两条MOVD 指令分别在EX 级与WB 级运行着, 此时从寄存器组中取数是不正确的。所以要把ADD 指令推后, 等到MOVD 指令退出流水线后, 方可进行取数。如果是第二条MOVD 指令推出流水线时ADD 进入LO 级的话, 中间需要间隔3 个流水线周期。但实际上只需间隔两个流水线周期就够了。这是由本处理器ALU 操作体系决定的。ALU 的第一操作数是从寄存器中直接取出, 无需通过LO 级。等价于第一操作数比第二操作数要快一个流水线周期。所以, 这里设计让第一条MOVD指令存储第二操作数, 当此指令完成后,ADD 进入LO 级将第二操作数取出。经过一个流水线周期ADD 指令进入EX 级时, 第二条MOVD 也把第一操作数存储到了寄存器。

  之后再经过两个周期, 运算结果存入寄存器组。

  整个过程如图4 所示。

  从第一条指令输入到结果写入寄存器组共用了10 个流水线周期( 20 个时钟周期) 。考虑到指令串的流水化运行, 在大段程序中费时是指令输入的5 个流水线按周期。实际上, 在这5 个流水线周期中的2 个间隔周期并不必须为空, 只要与本条指令没有数据相关就可以, 例如进行两个存储器操作。这样最好情况下一个加法操作只需3 个流水线周期。

  5. 1. 2 分支跳转指令流

  分支跳转指令是高级语言中经常用到的关键语句。现在用跳转指令( JUMPI) 来构建条件跳转操作。分支跳转语句首先是要判断条件是否成立, 如果条件成立则顺序执行, 如果不成立则跳到下一程序块执行。编译成处理器的操作码后变为: 送条件; 进行比较,置标志位; 根据标志位跳转。在这种情况下, 实现一个无内容条件结构需要7 条语句( 7 个流水线周期) 。其中两个周期可以插入无关操作, 还有两个周期可以提前执行JUMPI 后续指令。所以最好情况下需要三个流水线周期完成。

  5. 1. 3 循环语句

  循环语句在高级语言中也是常用语句之一。它的实现与分支跳转类似, 同样是跳转指令的应用。

  循环语句中要定义一个条件变量, 通过循环体的运行改变条件变量的值, 完成后进行判断, 符合条件跳出循环体, 否则重新开始循环体。

  此种循环情况下, 循环结构共需7 条指令, 如条件允许优化NOP 指令, 最好情况下只需3 个流水线周期。在时序验证完成后, 笔者结合XILINX 公司的Virtex2 FPGA, 利用Synplify 7. 5 对设计进行了综合,综合报表显示时钟频率最高可到153 MHz

  5. 2 FPGA 实现

  将设计下载至FPGA , 笔者采用名为Chipscope Pr o Analyzer 的波形观察工具。Chipscope Pro 是采用JTAG 方式观察FPGA 内部的信号, 再反映到终端上,与板级验证方法原理一致, 而节省了板级布线时间。

  将Chipscope Pro 设置为arm( 伺机捕获) 状态, 当触发条件满足时捕获数据, 并且在缓冲区填满后停止捕获, 并将数据上传, 由波形窗口显示出来。

  触发条件( 复位后) 满足时捕获到的波形图如图5所示。所观察的数据共有16 , 其中port[ 0]2por t[ 7] 为存储器地址输出, port[ 8]2port[ 15] 为存储器数据输出。程序数我们前面所介绍过的加法操作, 并且在得到结果后利用STORE 指令输出到总线上。程序为:

  MOVD R2 1B

  MOVD R1 10B

  NOP

  NOP

  ADD R3 R2

  NOP

  NOP

  ST ORE 11110000B R3

  程序的操作是1 2, 结果为3, 将其送到11110000B 地址, 其后仿真波形如图6 所示。

  与FPGA 中结果完全相同。设计正确。

  6

  本文针对太阳能LED 照明控制系统设计了一款低功耗面积小的精简指令集处理器, 指令集共包含12 条指令。处理器综合频率达150 MHz, 实际在板最高工作频率为100 MHz。系统外设包括计时器和脉宽调制模块。能够实现系统所需功能, 完成控制器功能。待下一步进行系统统调后进行芯片后端设计。

相关推荐

告别寒冬 光伏业迎兼并重组热

光伏  太阳能  2013-12-25

光伏产业受政策刺激回暖 明年或继续增长

光伏  太阳能  2013-12-24

六光伏巨头三季度毛利率均增7.3%

光伏  太阳能  2013-12-03

应用材料业绩为正 但太阳能部门缩减

应用材料  太阳能  2013-11-22

李克强:鼓励民营和国外资本进入绿色能源产业

绿色能源  太阳能  2013-11-19

勤上光电获大连1980万元LED照明工程合同

勤上光电  LED照明  2013-11-12
在线研讨会
焦点