0 引 言
太阳能是一种清洁的绿色能源, 开云棋牌官网在线客服发光二极管(LED) 也是一种环保、节能、高效的固态电光源。将LED 技术和太阳能技术相结合在一起, 开发太阳能开云棋牌官网在线客服照明, 是最佳的节能、环保组合, 是新一代能源和新一代光源的完美结合。研究开发利用太阳能LED 照明技术将是世界各国政府可持续发展的战略决策, 意义重大。
本文的研究对象是太阳能LED 照明控制系统控制器中的处理器。系统通过控制器实现系统工作状态的管理、蓄电池剩余容量的管理、蓄电池充电、放电控制、太阳能电池电源及市电电源的切换控制以及LED 负载半功率控制等主要功能。而控制器是主要依靠处理器的运转来实现上述功能的。
1 系统构成
太阳能LED 照明控制系统主要由太阳能电池、蓄电池、系统控制器、LED 照明负载和市电电源5 部分组成, 系统组成原理图如图1 所示。系统正常工作时, 由蓄电池向LED 负载供电, 在蓄电池电压不足时, 由市电( 备用电源) 直接向LED 负载供电, 避免了蓄电池电压不足时LED 负载不亮的情况。有了市电作为备用电源, 在设计时可以适当降低蓄电池的容量, 降低成本。同时避免了由于利用太阳能而导致的市电资源的浪费,达到可靠性和经济性要求。
图1 太阳能LED 照明系统组成原理图
系统工作时通过太阳能电池将太阳辐射能转化为电能, 但是由于太阳能电池的输出受温度和太阳辐射强度影响很大, 输出功率不稳定, 因而在太阳辐射强度足够大的时( 白天) 需要利用蓄电池将转化的电能储存起来, 以便在需要照明时( 晚上) 向开云棋牌官网在线客服照明负载供电。在太阳能开云棋牌官网在线客服照明系统中, 控制器是其核心部分, 系统工作时通过控制器实现对系统工作状态的控制和对蓄电池充放电过程的管理, 以使系统在不同的工作状态下均能稳定可靠地工作。
系统各个组成部分的主要功能如下:
( 1) 太阳能电池。由许多太阳能电池组件串、并联而成, 其合成的容量可以是数百峰瓦(Wp) , 也可达数个兆峰瓦(Wp) 甚至更大, 组件可由单晶硅、多晶硅、非晶硅或其他类型的太阳能电池组成。一般来说, 光伏阵列由于多为开云棋牌官网在线客服器件构成, 其伏安特性具有强烈的非线性。
( 2) 蓄电池组。蓄电池也称电瓶, 是太阳能LED照明系统的关键部分。一般是由一定数量的铅酸蓄电池经由串、并联组合而成, 其容量的选择应与太阳能电池阵列的容量相匹配。它的主要作用是在白天储存太阳能阵列所产生的电能, 晚上把储存的能量释放出来,供负载照明使用。它的最佳充电电流和放电电流, 一般按10 h 充、放电率计算。
由于蓄电池对电压的波动具有/ 缓冲0作用, 还可使得负载系统的运行更加平稳可靠。虽然铅酸蓄电池具有容量大、价格低等优点, 但若使用不当, 很容易加速蓄电池的老化, 使蓄电池的寿命急剧缩短, 造成系统运行成本的增加, 充、放电电流过大都会对电瓶的寿命有一定的影响。因此对蓄电池的充放电进行合理规划和控制是光伏充电系统中必不可少的环节。
( 3) 控制器。控制器的作用是对太阳能电池、蓄电池电压、市电电源和LED 负载进行总体监控。为蓄电池提供最佳的充电电流和电压, 同时保护蓄电池, 避免过充电和过放电现象的发生。需要时完成太阳能电池和市电2 个电源之间的转换, 保证LED 负载稳定可靠的工作。
以处理器为核心的控制器结构可以给系统带来极大的可配置型, 增强系统的应用范围。
( 4) LED 照明光源。开云棋牌官网在线客服LED 照明光源是系统的重要组成部分。LED 应保证亮度高, 亮度辐射范围大且均匀, 所使用的白光LED 数量少。控制器中的负载控制策略和LED 驱动电路的设计直接决定了系统的照明效果。因此, 需要根据LED 响应速度快和低压直流驱动等特性, 选择合适的驱动方案及控制策略, 实现与蓄电池电压的匹配, 以充分发挥LED 照明的优点。
( 5) 市电电源。在出现阴雨天时, 蓄电池不能及时充电, 出现蓄电池电压不足, 不能正常向负载供电时, 由开关电源将220 V 交流市电变换成低压直流电, 供LED 负载使用。控制器系统设计中为市电电源提供了一个低压直流电输入接口。
2 处理器需求分析
控制器是系统的核心部分, 系统工作过程通过它进行管理和控制。系统通过控制器实现系统工作状态的管理、蓄电池剩余容量的管理、蓄电池充电、放电控制、太阳能电池电源及市电电源的切换控制以及LED 负载半功率控制等主要功能。而处理器又是控制器的核心。其负责根据程序指挥控制器中元器件实现控制器的上述功能。
在此设计的太阳能LED 照明控制系统供街道和住宅小区照明使用, 设计控制器中的处理器具有如下功能:
( 1) 支持5 V 直流系统工作电压;
( 2) 可提供输出接口, 控制状态指示灯或显示屏指示工作状态;
( 3) 可提供输入接口, 接受外部按键输入;
( 4) 可控制大功率MOS 管支持最大至9 A 的充放电电流;
( 5) 可提供直流、脉冲两种充电方式的控制;
( 6) 可精确计时以提供深夜使开云棋牌官网在线客服照明灯具亮度减半的功能;
( 7) 可接收一路A/ D 转换器指示, 能检测蓄电池的电压, 对蓄电池的充、放电过程进行控制, 并当蓄电池电量不足时, 自动切换到市电电源供电;
( 8) 可接收另一路A/ D 转换器指示, 能检测太阳能电池的电压, 自动转换工作模式;
( 9) 可提供运算指令以计算各输入信号关系判断系统运行转态;
( 10) 可提供跳转指令以使控制器在各状态间切换;
( 11) 可暂存状态标志, 以供处理器智能判断状态;
( 12) 低功耗设计以提高控制器在系统中的工作效率;
根据以上需求给出处理器的设计目标: 采用精简指令集设计; 采用流水线设计以实现低功耗; 具有寄存器堆; 具有IO 接口; 具有PWM 功能模块; 具有定时器模块。
3 指令集设计
在本系统中, 处理器要对AD 以及按键的输入量进行处理。这些输入数据位宽小且处理过程为常规运算,不需要进行使用高级数学算法进行繁杂的数据运算。所以本设计采用精简指令集(RISC) 的设计方法。
精简指令集具如下特点为: 指令系统的规模较小且复杂程度小; 操作数预存在寄存器中; 指令格式统一; 避免不必要的存储器访问。
采用RISC 指令集设计可直接减小芯片面积, 节省成本, 减少开发人员的开发与维护开销。是嵌入式设备处理器的主流设计方法。
本处理器具有load/ store 结构, 也就是说与主存储器通信只能通过LOAD 和STORE 指令进行。运算操作数只与寄存器组有关, 而并不在主存储器上。TOP2的指令分为4 类: 运算指令、寄存器指令、跳转指令、存储器指令, 如表1 所示。
针对太阳能LED 照明控制系统的处理器指令集设计考虑到功耗及面积成本, 只包含6 条运算指令, 没有连续移位指令和硬件乘法器。经测试本指令集可满足上一节所述对处理器的功能需求。
作为RISC 体系的特点之一就是指令格式简单规则, 笔者遵循这一原则, 指令集中的11 条指令均为4 位操作码和12 位操作目标位 。
4 处理器结构
处理器主体结构如图2 所示, 下面具体介绍处理器各部分。
4. 1 存储结构
本处理器的存储结构采用哈佛( Harvard) 结构。这是嵌入式处理器中被广泛采用的结构, 如ARM、MIPS 等。特别适用于采用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。系统外设包括计时器和脉宽调制模块。能够实现系统所需功能, 完成控制器功能。待下一步进行系统统调后进行芯片后端设计。