何宾 tel : 13911127536 email:[email protected]

78
何何 Tel email: 高高高高高高高 北北北北北北北北北北北北北 高高高 &XILINX SOC 高高高高高高高高 FPGA System Design Primer FPGA System Design Primer 何何 Tel 13911127536 email:[email protected] 北北北北 北北北北北北北北北北北北北 高高高高高高高高高高高高高

Upload: yves

Post on 13-Jan-2016

49 views

Category:

Documents


9 download

DESCRIPTION

版权所有,禁止未经授权的商业使用行为. 何宾 Tel : 13911127536 email:[email protected]. 北京中教仪装备技术有限公司. 培训内容. 北京中教仪装备技术有限公司介绍 Xilinx 公司介绍 Xilinx 公司产品概述 Xilinx 公司软件平台介绍 Xilinx 公司 ISE10.1 软件及简单设计流程介绍 PicoBlaze8 位嵌入式微控制器原理 EXCD-1 硬件开发平台介绍 基于 ISE10.1 和 PicoBlaze8 位微控制器的设计实现 Xilinx 片上可编程系统原理介绍 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 何宾   Tel : 13911127536      email:hebin@mail.buct

何宾Tel : email:

高等教育出版社北京中教仪装备技术有

限公司

高教社 &XILINX SOC竞赛培训系列课程

FPGA System Design FPGA System Design PrimerPrimer

何宾 Tel : 13911127536

email:[email protected]

版权所有,禁止未经授权的商业使用行为

北京中教仪装备技术有限公司

Page 2: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

培训内容

• 北京中教仪装备技术有限公司介绍• Xilinx公司介绍• Xilinx公司产品概述• Xilinx公司软件平台介绍• Xilinx公司 ISE10.1软件及简单设计流程介绍• PicoBlaze8位嵌入式微控制器原理• EXCD-1硬件开发平台介绍• 基于 ISE10.1 和 PicoBlaze8位微控制器的设计实现• Xilinx片上可编程系统原理介绍• 基于 EDK10.1 和 MicroBlaze32位软核处理器的设计实现

Page 3: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 4: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze 的 8位微控制器概述-- 主要特点

Xilinx 的 PicoBlaze 是一个 8 位 RISC (精简指令集计算

机 )的微控制器, 已经被专门设计和优化,用于 Xilinx的 Virtex 和 Spartan 系列的 FPGA 和 CoolRunner-II CPLD

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

Page 5: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze的简单处理解决方案-- 主要优点 1. 免费的 PicroBlaze 核 所得到的 PicoBlaze 微控制器是一个可综合的 VHDL源代码。所以,该核可以移植到 Xilinx 的未来的产品上。 2. 容易使用的汇编器 PicoBlaze 的汇编器是一个简单的 DOS 程序,该汇编

器编译程序时间小于 3 秒,产生 VHDL , Verilog 和 M (用

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

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

代码和仿真模型。

Page 6: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

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

Page 7: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

5. 100% 嵌入式能力 PicoBlaze 核嵌在 FPGA 或 CPLD 内部,不需要外部

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

Page 8: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 9: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

程序空间 KCPSM3 支持程序的指令可以到 1024 (使用一个BRAM ),多个 KCPSM3 处理器可以用于处理不同的任务。16个通用寄存器 16 个 8 位的通用寄存器,标号 s0-sF (在汇编器中可

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

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

Page 10: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

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

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

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

持 SHIFT 和 ROTATE 操作;COMPARE 和 TEST 指令可以测试寄存器的内容

( 不改变其内容),确定奇偶性 PARITY ;

Page 11: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

标志和程序流控制 ALU 的运算结果影响 ZERO 和 CARRY 标志

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

Page 12: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

PORT_ID访问 8 位的地址端口。端口值可以在程序中用用绝对值 pp来指定,或者用 16 寄存器的任何一个 ((sY)) 来指定。

Page 13: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

OUTPUT 操作,将任何一个寄存器送到端口值中,输出操作用一个 WRITE_STROBE脉冲标识,该信号被接口逻辑用来保证有效的数据被送到外部的系统。典型的,WRITE_STROBE 用于时钟的使能或写使能。

Page 14: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

内嵌存储器 有一个内部的 64字节的通用存储器,可以使用 STORE指令将 16 个寄存器中的任意一个寄存器的内容写入 64 个地址位置中, FETCH 指令将存储器中任一个位置的内容写

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

Page 15: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

处理器提供单独的 INTERRUPT信号,如果需要,可以使用一个简单的逻辑连接多个信号。默认禁止中断,在程序中可以使能 / 禁止中断。活动的中断,使 KCPSM3初始化“ CALL 3FF”( 一个子程序调用最后的存储器位置 ) ,这里定义了用户定义的跳转向量到中断服务程序 ISR 。

INTERRUPT_ACK 输出产生脉冲。 ZERO 和 CARRY自动的被保护,禁止其它中断。“ RETURNI” 指令保证 ISR

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

中断

Page 16: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 17: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze的一个实例--KCPSM3 结构连接符号 VHDL描述

Page 18: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze的一个实例--KCPSM3与程序 ROM 连接 VHDL描述

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

Page 19: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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 20: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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 21: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

RETURNI ENABLE RETURNI DISABLE

ENABLE INTERRUPT DISABLE INTERRUPT

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

Page 22: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

SR0 sXSR1 sXSRX sXSRA sXRR sX

SL0 sXSL1 sXSLX sXSLA sXRL sX

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

Page 23: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--JUMP

Page 24: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--CALL

Page 25: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--RETURN

Page 26: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--RETURNI

Page 27: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--LOAD

Page 28: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--AND

Page 29: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--TEST

Page 30: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--ADDCY

Page 31: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--COMPARE

Page 32: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 33: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 34: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--INPUT/OUTPUT

Page 35: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 36: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--RESET

Page 37: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--STORE

Page 38: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

PicoBlaze指令集详解--FETCH

Page 39: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器-- 原理及操作

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

Page 40: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器 -- 原理及操作

Page 41: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器--错误处理

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

Page 42: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器-- 文件组成 KCPSM3 汇编器使用 4 个输入文件,产生 15 个输出

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

Page 43: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器--ROM_form.vhd

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

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

Page 44: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器--ROM_form.vhd

汇编器读取 ROM_form.vhd 模版,将其信息复制到输出文件 <filename>.vhd 。不进行其语法的检查。 该文件包含一些特殊的文本串 , 包含 {} 。

Attribute AttributeName of ObjectList : ObjectType is AttributeValue;

汇编器使用 {begin template} 来标识 VHDL定义开始

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

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

Page 45: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器--ROM_form.coe

该文件为汇编器生成的系数文件的提供模版,该文件和汇编程序一起提供,并且同在一个工作目录下。 ROM_form.coe 模版文件为 Spartan-3 , Virtex-II 和其

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

Page 46: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器--ROM_form.coe

Page 47: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

该文件是对原始的 .psm 文

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

Page 48: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 49: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 50: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3 汇编器--pass.dat 文件

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

Page 51: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3编程语法-- 简单的规则 1 )没有空行 - 空行将被汇编器自动去除,如果保持一行用一个空的注释(用分号“ ;” ) 2 )注释 - 用分号“ ;” 开始,汇编器忽略注释。 3 )寄存器 - 所有寄存器必须用“ s”定义 , 后面跟 16

进制数 0-F 。汇编器接受大小写的混合输入,但是将其转换为“sX”格式。 4 )常数 - 常数用两个 16 进制数表示,范围“ 00”-“FF”,

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

Page 52: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 53: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 54: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 55: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3编程语法 -- 常数指令 常数是全局的,即使常数在程序的末尾定义,它也能在程序的任何地方被使用。

Page 56: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3编程语法 --NAMEREG 指令

Page 57: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3编程语法 --ADDRESS 指令

LOG 文件给出的描述。

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

Page 58: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3中断处理 -- 中断使能

使用 ENABLE INTERRUPT 指令来使能中断。当不允许中断时,使用 DISABLE INTERRUPT 来禁止中断。使用 RETURNI ENABLE/DISABLE 指令来从中断返回主程序。 当中断产生时,进行下面的步骤: 1 )将程序计数器入栈,保护 CARRY 和 ZERO 标志; 2 )禁止中断输入; 3 )程序计数器的值为“ 3FF” 。

Page 59: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3中断处理 -- 中断处理过程

Page 60: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

个跳转到正确的中断服务程序的跳转向量。没有 JUMP指令,程序将转向“ 00” 。 中断服务程序可以放在程序的任何位置。 ISR执行所要求的任务,用 RETURNI 结束。

Page 61: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

通过向端口写 55 和 AA 到 waveform_port 端口来产生波

形。通过对 S0 寄存器递减来以固定的间隔来写数值。 响应中断后, PicoBlaze停止产生波形,然后对 sA

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

Page 62: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 63: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3中断处理 -- 中断服务程序

• ;Interrupt example• ;• CONSTANT waveform_port, 02 ;bit0 will be data• CONSTANT counter_port, 04• CONSTANT pattern_10101010, AA• NAMEREG sA, interrupt_counter• ; • start: LOAD interrupt_counter, 00 ;reset interrupt counter• LOAD s2, pattern_10101010 ;initial output condition• ENABLE INTERRUPT• ;• drive_wave: OUTPUT s2, waveform_port• LOAD s0, 07 ;delay size• loop: SUB s0, 01 ;delay loop• JUMP NZ, loop• XOR s2, FF ;toggle waveform• JUMP drive_wave• ; • ADDRESS 2B0• int_routine: ADD interrupt_counter, 01 ;increment counter• OUTPUT interrupt_counter, counter_port• RETURNI ENABLE• ; • ADDRESS 3FF ;set interrupt vector• JUMP int_routine

Page 64: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 65: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 66: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 67: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

PicoBlaze 包含一个自动的嵌入式的堆栈,用来当遇到 CALL 指令时保存 PC 的值,在遇到 RETURN(I)是恢复 PC 的值。堆栈不需要初始化(或者用户的控制)。然而堆栈只支持到最多 31 级的嵌套的子程序。

下面给出一个例子来说明这个问题。

Page 68: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 69: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

为了设计容易和满足系统的性能要求,经常需要在一个可编程芯片内使用多个 KCPSM3宏。在 SPARTAN-3或者 Virtex-II芯片内使用一个 BRAM 来提供 1024 个地址空

间。 下面给出多个 KCPSM3共享程序空间的方法。

Page 70: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 71: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 72: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 73: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

Page 74: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

对于少于 8 个的简单输入端口,使用多路复用开关将

其接入输入端口。建议检查综合的结果,以确保特殊的MUXF5 和 MUXF6 被用来构成高效的多路复用结构。 在程序中使用 CONSTANT 来定义多路开关。

由于 PORT_ID 保持有效 2 个周期,因此在多路复用器后加入寄存器来保持其性能。

Page 75: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

有时候,一个提供数据到 KCPSM3电路 , 以知道数据已

经被读取。一个典型的例子是使用 FIFO缓冲区,可以准备下一个被读取的数据。下面给出其结构和时序图。

Page 76: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

KCPSM3输入端口的设计--复杂输入端口 FIFO 时序

Page 77: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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

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

Page 78: 何宾   Tel : 13911127536      email:hebin@mail.buct

北京中教仪装备技术有限公司

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