新闻中心

EEPW首页 > 光电显示 > 设计应用 > 基于太阳能LED照明控制系统的处理器设计

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

作者: 时间:2010-11-15 来源:网络 收藏

  当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 结 语

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


上一页 1 2 3 下一页

关键词: LED 照明

评论


相关推荐

技术专区

关闭