基于太阳能LED照明控制系统的处理器设计
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 指令不能马上进入流水线执行。
评论