110
软软软软软 软软软软软 PicoBlaze PicoBlaze 软软软软软 软软软软软 何何 何何 2011.09 2011.09

软核处理器 PicoBlaze 原理及应用

  • Upload
    manasa

  • View
    113

  • Download
    7

Embed Size (px)

DESCRIPTION

软核处理器 PicoBlaze 原理及应用. 何宾 2011.09. 软核处理器 PicoBlaze 原理及应用 - 本章概述. 随着现场可编程门阵列功能不断增强,其应用范围扩 展到了片上可编程系统领域( System-On-a-Programmable- Chip,SOPC ), Xilinx 公司的嵌入式解决方案以四类 RISC 结构的微处理器为核心,涵盖了系统硬件设计和软件调试 的各个方面。 四类嵌入式内核分别为: PicoBlaze 、 MicroBlaze 、 - PowerPoint PPT Presentation

Citation preview

Page 1: 软核处理器 PicoBlaze 原理及应用

软核处理器软核处理器 PicoBlazePicoBlaze原理及应用原理及应用

何宾何宾2011.092011.09

Page 2: 软核处理器 PicoBlaze 原理及应用

软核处理器软核处理器 PicoBlazePicoBlaze 原理及应用原理及应用 -- 本章概本章概述述

随着现场可编程门阵列功能不断增强,其应用范围扩随着现场可编程门阵列功能不断增强,其应用范围扩展到了片上可编程系统领域(展到了片上可编程系统领域( System-On-a-Programmable-System-On-a-Programmable-Chip,SOPCChip,SOPC ),), XilinxXilinx 公司的嵌入式解决方案以四类公司的嵌入式解决方案以四类 RISCRISC结构的微处理器为核心,涵盖了系统硬件设计和软件调试结构的微处理器为核心,涵盖了系统硬件设计和软件调试的各个方面。的各个方面。 四类嵌入式内核分别为:四类嵌入式内核分别为: PicoBlazePicoBlaze 、、 MicroBlazeMicroBlaze 、、PowerPCPowerPC 、、 ARMARM ,其中,其中 PicoBlazePicoBlaze 和和 MicroBlazeMicroBlaze 是可裁剪是可裁剪

的的软核处理器,软核处理器, PowerPCPowerPC 和和 ARMARM 为硬核处理器。为硬核处理器。

Page 3: 软核处理器 PicoBlaze 原理及应用

软核处理器软核处理器 PicoBlazePicoBlaze 原理及应用原理及应用 -- 本章概本章概述述 本章以本章以 XilinxXilinx 公司公司 88 位微控制器位微控制器 PicoBlazePicoBlaze 软核处软核处

理理器为核心,介绍了基于器为核心,介绍了基于 FPGAFPGA 的片上可编程系统的原的片上可编程系统的原

理理及实现方法。及实现方法。 通过本章内容的学习,重点掌握片上可编程系统通过本章内容的学习,重点掌握片上可编程系统的本质,理解软件和硬件的协同设计的思想以及以软的本质,理解软件和硬件的协同设计的思想以及以软件为中心的系统设计方法。件为中心的系统设计方法。

Page 4: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的的 88 位微控制器概述位微控制器概述--Xilinx--Xilinx 片上可编程系统解决方案片上可编程系统解决方案

XilinxXilinx 提供了基于以下嵌入式处理器的片上可编程提供了基于以下嵌入式处理器的片上可编程系统解决方案。 系统解决方案。 PicoBlaze8PicoBlaze8 位嵌入式软核微控制器位嵌入式软核微控制器PowerPC405/PowerPC440PowerPC405/PowerPC440 嵌入式硬核处理器嵌入式硬核处理器MicroBlaze32MicroBlaze32 位嵌入式软核处理器位嵌入式软核处理器ARMARM 嵌入式硬核处理器(未来,预计今年底)嵌入式硬核处理器(未来,预计今年底)

Page 5: 软核处理器 PicoBlaze 原理及应用

片上可编程系统概论片上可编程系统概论-- 片上片上 MCUMCU 和专用和专用 MCUMCU 的比较的比较

这儿有很多这儿有很多 88 位的微控制器结构和指令集。现在的位的微控制器结构和指令集。现在的FPGAFPGA 能高效的实现任何能高效的实现任何 88 位的微控制器,并且可以使用位的微控制器,并且可以使用FPGAFPGA 软核支持流行的指令集,比如软核支持流行的指令集,比如 PICPIC ,, 80518051 ,, AVRAVR ,,65026502 ,, 80808080 和和 Z80Z80 微控制器。为什么使用微控制器。为什么使用 PicoBlazePicoBlaze 微控制微控制器,而不使用更流行的指令集。器,而不使用更流行的指令集。 PicoBlazePicoBlaze 微控制器是专门为微控制器是专门为 Sparan-3Sparan-3 ,, Virtex-IIVirtex-II 和和Virtex-II Pro FPGAVirtex-II Pro FPGA 结构设计和优化。它紧凑而强大的结结构设计和优化。它紧凑而强大的结构,比可比较的流行的构,比可比较的流行的 88 位微控制器消耗更少的位微控制器消耗更少的 FPGAFPGA 资资源。而且,源。而且, PicoBlazePicoBlaze 微控制器提供了在微控制器提供了在 FPGAFPGA 内可用的免内可用的免费,源码级的费,源码级的 VHDLVHDL 文件。文件。

Page 6: 软核处理器 PicoBlaze 原理及应用

片上可编程系统概论片上可编程系统概论-- 片上片上 MCUMCU 和专用和专用 MCUMCU 的比较的比较

一些独立的微控制器变种由于“过时”而导致“不好的一些独立的微控制器变种由于“过时”而导致“不好的名声”。由于名声”。由于 PicoBlazePicoBlaze 提供提供 VHDLVHDL 源码,这样源码,这样 PicoBlazePicoBlaze 微微控制器可以能未来的控制器可以能未来的 Xilinx FPGAXilinx FPGA 芯片上,使得该控制器芯片上,使得该控制器对“过时”有更好的“免疫力”,并且可以进一步的降低成对“过时”有更好的“免疫力”,并且可以进一步的降低成

本本和扩展特性。和扩展特性。 在在 PicoBlazePicoBlaze 和和 MicoBlazeMicoBlaze 处理器出现前,微控制器存处理器出现前,微控制器存在于在于 FPGAFPGA 外部,和其它外部,和其它 FPGAFPGA 的功能进行连接,这样就限的功能进行连接,这样就限制了接口的整体性能。相比较之下,制了接口的整体性能。相比较之下, PicoBlazePicoBlaze 微控制器充微控制器充分的嵌入在分的嵌入在 FPGAFPGA 内,可以灵活的,片上连接其它的内,可以灵活的,片上连接其它的 FPGAFPGA

资源。在资源。在 FPGAFPGA 内保留的信号提高了整体的性能。由于使内保留的信号提高了整体的性能。由于使用了集成在用了集成在 FPGAFPGA 内的单片解决方案,内的单片解决方案, PicoBlazePicoBlaze 降低了系降低了系统的成本。统的成本。

Page 7: 软核处理器 PicoBlaze 原理及应用

片上可编程系统概论片上可编程系统概论-- 片上片上 MCUMCU 和专用和专用 MCUMCU 的比较的比较

PicoBlazePicoBlaze 微控制有高效的资源,因此,复杂的应微控制有高效的资源,因此,复杂的应用有时可以“分配”到多个用有时可以“分配”到多个 PicoBlazePicoBlaze 微控制器,其中微控制器,其中

的的每个微控制器实现一个特定的功能,比如,键盘和显每个微控制器实现一个特定的功能,比如,键盘和显示控制,或者系统的管理。示控制,或者系统的管理。

Page 8: 软核处理器 PicoBlaze 原理及应用

片上可编程系统概论片上可编程系统概论-- 片上片上 MCUMCU 和片上逻辑的比较和片上逻辑的比较

在实际中,微控制器和在实际中,微控制器和 FPGAFPGA 成功的实现了任何数成功的实现了任何数字逻辑功能。然而,在成本,性能和易用方面,它们字逻辑功能。然而,在成本,性能和易用方面,它们有自己独特的优势。微控制器很好的适用于控制应有自己独特的优势。微控制器很好的适用于控制应用,特别是在较宽的变化要求方面。要求使用用,特别是在较宽的变化要求方面。要求使用 FPGAFPGA 实实现微控制器是相对固定的。相同的现微控制器是相对固定的。相同的 FPGAFPGA 逻辑可以被各逻辑可以被各种微控制器指令“重用”。对程序存储器的要求随着复种微控制器指令“重用”。对程序存储器的要求随着复

杂杂度的增加而增加。度的增加而增加。 使用汇编代码对控制序列或者状态机编程比在使用汇编代码对控制序列或者状态机编程比在FPGAFPGA 逻辑内创建相同的结构要容易的很多。逻辑内创建相同的结构要容易的很多。

Page 9: 软核处理器 PicoBlaze 原理及应用

片上可编程系统概论片上可编程系统概论-- 片上片上 MCUMCU 和片上逻辑的比较和片上逻辑的比较

微控制器在性能方面受到限制。每个指令按顺序执微控制器在性能方面受到限制。每个指令按顺序执行。当一个应用的复杂度增加后,要求实现应用的指令行。当一个应用的复杂度增加后,要求实现应用的指令也会随着增加,系统性能就会相应的降低。相比较下,也会随着增加,系统性能就会相应的降低。相比较下,在一个在一个 FPGAFPGA 内的性能是更加灵活的。内的性能是更加灵活的。 比如,根据性能的要求一个算法可以顺序或者完全比如,根据性能的要求一个算法可以顺序或者完全并行的实现。并行的实现速度会更快,但是会占用更多并行的实现。并行的实现速度会更快,但是会占用更多的逻辑资源。的逻辑资源。

Page 10: 软核处理器 PicoBlaze 原理及应用

片上可编程系统概论片上可编程系统概论-- 片上片上 MCUMCU 和片上逻辑的比较和片上逻辑的比较

嵌入在嵌入在 FPGAFPGA 内的微控制器提供了最好的解决方案。内的微控制器提供了最好的解决方案。在在 FPGAFPGA 内的微控制器实现非“苛刻”时序要求的复杂控制内的微控制器实现非“苛刻”时序要求的复杂控制功能,可以用其它功能,可以用其它 FPGAFPGA 逻辑更好的实现“苛刻”时序或数逻辑更好的实现“苛刻”时序或数据通道功能。比如,一个微控制器不能响应据通道功能。比如,一个微控制器不能响应 msms 级内的事级内的事件,而件,而 FPGAFPGA 逻辑在几十个逻辑在几十个 nsns 时间内,能响应多个同步事时间内,能响应多个同步事件。反过来,一个微控制器在执行格式或者协议转换方面件。反过来,一个微控制器在执行格式或者协议转换方面成本较低,并且比较简单。成本较低,并且比较简单。 表表 10.110.1给出了给出了 PicoBlazePicoBlaze 微控制器和微控制器和 FPGAFPGA 逻辑在各方逻辑在各方面进行比较的优势和缺点。面进行比较的优势和缺点。

Page 11: 软核处理器 PicoBlaze 原理及应用

片上可编程系统概论片上可编程系统概论-- 片上片上 MCUMCU 和片上逻辑的比较和片上逻辑的比较

Page 12: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的的 88 位微控制器概述位微控制器概述---- 主要特点主要特点

XilinxXilinx 的 的 PicoBlazePicoBlaze 是一个是一个 88 位位 RISCRISC ((精简指令集精简指令集计计算机 算机 )的微控制器, 已经被专门设计和优化,用于)的微控制器, 已经被专门设计和优化,用于XilinxXilinx 的的 VirtexVirtex 和和 SpartanSpartan 系列的系列的 FPGAFPGA 和和 CoolRunner-II CoolRunner-II

CPLDCPLD 器件。器件。 PicoBlazePicoBlaze 比现有的比现有的 88 位的微控制器消耗的资源更少,位的微控制器消耗的资源更少,并且提供了免费的、源码级的并且提供了免费的、源码级的 VHDLVHDL 代码。代码。

Page 13: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的简单处理解决方案的简单处理解决方案---- 主要优点主要优点

1.1. 免费的免费的 PicroBlazePicroBlaze 核核 所得到的所得到的 PicoBlazePicoBlaze 微控制器是一个可综合的微控制器是一个可综合的 VHDLVHDL

源代码。所以,该核可以移植到源代码。所以,该核可以移植到 XilinxXilinx 的未来的产品的未来的产品上。上。 2. 2. 容易使用的汇编器容易使用的汇编器 PicoBlazePicoBlaze 的汇编器是一个简单的的汇编器是一个简单的 DOSDOS 程序,该汇编程序,该汇编

器器编译程序时间小于编译程序时间小于 33秒,产生秒,产生 VHDLVHDL ,, VerilogVerilog 和和 MM (用(用

于于System GeneratorSystem Generator )文件。其它的开发工具包括图形化的)文件。其它的开发工具包括图形化的

集集成开发环境成开发环境 IDE,IDE,图形化的指令集仿真器图形化的指令集仿真器 ISSISS ,, VHDLVHDL 源源

代码代码和仿真模型。和仿真模型。

Page 14: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的简单处理解决方案的简单处理解决方案 ---- 主要优点主要优点

3. 3. 高性能高性能 PicoBlazePicoBlaze 每秒传递每秒传递 44-100 million44-100 million 指令(取决于指令(取决于FPGAFPGA 的类型和速度等级)的类型和速度等级) ,, 比商业上可用的微控制器快比商业上可用的微控制器快好几倍。好几倍。 4. 4. 较小的逻辑消耗较小的逻辑消耗 PicoBlazePicoBlaze 消耗消耗 192192 个逻辑单元,比如大约消耗个逻辑单元,比如大约消耗Spartan-3 XC3S200Spartan-3 XC3S200 器件器件 5%5% 的逻辑单元。由于只占用很小的逻辑单元。由于只占用很小部分的部分的 FPGAFPGA 和和 CPLDCPLD 资源,工程师可以使用多个资源,工程师可以使用多个

PicoBlazePicoBlaze

用于处理更长的任务或者保持任务的隔离和可预测。用于处理更长的任务或者保持任务的隔离和可预测。

Page 15: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的简单处理解决方案的简单处理解决方案 ---- 主要优点主要优点

5. 100%5. 100% 嵌入式能力嵌入式能力 PicoBlazePicoBlaze 核嵌在核嵌在 FPGAFPGA 或或 CPLDCPLD 内部,不需要外部内部,不需要外部

的资的资源。通过将额外的逻辑和微控制器的输入和输入端口连源。通过将额外的逻辑和微控制器的输入和输入端口连接后,可扩展其基本功能。接后,可扩展其基本功能。

Page 16: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例 --KCPSM3--KCPSM3 结构原理图(可编程的状态机)结构原理图(可编程的状态机)

Page 17: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例 --KCPSM3--KCPSM3 内部详细结构内部详细结构

程序空间程序空间 KCPSM3KCPSM3 支持程序的指令可以到支持程序的指令可以到 10241024 (使用一个(使用一个BRAMBRAM ),多个),多个 KCPSM3KCPSM3 处理器可以用于处理不同的任处理器可以用于处理不同的任务。务。1616 个通用寄存器个通用寄存器 1616 个个 88 位的通用寄存器,标号位的通用寄存器,标号 s0-sFs0-sF (在汇编器中可(在汇编器中可

能能被重新命名)。所有的操作所使用的寄存器是非常灵活被重新命名)。所有的操作所使用的寄存器是非常灵活的(没有专用的或优先级)。在的(没有专用的或优先级)。在 KCPSM3KCPSM3 中没有累加中没有累加

器器 ,,

任何一个寄存器都可作累加器。任何一个寄存器都可作累加器。

Page 18: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 内部详细结构内部详细结构

ALUALU 提供很多简单的操作,所有操作使用一个来自提供很多简单的操作,所有操作使用一个来自 sXsX

的的操作数。结果返回到该寄存器。对需要两个操作数的操操作数。结果返回到该寄存器。对需要两个操作数的操 作,第二个操作数来自作,第二个操作数来自 sYsY寄存器或寄存器或 88 位常数位常数 kkkk 。。

ADDADD 和和 SUBSUB操作可以包含进位标志作为一个输入操作可以包含进位标志作为一个输入 (ADDCY(ADDCY 和和 SUBCY)SUBCY) ,用于支持宽度大于,用于支持宽度大于 88 的算的算术 术

操作;操作; LOAD,AND,OR,XORLOAD,AND,OR,XOR 提供了位操作和测试功能提供了位操作和测试功能 ,,

支支 持持 SHIFTSHIFT 和和 ROTATEROTATE操作;操作;

COMPARECOMPARE 和和 TESTTEST 指令可以测试寄存器的内容指令可以测试寄存器的内容(( 不不

改变其内容),确定奇偶性改变其内容),确定奇偶性 PARITYPARITY;;

Page 19: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例 --KCPSM3--KCPSM3 内部详细结构内部详细结构

标志和程序流控制标志和程序流控制 ALUALU 的运算结果影响的运算结果影响 ZEROZERO 和和 CARRYCARRY标志标志

位。位。 CARRYCARRY

也可以用于捕获在移位和旋转指令操作时,位移出寄存也可以用于捕获在移位和旋转指令操作时,位移出寄存器的操作。在器的操作。在 TESTTEST 指令,指令, CARRYCARRY标志也用来标识,是标志也用来标识,是否否 88 位的暂时结果是位的暂时结果是 ODD PARITY(ODD PARITY(奇校验奇校验 )) 。。 这个标志也用来确定程序的执行序列。这个标志也用来确定程序的执行序列。 JUMPJUMP跳转到跳转到程序空间的绝对地址,程序空间的绝对地址, CALLCALL 和和 RETURNRETURN 提供了自程序提供了自程序功能(代码段)。堆栈支持功能(代码段)。堆栈支持 3131 个嵌套的子程序级。个嵌套的子程序级。

Page 20: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 内部详细结构内部详细结构

复位复位 处理器返回到初始状态。程序从处理器返回到初始状态。程序从 000000开始,禁止中断,开始,禁止中断,状态标志和状态标志和 CALL/RETURNCALL/RETURN栈复位。不影响寄存器内容。栈复位。不影响寄存器内容。输入输入 // 输出输出 支持最多支持最多 256256 个输入和个输入和 256256 个输出端口。使用个输出端口。使用

PORT_IDPORT_ID

访问访问 88 位的地址端口。端口值可以在程序中用用绝对值位的地址端口。端口值可以在程序中用用绝对值 pppp

来指定,或者用来指定,或者用 1616寄存器的任何一个寄存器的任何一个 ((sY))((sY)) 来指定。来指定。

Page 21: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 内部详细结构内部详细结构

INPUTINPUT操作,将端口值送到任何一个寄存器中,输操作,将端口值送到任何一个寄存器中,输入操作用一个入操作用一个 READ_STROBEREAD_STROBE脉冲标识脉冲标识 (( 不总是需的)不总是需的),,但可以指示数据被处理器接收到。但可以指示数据被处理器接收到。

OUTPUTOUTPUT操作,将任何一个寄存器送到端口值中,操作,将任何一个寄存器送到端口值中,输输

出操作用一个出操作用一个 WRITE_STROBEWRITE_STROBE脉冲标识,该信号被接口脉冲标识,该信号被接口逻辑用来保证有效的数据被送到外部的系统。典型的,逻辑用来保证有效的数据被送到外部的系统。典型的,WRITE_STROBEWRITE_STROBE 用于时钟的使能或写使能。用于时钟的使能或写使能。

Page 22: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 内部详细结构内部详细结构

内嵌存储器内嵌存储器 有一个内部的有一个内部的 6464 字节的通用存储器,可以使用字节的通用存储器,可以使用

STORESTORE

指令将指令将 1616 个寄存器中的任意一个寄存器的内容写入个寄存器中的任意一个寄存器的内容写入 6464 个个地地址位置中,址位置中, FETCHFETCH 指令将存储器中任一个位置的内容写指令将存储器中任一个位置的内容写

入入到到 1616 个寄存器中的任意一个寄存器中。这允许在处理器个寄存器中的任意一个寄存器中。这允许在处理器边边界内可以保持有更多的变量,也用于保留所有的界内可以保持有更多的变量,也用于保留所有的 I/OI/O空间空间用于输入和输出信号。用于输入和输出信号。

Page 23: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 内部详细结构内部详细结构

处理器提供单独的处理器提供单独的 INTERRUPTINTERRUPT 信号,如果需要,可信号,如果需要,可以以

使用一个简单的逻辑连接多个信号。默认禁止中断,在程使用一个简单的逻辑连接多个信号。默认禁止中断,在程序中可以使能序中可以使能 //禁止中断。活动的中断,使禁止中断。活动的中断,使 KCPSM3KCPSM3初始初始化“化“ CALL 3FF”(CALL 3FF”( 一个子程序调用最后的存储器位置一个子程序调用最后的存储器位置 )) ,,

这里定义了用户定义的跳转向量到中断服务程序这里定义了用户定义的跳转向量到中断服务程序 ISRISR 。。 INTERRUPT_ACKINTERRUPT_ACK输出产生脉冲。输出产生脉冲。 ZEROZERO 和和 CARRYCARRY

自自动的被保护,禁止其它中断。“动的被保护,禁止其它中断。“ RETURNI”RETURNI” 指令保证指令保证 ISRISR

的结束,回复状态标志,并说明使能的结束,回复状态标志,并说明使能 //禁止未来的中断。禁止未来的中断。

中断

Page 24: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 结构连接符号结构连接符号

Page 25: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 结构连接符号结构连接符号 VHDLVHDL 描述描述

Page 26: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 的一个实例的一个实例--KCPSM3--KCPSM3 与程序与程序 ROMROM 连接连接 VHDLVHDL 描述描述

注 : 程序 ROM 的名字取决于用户程序的名字,比如如果程序文件叫“ phone.psm” ,汇编器将产生程序 ROM 的定义文件叫“ phone.vhd” 。

Page 27: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集(需要指令集(需要 22 个周期)个周期)---- 程序控制组程序控制组

RETURNRETURN ZRETURN NZRETURN CRETURN NC

JUMP aaaJUMP Z,aaaJUMP NZ,aaaJUMP C,aaaJUMP NC,aaa

CALL aaaCALL Z,aaaCALL NZ,aaaCALL C,aaaCALL NC,aaa

Page 28: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集(需要指令集(需要 22 个周期)个周期)---- 逻辑组 逻辑组 ---- 算术运算组算术运算组

LOAD sX,kkAND sX,kkOR sX,kkXOR sX,kkTEST sX,kk

LOAD sX,sYAND sX,sYOR sX,sYXOR sX,sYTEST sX,sY

ADD sX,kkADDCY sX,kkSUB sX,kkSUBCY sX,kkCOMPARE sX,kk

ADD sX,sYADDCY sX,sYSUB sX,sYSUBCY sX,SyCOMPARE sX,sY

Page 29: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集(需要指令集(需要 22 个周期)个周期) ---- 中断组 中断组 ---- 存储组存储组

RETURNI ENABLERETURNI ENABLE

RETURNI DISABLERETURNI DISABLE

ENABLE INTERRUPTENABLE INTERRUPT

DISABLE INTERRUPTDISABLE INTERRUPT

STORE sX,ssSTORE sX,(sY)FETCH sX,ssFETCH sX,(sY)

Page 30: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集(需要指令集(需要 22 个周期)个周期)---- 移位和旋转组 移位和旋转组 ---- 输入输入 //输出组输出组

SR0 sXSR0 sXSR1 sXSR1 sXSRX sXSRX sXSRA sXSRA sXRR sXRR sX

SL0 sXSL0 sXSL1 sXSL1 sXSLX sXSLX sXSLA sXSLA sXRL sXRL sX

INPUT sX,ppINPUT sX,(sY)OUTPUT sX,ppOUTPUT sX,(sY)

Page 31: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--JUMP--JUMP

Page 32: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--CALL--CALL

Page 33: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--RETURN--RETURN

Page 34: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--RETURNI--RETURNI

Page 35: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--LOAD--LOAD

Page 36: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--AND--AND

Page 37: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--TEST--TEST

Page 38: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--ADDCY--ADDCY

Page 39: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--COMPARE--COMPARE

Page 40: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--SR0,SR1,SRX,SRA,RR--SR0,SR1,SRX,SRA,RR

Page 41: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--SL0,SL1,SLX,SLA,RL--SL0,SL1,SLX,SLA,RL

Page 42: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--INPUT/OUTPUT--INPUT/OUTPUT

Page 43: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--INPUT/OUTPUT--INPUT/OUTPUT 时序时序

Page 44: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--RESET--RESET

Page 45: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--STORE--STORE

Page 46: 软核处理器 PicoBlaze 原理及应用

PicoBlazePicoBlaze 指令集详解指令集详解--FETCH--FETCH

Page 47: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器---- 原理及操作原理及操作

KCPSM3 汇编器提供一个简单的 DOS 可执行文件和三个模版文件,将 KCPSM3.EXE, ROM_form.vhd , ROM_form.v 和 ROM_form.coe 文件复制到工作目录下。 程序可用标准的 Notepad 和 Wordpad工具编写,文件扩展名为 .psm ( 8 字符名字限制)。 打开一个 DOS 对话框,并定位到当前的工作路径下。然后运行汇编器“ kcpsm3<filename>[.psm]” 来汇编所编写的程序(运行速度很快)。

Page 48: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器 ---- 原理及操作原理及操作

Page 49: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器---- 错误处理错误处理

当遇到错误时,汇编器将停下来。将显示一个短消当遇到错误时,汇编器将停下来。将显示一个短消息来帮助判断引起错误的原因。汇编器将显示遇到问题息来帮助判断引起错误的原因。汇编器将显示遇到问题的行。设计者然后修改错误重新运行汇编器程序。的行。设计者然后修改错误重新运行汇编器程序。

Page 50: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器---- 文件组成文件组成

KCPSM3KCPSM3 汇编器使用汇编器使用 44 个输入文件,产生个输入文件,产生 1515 个输个输出文出文

件。下面给出详细的说明。件。下面给出详细的说明。

Page 51: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--ROM_form.vhd--ROM_form.vhd

该文件提供模版,该模版用于汇编器产生的该文件提供模版,该模版用于汇编器产生的 VHDLVHDL文文

件,和汇编器一起提供,在工作路径下。件,和汇编器一起提供,在工作路径下。 该文件为该文件为 Spartan-3,Virtex-II,Virtex-II ProSpartan-3,Virtex-II,Virtex-II Pro 的单端口的单端口BRAMBRAM 配置为配置为 ROM.ROM. 下面给出该文件的模版。下面给出该文件的模版。

Page 52: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--ROM_form.vhd--ROM_form.vhd

汇编器读取汇编器读取 ROM_form.vhdROM_form.vhd 模版,将其信息复制到模版,将其信息复制到输输

出文件出文件 <filename>.vhd<filename>.vhd 。不进行其语法的检查。。不进行其语法的检查。 该文件包含一些特殊的文本串该文件包含一些特殊的文本串 ,,包含包含 {}{} 。。

Attribute AttributeName of ObjectList : ObjectType is Attribute AttributeName of ObjectList : ObjectType is AttributeValue;AttributeValue; 汇编器使用汇编器使用 {begin template}{begin template} 来标识来标识 VHDLVHDL 定义开定义开始始

的地方的地方 ,, 然后理解和使用合适的信息来替换所有其它特然后理解和使用合适的信息来替换所有其它特殊殊

的串。的串。 {name}{name} 被输入程序 “被输入程序 “ .psm”.psm” 的名字替换。的名字替换。

Page 53: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--ROM_form.coe--ROM_form.coe

该文件为汇编器生成的系数文件的提供模版,该该文件为汇编器生成的系数文件的提供模版,该文文

件和汇编程序一起提供,并且同在一个工作目录下。件和汇编程序一起提供,并且同在一个工作目录下。 ROM_form.coeROM_form.coe模版文件为模版文件为 Spartan-3Spartan-3 ,, Virtex-IIVirtex-II 和其和其

它它FPGAFPGA 定义了一个双端口存储器。定义了一个双端口存储器。 汇编器读取汇编器读取 ROM_form.coeROM_form.coe模版,将其信息复制到输模版,将其信息复制到输出文件出文件 <filename>.vhd<filename>.vhd 。不进行其语法的检查。。不进行其语法的检查。 {name}{name} 被输入程序 “被输入程序 “ .psm”.psm” 的名字替换。的名字替换。 文件的最后一行关键字文件的最后一行关键字 memory_initialization_vector=memory_initialization_vector= 将要被核生成器标识后面的数据值。汇编器将添加将要被核生成器标识后面的数据值。汇编器将添加10241024 个所要求的值。个所要求的值。

Page 54: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--ROM_form.coe--ROM_form.coe

Page 55: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--<Filename>.fmt--<Filename>.fmt 文件文件

该文件是对该文件是对原始的原始的 .psm.psm 文文

件件的格式化,使源的格式化,使源文件看上去更好文件看上去更好看。下面给出该看。下面给出该文件。文件。

Page 56: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--<Filename>.log--<Filename>.log 文件文件

该文件提供了汇编器执行过程中的详细信息。该文件提供了汇编器执行过程中的详细信息。

Page 57: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--constant.txt--constant.txt 文件和文件和 labels.txtlabels.txt 文件文件

这两个文件提供了行标号的列表和它相关的地址,这两个文件提供了行标号的列表和它相关的地址,以及常数的列表和值。以及常数的列表和值。

Page 58: 软核处理器 PicoBlaze 原理及应用

KCPSM3 KCPSM3 汇编器汇编器--pass.dat--pass.dat 文件文件

pass.datpass.dat 文件文件是汇编器的内是汇编器的内部文件,用来表示汇编过程中部文件,用来表示汇编过程中的中间步骤。这些文件可不去的中间步骤。这些文件可不去理会,但能帮助识别汇编器如理会,但能帮助识别汇编器如何理解(翻译)程序的。当开何理解(翻译)程序的。当开始汇编时,这些文件自动删始汇编时,这些文件自动删除。除。

Page 59: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 编程语法编程语法---- 简单的规则简单的规则

11 )没有空行)没有空行 - - 空行将被汇编器自动去除,如果保持空行将被汇编器自动去除,如果保持一行用一个空的注释(用分号“一行用一个空的注释(用分号“ ;”;” )) 22 )注释)注释 - - 用分号“用分号“ ;”;”开始,汇编器忽略注释。开始,汇编器忽略注释。 33 )寄存器)寄存器 - - 所有寄存器必须用“所有寄存器必须用“ s”s” 定义定义 ,,后面跟后面跟 1616

进制进制数数 0-F0-F 。汇编器接受大小写的混合输入,但是将其转换。汇编器接受大小写的混合输入,但是将其转换

为为““sX”sX”格式。格式。 44 )常数)常数 - - 常数用两个常数用两个 1616 进制数表示,范进制数表示,范

围“围“ 00”-“FF”,00”-“FF”,

汇编器接受大小写的混合输入,但是将其转换为大写。汇编器接受大小写的混合输入,但是将其转换为大写。 55 )标号)标号 - - 标号是用户定义的字符串,区分大小写。标号是用户定义的字符串,区分大小写。中间不能有空格,支持下划线“中间不能有空格,支持下划线“ _”_” 。。

Page 60: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 编程语法编程语法 ---- 简单的规则简单的规则

66 )行标号)行标号 -- 用来标识一个程序行,用于用来标识一个程序行,用于 JUMPJUMP 和和CALLCALL 指令的参考,行标号后面跟一个冒号“:”。指令的参考,行标号后面跟一个冒号“:”。

Page 61: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 编程语法编程语法 ---- 简单的规则简单的规则

77 )汇编器允许使用空格和)汇编器允许使用空格和 <TAB><TAB> 字符,但是指令字符,但是指令和第一个操作数之间必须至少有一个空格。带有两个操和第一个操作数之间必须至少有一个空格。带有两个操作数的指令,其两个操作数之间必须用作数的指令,其两个操作数之间必须用““ ,”,” 分割符。分割符。 88 )汇编器接受大小写混合编程,但是自动的将其)汇编器接受大小写混合编程,但是自动的将其转化为大写。转化为大写。

Page 62: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 编程语法编程语法 ----简单的规则简单的规则

Page 63: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 编程语法编程语法 ---- 常数指令常数指令

常数是全局的,即使常数在程序的末尾定义,它也常数是全局的,即使常数在程序的末尾定义,它也能在程序的任何地方被使用。能在程序的任何地方被使用。

Page 64: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 编程语法编程语法 --NAMEREG --NAMEREG 指令指令

Page 65: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 编程语法编程语法 --ADDRESS--ADDRESS 指令指令

LOGLOG 文件给出的描述。文件给出的描述。

ADDRESS 强迫指令在给定地址执行。

Page 66: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 ---- 中断使能中断使能

使用使用 ENABLE INTERRUPTENABLE INTERRUPT 指令来使能中断。当不指令来使能中断。当不允许中断时,使用允许中断时,使用 DISABLE INTERRUPTDISABLE INTERRUPT 来禁止中断。来禁止中断。使用使用 RETURNI ENABLE/DISABLERETURNI ENABLE/DISABLE 指令来从中断返回主指令来从中断返回主程序。程序。 当中断产生时,进行下面的步骤:当中断产生时,进行下面的步骤: 11 )将程序计数器入栈,保护)将程序计数器入栈,保护 CARRYCARRY 和和 ZEROZERO标标志;志;

22 )禁止中断输入;)禁止中断输入; 33 )程序计数器的值为“)程序计数器的值为“ 3FF”3FF” 。。

Page 67: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 ---- 中断处理过程中断处理过程

Page 68: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 ---- 中断处理基本方法中断处理基本方法

当中断时,当中断时, PCPC跳到“跳到“ 3FF”3FF” ,所以必须保证在此位,所以必须保证在此位置有置有

一个跳转到正确的中断服务程序的跳转向量。没有一个跳转到正确的中断服务程序的跳转向量。没有 JUMPJUMP

指令,程序将转向“指令,程序将转向“ 00”00” 。。 中断服务程序可以放在程序的任何位置。中断服务程序可以放在程序的任何位置。 ISRISR执行所执行所要求的任务,用要求的任务,用 RETURNIRETURNI 结束。结束。

Page 69: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 ---- 中断处理基本方法中断处理基本方法

下面给出一个简单的中断的处理例程下面给出一个简单的中断的处理例程

通过向端口写通过向端口写 5555 和和 AAAA 到到 waveform_portwaveform_port 端口来产端口来产生波生波形。通过对形。通过对 S0S0寄存器递减来以固定的间隔来写数值。寄存器递减来以固定的间隔来写数值。 响应中断后,响应中断后, PicoBlazePicoBlaze停止产生波形,然后对停止产生波形,然后对 sAsA寄寄

存器递增,将计数器的值写到存器递增,将计数器的值写到 counter_portcounter_port 。。

Page 70: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 --VHDL--VHDL 设计例子设计例子

Page 71: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 ---- 中断服务程序中断服务程序 ;Interrupt example;Interrupt example

;; CONSTANT waveform_port, 02 ;bit0 will be dataCONSTANT waveform_port, 02 ;bit0 will be data CONSTANT counter_port, 04CONSTANT counter_port, 04 CONSTANT pattern_10101010, AACONSTANT pattern_10101010, AA NAMEREG sA, interrupt_counterNAMEREG sA, interrupt_counter ; ; start: LOAD interrupt_counter, 00 ;reset interrupt counterstart: LOAD interrupt_counter, 00 ;reset interrupt counter LOAD s2, pattern_10101010 ;initial output conditionLOAD s2, pattern_10101010 ;initial output condition ENABLE INTERRUPTENABLE INTERRUPT ;; drive_wave: OUTPUT s2, waveform_portdrive_wave: OUTPUT s2, waveform_port LOAD s0, 07 ;delay sizeLOAD s0, 07 ;delay size loop: SUB s0, 01 ;delay looploop: SUB s0, 01 ;delay loop JUMP NZ, loopJUMP NZ, loop XOR s2, FF ;toggle waveformXOR s2, FF ;toggle waveform JUMP drive_waveJUMP drive_wave ; ; ADDRESS 2B0ADDRESS 2B0int_routine: ADD interrupt_counter, 01 ;increment counterint_routine: ADD interrupt_counter, 01 ;increment counter OUTPUT interrupt_counter, counter_portOUTPUT interrupt_counter, counter_port RETURNI ENABLERETURNI ENABLE ; ; ADDRESS 3FF ;set interrupt vectorADDRESS 3FF ;set interrupt vector JUMP int_routineJUMP int_routine

Page 72: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 --ISR--ISR 中断服务程序中断服务程序

Page 73: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 ---- 中断所执行的操作中断所执行的操作

Page 74: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 中断处理中断处理 ---- 中断脉冲的时序中断脉冲的时序

建议中断信号保持至少 2 个 KCPSM 上升沿时钟周期

Page 75: 软核处理器 PicoBlaze 原理及应用

KCPSM3 CALL/RETURNKCPSM3 CALL/RETURN 栈栈 ---- 调用和返回处理过程调用和返回处理过程

PicoBlazePicoBlaze包含一个自动的嵌入式的堆栈,用来当包含一个自动的嵌入式的堆栈,用来当遇到遇到 CALLCALL 指令时保存指令时保存 PCPC 的值,在遇到的值,在遇到 RETURN(I)RETURN(I)

是恢是恢复复 PCPC 的值。堆栈不需要初始化(或者用户的控制)。的值。堆栈不需要初始化(或者用户的控制)。然而堆栈只支持到最多然而堆栈只支持到最多 3131 级的嵌套的子程序。级的嵌套的子程序。 下面给出一个例子来说明这个问题。下面给出一个例子来说明这个问题。

Page 76: 软核处理器 PicoBlaze 原理及应用

KCPSM3 CALL/RETURNKCPSM3 CALL/RETURN 栈栈 ---- 调用和返回处理过程调用和返回处理过程

Page 77: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 共享程序空间共享程序空间---- 一个奇妙的想法一个奇妙的想法

为了设计容易和满足系统的性能要求,经常需要在为了设计容易和满足系统的性能要求,经常需要在一个可编程芯片内使用多个一个可编程芯片内使用多个 KCPSM3KCPSM3宏。在宏。在 SPARTAN-SPARTAN-

33

或者或者 Virtex-IIVirtex-II 芯片内使用一个芯片内使用一个 BRAMBRAM 来提供来提供 10241024 个地个地址空址空间。间。 下面给出多个下面给出多个 KCPSM3KCPSM3共享程序空间的方法。共享程序空间的方法。

Page 78: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 共享程序空间共享程序空间---- 一个奇妙的想法一个奇妙的想法

Page 79: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 输出端口的设计输出端口的设计---- 简单输出端口简单输出端口

对于少于对于少于 88 个输出的端口可以尝试分配”个输出的端口可以尝试分配” one-hot”one-hot”地地址,然后确保只解码正确的址,然后确保只解码正确的 PORT_IDPORT_ID 信号。这省去大量信号。这省去大量的逻辑和地址解码。同时,降低了的逻辑和地址解码。同时,降低了 PORT_IDPORT_ID总线上的负总线上的负载。载。 在程序中使用在程序中使用 CONSTANTCONSTANT 指令使代码可读,并且确指令使代码可读,并且确保使用了正确的端口。保使用了正确的端口。

Page 80: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 输出端口的设计输出端口的设计---- 简单输出端口简单输出端口

Page 81: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 输出端口的设计输出端口的设计---- 带解码和高性能的输出端口带解码和高性能的输出端口

Page 82: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 输入端口的设计输入端口的设计---- 简单输入端口简单输入端口

对于少于对于少于 88 个的简单输入端口,使用多路复用开个的简单输入端口,使用多路复用开关关将其接入输入端口。建议检查综合的结果,以确保特殊将其接入输入端口。建议检查综合的结果,以确保特殊的的 MUXF5MUXF5 和和 MUXF6MUXF6 被用来构成高效的多路复用结构。被用来构成高效的多路复用结构。 在程序中使用在程序中使用 CONSTANTCONSTANT 来定义多路开关。来定义多路开关。 由于 PORT_ID 保持有效 2 个周期,因此在多路复用器后

加入寄存器来保持其性能。

Page 83: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 输入端口的设计输入端口的设计---- 复杂输入端口复杂输入端口

有时候,一个提供数据到有时候,一个提供数据到 KCPSM3KCPSM3电路电路 ,, 以知道数以知道数据已据已经被读取。一个典型的例子是使用经被读取。一个典型的例子是使用 FIFOFIFO缓冲区,可以准缓冲区,可以准备下一个被读取的数据。下面给出其结构和时序图。备下一个被读取的数据。下面给出其结构和时序图。

Page 84: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 输入端口的设计输入端口的设计---- 复杂输入端口复杂输入端口 FIFOFIFO 时序时序

Page 85: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 和存储器的连接和存储器的连接---- 提高性能的设计方法提高性能的设计方法

与存储器的连接是最容易降低系统性能的原因。与存储器的连接是最容易降低系统性能的原因。插入并行的寄存器,分割输入多路复用器,认真的分插入并行的寄存器,分割输入多路复用器,认真的分配端口地址,这些都是提高系统系统的方法。配端口地址,这些都是提高系统系统的方法。

Page 86: 软核处理器 PicoBlaze 原理及应用

KCPSM3KCPSM3 和存储器的连接和存储器的连接---- 提高性能的设计方法提高性能的设计方法

Page 87: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制---- 系统性能的功能要求和结构系统性能的功能要求和结构

该设计将使用该设计将使用 PicoBlazePicoBlaze 片上片上 88 位软核处理器实现对脉位软核处理器实现对脉冲宽度调制的控制。作为应用该设计允许控制冲宽度调制的控制。作为应用该设计允许控制 1212 个个 PWMPWM

通道;通道; 88 个通道控制板上的个通道控制板上的 LEDLED 的闪烁,剩余的的闪烁,剩余的 44 个通道通个通道通过插针引出后可用示波器观察。可以在插针外接一个简单过插针引出后可用示波器观察。可以在插针外接一个简单的电阻的电阻 --电容电容 (RC)(RC)网络平滑电路生成一个数字到模拟转换网络平滑电路生成一个数字到模拟转换通道(通道( D/AD/A 通道)。通道)。 PWMPWM 的脉冲重复频率的脉冲重复频率 PRFPRF 为为 1KHz1KHz 和和 88 位 位 的分辨率(的分辨率( 256256 步)。每个步)。每个 PWMPWM都能通都能通 过过 PCPC 机上的超级终端(机上的超级终端( Hyper Hyper TerminalTerminal )软件工具独立的设置(通过)软件工具独立的设置(通过 PCPC 机机

的的 RS232RS232串口实现命令的传输)。串口参数设置波特率:串口实现命令的传输)。串口参数设置波特率:96009600;数据位:;数据位: 88 位;无奇偶校验;无流量控制。位;无奇偶校验;无流量控制。

Page 88: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制 ---- 系统结系统结构构

Page 89: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制 ---- 系统结系统结构构

picoblaze_pwm_control.vhdpicoblaze_pwm_control.vhd :顶层文件,用于描述:顶层文件,用于描述整个硬件系统;整个硬件系统;

kcpsm3.vhdkcpsm3.vhd :: PicoBlazePicoBlaze 处理器的完整描述文件;处理器的完整描述文件; pwm_ctrl.vhdpwm_ctrl.vhd :用于:用于 picoBlazepicoBlaze 的汇编后的程序的汇编后的程序

(保存在块存储器中),(保存在块存储器中), picoBlazepicoBlaze 程序源文件汇编程序源文件汇编代码;代码;

Page 90: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制 ---- 系统结系统结构构

uart_tx.vhduart_tx.vhd :带有:带有 1616 个字节个字节 FIFOFIFO缓冲区的缓冲区的UARTUART发送器模块;发送器模块;

• kc_uart_tx.vhdkc_uart_tx.vhd :: UARTUART 的发送状态机模块,数据的发送状态机模块,数据的协议转换,将处理器端口上的协议转换,将处理器端口上 88 位并行数据,转位并行数据,转换成换成 RS-232RS-232串行发送数据;串行发送数据;

• bbfifo_16x8.vhdbbfifo_16x8.vhd :: 1616 个字节个字节 FIFOFIFO缓冲区;缓冲区;

Page 91: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制 ---- 系统结构系统结构

uart_rx.vhduart_rx.vhd :带有:带有 1616 个字节个字节 FIFOFIFO缓冲区的缓冲区的UARTUART 接收器模块;接收器模块;

• kc_uart_rx.vhdkc_uart_rx.vhd :: UARTUART 的接收状态机模块,数据的接收状态机模块,数据协议转换,将接收到的协议转换,将接收到的 RS-232RS-232串行接收数据转换串行接收数据转换成处理器端口上需要的成处理器端口上需要的 88 位并行数据;位并行数据;

• bbfifo_16x8.vhdbbfifo_16x8.vhd :: 1616 个字节个字节 FIFOFIFO缓冲区;缓冲区;

Page 92: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制 ---- 系统结系统结构构

Page 93: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

该设计通过使用该设计通过使用 PicoBlazePicoBlaze 上执行软件产生上执行软件产生 PWMPWM ,而,而不是使用不是使用 PicoBlazePicoBlaze 和和 PWMPWM 硬件外设产生。可就是说软件硬件外设产生。可就是说软件动态的产生动态的产生 PWMPWM 更加灵活,但是对实现也有一些限制。更加灵活,但是对实现也有一些限制。 88

位分辨率位分辨率 =256=256 步步 1ms/256=3.90625usPRF=1kHz(1/1000=1ms)1ms/256=3.90625usPRF=1kHz(1/1000=1ms)

如图如图 14.6914.69所示,所示, PWMPWM关键的参数有两个:脉冲重复关键的参数有两个:脉冲重复频率(频率( Pulse Repetition Frequency, PRFPulse Repetition Frequency, PRF )和分辨率(步)和分辨率(步数,用于设置每个脉冲的占空比),该设计中的数,用于设置每个脉冲的占空比),该设计中的fPRF=1kHzfPRF=1kHz ,分辨率为,分辨率为 88 位(位( 256256 步)。步)。

Page 94: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

Page 95: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

PicoBlazePicoBlaze 使用使用 22 个时钟周期来执行每条执行,该设计个时钟周期来执行每条执行,该设计中其参考时钟为中其参考时钟为 50MHz50MHz ,所以,所以 PicoBlazePicoBlaze 的性能为的性能为 2525百万条百万条指令指令 // 秒秒 (million instructions per second(million instructions per second ,, MIPS)MIPS) ,即执行一,即执行一条执行需要条执行需要 40ns40ns 。尽管这对于一个。尽管这对于一个 88 位单片机来说是很快位单片机来说是很快了,但是它执行了,但是它执行 9797条指令需要条指令需要 3.90625us3.90625us 步长间隔支持上面步长间隔支持上面的参数。然而,的参数。然而, 9797条指令用来驱动条指令用来驱动 1212 通道通道 PWMPWM 信号已经信号已经足够了,处理器的足够了,处理器的 50%50% 的带宽仍然可以用于高级的控制任的带宽仍然可以用于高级的控制任务(处理与务(处理与 UARTUART 和处理文本命令)。和处理文本命令)。

Page 96: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

该设计中产生连续的该设计中产生连续的 PWMPWM 。。 ,, 通过软件产生脉冲通过软件产生脉冲实实

现现 PWMPWM ,这是常用的软件方法,这样是为了有时间执,这是常用的软件方法,这样是为了有时间执行其它的处理任务。行其它的处理任务。 注意,当使用高性能的注意,当使用高性能的 PicoBlazePicoBlaze 和包含硬件外设和包含硬件外设时,不需要这种折衷。时,不需要这种折衷。

Page 97: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

该设计中,目标是提供一个精确的该设计中,目标是提供一个精确的 PRFPRF 和占空和占空分辨率。这个要求可以通过中断实现。如图分辨率。这个要求可以通过中断实现。如图 14.7014.70所所

示,这个设计使用一个硬件的计数器设置中断时示,这个设计使用一个硬件的计数器设置中断时序。计数器有序。计数器有 196196 个状态,并且产生中断脉冲。等个状态,并且产生中断脉冲。等

于于中断的周期为中断的周期为 3.92us3.92us ,, PRFPRF 为为 996.5Hz996.5Hz 。。

图 14.70 中断产生原理

Page 98: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

其中:控制命令为:其中:控制命令为: 1. LDn hh 1. LDn hh , 其中:, 其中: 1) “n”1) “n” 为所控制的为所控制的 LEDLED 的编号的编号 2) “hh”2) “hh” 为为 22 位十六进制数,指明了位十六进制数,指明了 PWMPWM占空因 占空因 子。(范围子。(范围 00-FF00-FF )) 2. LOk hh 2. LOk hh , 其中:, 其中: 1) “n”1) “n” 为为 IOIO 的编号,的编号, 9-129-12 2) “hh”2) “hh” 为为 22 位十六进制数,指明了位十六进制数,指明了 PWMPWM占空因占空因 子。(范围子。(范围 00-FF00-FF ) )

Page 99: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

Page 100: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 PWMPWM 的产生原理的产生原理

Page 101: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制---- 系统中断硬件模块的设计系统中断硬件模块的设计

Page 102: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制---- 系统系统 PWMPWM 模块的设计模块的设计

Page 103: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 UARTUART 模块设计模块设计

该系统需要使用该系统需要使用 RS232RS232串口,接收上位机的命令,串口,接收上位机的命令,所所

以在该设计中包括以在该设计中包括 UARTUART发送模块和发送模块和 UARTUART 接收模块。接收模块。图图

14.7414.74 给出了给出了 UARTUART 和和 picoBlazepicoBlaze 的连接图的连接图。 。

Page 104: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 UARTUART 模块设计模块设计

Page 105: 软核处理器 PicoBlaze 原理及应用

基于基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制控制-- 系统系统 UARTUART 模块设计模块设计

UARTUART模块的发送和接收状态各个位生成状态端口模块的发送和接收状态各个位生成状态端口status_portstatus_port ,该端口包含,该端口包含 rx_fullrx_full 、、 rx_half_fullrx_half_full 、、rx_data_presentrx_data_present 、、 tx_fulltx_full 和和 tx_half_fulltx_half_full 状态位。状态位。

Page 106: 软核处理器 PicoBlaze 原理及应用

系统系统 UARTUART 模块设计模块设计-- 系统系统 UARTUART 发送模块的设计发送模块的设计

图图 14.7614.76 给出了系统给出了系统 UARTUART发送模块的结构图发送模块的结构图和和

时序,时序, UARTUART发送模块包含两个模块 发送模块包含两个模块 ::

图 14.76 UART 发送模块和时序

Page 107: 软核处理器 PicoBlaze 原理及应用

系统系统 UARTUART 模块设计模块设计-- 系统系统 UARTUART 发送模块的设计发送模块的设计

bbfifo_16x8bbfifo_16x8 和和 kcuart_txkcuart_tx 。下面简要介绍这两个模。下面简要介绍这两个模块:块: 11 )) bbfifo_16x8bbfifo_16x8 :为:为 1616 个深度的个深度的 FIFOFIFO ,用来缓存来,用来缓存来自自 PicoBlazePicoBlaze写端口的写端口的 88 位并行数据。用来在位并行数据。用来在 MCUMCU 和串口和串口异步系统之间进行处理。异步系统之间进行处理。 22 )) kcuart_txkcuart_tx :从写:从写 FIFOFIFO缓冲区取出缓冲区取出 88 位的并行原始位的并行原始数据,然后通过模块内的状态机,将数据,然后通过模块内的状态机,将 88 位并行原始数据位并行原始数据转换成符合转换成符合 RS-232RS-232格式串行数据,并且发送。格式串行数据,并且发送。

Page 108: 软核处理器 PicoBlaze 原理及应用

系统系统 UARTUART 模块设计模块设计-- 系统系统 UARTUART 接收模块的设计接收模块的设计

图图 14.7714.77 给出了系统给出了系统 UARTUART 接收模块的结构图和接收模块的结构图和时时

序,序, UARTUART 接收模块包含两个模块:接收模块包含两个模块:

Page 109: 软核处理器 PicoBlaze 原理及应用

系统系统 UARTUART 模块设计模块设计-- 系统系统 UARTUART 接收模块的设计接收模块的设计

bbfifo_16x8bbfifo_16x8 和和 kcuart_rxkcuart_rx 。下面简要介绍这两个模 。下面简要介绍这两个模 块:块: 11 )) kcuart_rxkcuart_rx :通过模块内的状态机,从接收到的:通过模块内的状态机,从接收到的RS-232RS-232格式串行数据提取出所需要的格式串行数据提取出所需要的 88 位并行数据,并位并行数据,并准备写入到接收准备写入到接收 FIFOFIFO缓冲区。 缓冲区。 22 )) bbfifo_16x8bbfifo_16x8 :为:为 1616 个深度的个深度的 FIFOFIFO ,用来缓存来,用来缓存来自自 kcuart_rxkcuart_rx端口的端口的 88 位数据。用于位数据。用于 PicoBlazePicoBlaze读取这些接读取这些接收到的数据。收到的数据。

Page 110: 软核处理器 PicoBlaze 原理及应用

习题习题

1. 1. 说明片上可编程系统的含义。说明片上可编程系统的含义。 2. 2. 说明说明 MCUMCU 和硬件逻辑在实现数字系统应用的优和硬件逻辑在实现数字系统应用的优

点点和缺点。说明和缺点。说明 PicoBlazePicoBlaze 软核处理器的主要特性。软核处理器的主要特性。 3. 3. 说明片上可编程系统软件和硬件的协同设计。说明片上可编程系统软件和硬件的协同设计。 4. 4. 理解基于理解基于 PicoBlazePicoBlaze 处理器处理器 PWMPWM 控制的软件和控制的软件和

硬硬件的实现过程。件的实现过程。