1.1k likes | 1.4k Views
软核处理器 PicoBlaze 原理及应用. 何宾 2011.09. 软核处理器 PicoBlaze 原理及应用 - 本章概述. 随着现场可编程门阵列功能不断增强,其应用范围扩 展到了片上可编程系统领域( System-On-a-Programmable- Chip,SOPC ), Xilinx 公司的嵌入式解决方案以四类 RISC 结构的微处理器为核心,涵盖了系统硬件设计和软件调试 的各个方面。 四类嵌入式内核分别为: PicoBlaze 、 MicroBlaze 、
E N D
软核处理器PicoBlaze原理及应用 何宾 2011.09
软核处理器PicoBlaze原理及应用-本章概述 • 随着现场可编程门阵列功能不断增强,其应用范围扩 • 展到了片上可编程系统领域(System-On-a-Programmable- • Chip,SOPC),Xilinx公司的嵌入式解决方案以四类RISC • 结构的微处理器为核心,涵盖了系统硬件设计和软件调试 • 的各个方面。 • 四类嵌入式内核分别为:PicoBlaze、MicroBlaze、 • PowerPC、ARM,其中PicoBlaze和MicroBlaze是可裁剪的 • 软核处理器,PowerPC和ARM为硬核处理器。
软核处理器PicoBlaze原理及应用-本章概述 • 本章以Xilinx公司8位微控制器PicoBlaze软核处理 • 器为核心,介绍了基于FPGA的片上可编程系统的原理 • 及实现方法。 • 通过本章内容的学习,重点掌握片上可编程系统 • 的本质,理解软件和硬件的协同设计的思想以及以软 • 件为中心的系统设计方法。
PicoBlaze的8位微控制器概述--Xilinx片上可编程系统解决方案PicoBlaze的8位微控制器概述--Xilinx片上可编程系统解决方案 Xilinx提供了基于以下嵌入式处理器的片上可编程 系统解决方案。 PicoBlaze8位嵌入式软核微控制器 PowerPC405/PowerPC440嵌入式硬核处理器 MicroBlaze32位嵌入式软核处理器 ARM嵌入式硬核处理器(未来,预计今年底)
片上可编程系统概论-片上MCU和专用MCU的比较 • 这儿有很多8位的微控制器结构和指令集。现在的 • FPGA能高效的实现任何8位的微控制器,并且可以使用 • FPGA软核支持流行的指令集,比如PIC,8051,AVR, • 6502,8080和Z80微控制器。为什么使用PicoBlaze微控制 • 器,而不使用更流行的指令集。 • PicoBlaze微控制器是专门为Sparan-3,Virtex-II和 • Virtex-II Pro FPGA结构设计和优化。它紧凑而强大的结 • 构,比可比较的流行的8位微控制器消耗更少的FPGA资 • 源。而且,PicoBlaze微控制器提供了在FPGA内可用的免 • 费,源码级的VHDL文件。
片上可编程系统概论-片上MCU和专用MCU的比较 • 一些独立的微控制器变种由于“过时”而导致“不好的 • 名声”。由于PicoBlaze提供VHDL源码,这样PicoBlaze微 • 控制器可以能未来的Xilinx FPGA芯片上,使得该控制器 • 对“过时”有更好的“免疫力”,并且可以进一步的降低成本 • 和扩展特性。 • 在PicoBlaze和MicoBlaze处理器出现前,微控制器存 • 在于FPGA外部,和其它FPGA的功能进行连接,这样就限 • 制了接口的整体性能。相比较之下,PicoBlaze微控制器充 • 分的嵌入在FPGA内,可以灵活的,片上连接其它的FPGA • 资源。在FPGA内保留的信号提高了整体的性能。由于使 • 用了集成在FPGA内的单片解决方案,PicoBlaze降低了系 • 统的成本。
片上可编程系统概论-片上MCU和专用MCU的比较 • PicoBlaze微控制有高效的资源,因此,复杂的应 • 用有时可以“分配”到多个PicoBlaze微控制器,其中的 • 每个微控制器实现一个特定的功能,比如,键盘和显 • 示控制,或者系统的管理。
片上可编程系统概论-片上MCU和片上逻辑的比较片上可编程系统概论-片上MCU和片上逻辑的比较 • 在实际中,微控制器和FPGA成功的实现了任何数 • 字逻辑功能。然而,在成本,性能和易用方面,它们 • 有自己独特的优势。微控制器很好的适用于控制应 • 用,特别是在较宽的变化要求方面。要求使用FPGA实 • 现微控制器是相对固定的。相同的FPGA逻辑可以被各 • 种微控制器指令“重用”。对程序存储器的要求随着复杂 • 度的增加而增加。 • 使用汇编代码对控制序列或者状态机编程比在 • FPGA逻辑内创建相同的结构要容易的很多。
片上可编程系统概论-片上MCU和片上逻辑的比较片上可编程系统概论-片上MCU和片上逻辑的比较 • 微控制器在性能方面受到限制。每个指令按顺序执 • 行。当一个应用的复杂度增加后,要求实现应用的指令 • 也会随着增加,系统性能就会相应的降低。相比较下, • 在一个FPGA内的性能是更加灵活的。 • 比如,根据性能的要求一个算法可以顺序或者完全 • 并行的实现。并行的实现速度会更快,但是会占用更多 • 的逻辑资源。
片上可编程系统概论-片上MCU和片上逻辑的比较片上可编程系统概论-片上MCU和片上逻辑的比较 • 嵌入在FPGA内的微控制器提供了最好的解决方案。 • 在FPGA内的微控制器实现非“苛刻”时序要求的复杂控制 • 功能,可以用其它FPGA逻辑更好的实现“苛刻”时序或数 • 据通道功能。比如,一个微控制器不能响应ms级内的事 • 件,而FPGA逻辑在几十个ns时间内,能响应多个同步事 • 件。反过来,一个微控制器在执行格式或者协议转换方面 • 成本较低,并且比较简单。 • 表10.1给出了PicoBlaze微控制器和FPGA逻辑在各方 • 面进行比较的优势和缺点。
片上可编程系统概论-片上MCU和片上逻辑的比较片上可编程系统概论-片上MCU和片上逻辑的比较
PicoBlaze的8位微控制器概述--主要特点 Xilinx的 PicoBlaze是一个8位RISC(精简指令集计 算机 )的微控制器, 已经被专门设计和优化,用于 Xilinx的Virtex和Spartan系列的FPGA和CoolRunner-II CPLD器件。 PicoBlaze比现有的8位的微控制器消耗的资源更少, 并且提供了免费的、源码级的VHDL代码。
PicoBlaze的简单处理解决方案--主要优点 1.免费的PicroBlaze核 所得到的PicoBlaze微控制器是一个可综合的VHDL 源代码。所以,该核可以移植到Xilinx的未来的产品 上。 2. 容易使用的汇编器 PicoBlaze的汇编器是一个简单的DOS程序,该汇编器 编译程序时间小于3秒,产生VHDL,Verilog和M(用于 System Generator)文件。其它的开发工具包括图形化的集 成开发环境IDE,图形化的指令集仿真器ISS,VHDL源代码 和仿真模型。
PicoBlaze的简单处理解决方案--主要优点 3. 高性能 PicoBlaze每秒传递44-100 million指令(取决于 FPGA的类型和速度等级),比商业上可用的微控制器快 好几倍。 4. 较小的逻辑消耗 PicoBlaze消耗192个逻辑单元,比如大约消耗 Spartan-3 XC3S200器件5%的逻辑单元。由于只占用很小 部分的FPGA和CPLD资源,工程师可以使用多个PicoBlaze 用于处理更长的任务或者保持任务的隔离和可预测。
PicoBlaze的简单处理解决方案--主要优点 5. 100%嵌入式能力 PicoBlaze核嵌在FPGA或CPLD内部,不需要外部的资 源。通过将额外的逻辑和微控制器的输入和输入端口连 接后,可扩展其基本功能。
PicoBlaze的一个实例--KCPSM3结构原理图(可编程的状态机)PicoBlaze的一个实例--KCPSM3结构原理图(可编程的状态机)
PicoBlaze的一个实例--KCPSM3内部详细结构 程序空间 KCPSM3支持程序的指令可以到1024(使用一个 BRAM),多个KCPSM3处理器可以用于处理不同的任 务。 16个通用寄存器 16个8位的通用寄存器,标号s0-sF(在汇编器中可能 被重新命名)。所有的操作所使用的寄存器是非常灵活 的(没有专用的或优先级)。在KCPSM3中没有累加器, 任何一个寄存器都可作累加器。
PicoBlaze的一个实例--KCPSM3内部详细结构 ALU 提供很多简单的操作,所有操作使用一个来自sX的操作数。结果返回到该寄存器。对需要两个操作数的操 作,第二个操作数来自sY寄存器或8位常数kk。 ADD和SUB操作可以包含进位标志作为一个输入 (ADDCY和SUBCY),用于支持宽度大于8的算术 操作; LOAD,AND,OR,XOR提供了位操作和测试功能,支 持SHIFT和ROTATE操作; COMPARE和TEST指令可以测试寄存器的内容(不 改变其内容),确定奇偶性PARITY;
PicoBlaze的一个实例--KCPSM3内部详细结构 标志和程序流控制 ALU的运算结果影响ZERO和CARRY标志位。CARRY 也可以用于捕获在移位和旋转指令操作时,位移出寄存 器的操作。在TEST指令,CARRY标志也用来标识,是 否8位的暂时结果是ODD PARITY(奇校验)。 这个标志也用来确定程序的执行序列。JUMP跳转到 程序空间的绝对地址,CALL和RETURN提供了自程序 功能(代码段)。堆栈支持31个嵌套的子程序级。
PicoBlaze的一个实例--KCPSM3内部详细结构 复位 处理器返回到初始状态。程序从000开始,禁止中断, 状态标志和CALL/RETURN栈复位。不影响寄存器内容。 输入/输出 支持最多256个输入和256个输出端口。使用PORT_ID 访问8位的地址端口。端口值可以在程序中用用绝对值pp 来指定,或者用16寄存器的任何一个((sY))来指定。
PicoBlaze的一个实例--KCPSM3内部详细结构 INPUT操作,将端口值送到任何一个寄存器中,输 入操作用一个READ_STROBE脉冲标识(不总是需的), 但可以指示数据被处理器接收到。 OUTPUT操作,将任何一个寄存器送到端口值中,输 出操作用一个WRITE_STROBE脉冲标识,该信号被接口 逻辑用来保证有效的数据被送到外部的系统。典型的, WRITE_STROBE用于时钟的使能或写使能。
PicoBlaze的一个实例--KCPSM3内部详细结构 内嵌存储器 有一个内部的64字节的通用存储器,可以使用STORE 指令将16个寄存器中的任意一个寄存器的内容写入64个地 址位置中,FETCH指令将存储器中任一个位置的内容写入 到16个寄存器中的任意一个寄存器中。这允许在处理器边 界内可以保持有更多的变量,也用于保留所有的I/O空间 用于输入和输出信号。
PicoBlaze的一个实例--KCPSM3内部详细结构 处理器提供单独的INTERRUPT信号,如果需要,可以 使用一个简单的逻辑连接多个信号。默认禁止中断,在程 序中可以使能/禁止中断。活动的中断,使KCPSM3初始 化“CALL 3FF”(一个子程序调用最后的存储器位置),这里定义了用户定义的跳转向量到中断服务程序ISR。 INTERRUPT_ACK输出产生脉冲。ZERO和CARRY自 动的被保护,禁止其它中断。“RETURNI”指令保证ISR的结束,回复状态标志,并说明使能/禁止未来的中断。 中断
PicoBlaze的一个实例--KCPSM3与程序ROM连接VHDL描述 注: 程序ROM的名字取决于用户程序的名字,比如如果 程序文件叫“phone.psm”,汇编器将产生程序ROM的定义 文件叫“phone.vhd”。
PicoBlaze指令集(需要2个周期)--程序控制组 JUMP aaa JUMP Z,aaa JUMP NZ,aaa JUMP C,aaa JUMP NC,aaa RETURN RETURN Z RETURN NZ RETURN C RETURN NC CALL aaa CALL Z,aaa CALL NZ,aaa CALL C,aaa CALL NC,aaa
PicoBlaze指令集(需要2个周期)--逻辑组 --算术运算组 ADD sX,kk ADDCY sX,kk SUB sX,kk SUBCY sX,kk COMPARE sX,kk ADD sX,sY ADDCY sX,sY SUB sX,sY SUBCY sX,Sy COMPARE sX,sY LOAD sX,kk AND sX,kk OR sX,kk XOR sX,kk TEST sX,kk LOAD sX,sY AND sX,sY OR sX,sY XOR sX,sY TEST sX,sY
PicoBlaze指令集(需要2个周期)--中断组 --存储组 RETURNI ENABLE RETURNI DISABLE ENABLE INTERRUPT DISABLE INTERRUPT STORE sX,ss STORE sX,(sY) FETCH sX,ss FETCH sX,(sY)
PicoBlaze指令集(需要2个周期)--移位和旋转组 --输入/输出组 SR0 sX SR1 sX SRX sX SRA sX RR sX SL0 sX SL1 sX SLX sX SLA sX RL sX INPUT sX,pp INPUT sX,(sY) OUTPUT sX,pp OUTPUT sX,(sY)
KCPSM3 汇编器--原理及操作 KCPSM3汇编器提供一个简单的DOS可执行文件和 三个模版文件,将KCPSM3.EXE, ROM_form.vhd,ROM _form.v和ROM_form.coe文件复制到工作目录下。 程序可用标准的Notepad和Wordpad工具编写,文件扩展名为.psm(8字符名字限制)。 打开一个DOS对话框,并定位到当前的工作路径下。然后运行汇编器“kcpsm3<filename>[.psm]”来汇编所编写的程序(运行速度很快)。
KCPSM3 汇编器--错误处理 当遇到错误时,汇编器将停下来。将显示一个短消 息来帮助判断引起错误的原因。汇编器将显示遇到问题 的行。设计者然后修改错误重新运行汇编器程序。
KCPSM3 汇编器--文件组成 KCPSM3汇编器使用4个输入文件,产生15个输出文 件。下面给出详细的说明。