slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
何宾 Tel : 13911127536 email:hebin@mail.buct PowerPoint Presentation
Download Presentation
何宾 Tel : 13911127536 email:hebin@mail.buct

Loading in 2 Seconds...

play fullscreen
1 / 78

何宾 Tel : 13911127536 email:hebin@mail.buct - PowerPoint PPT Presentation


  • 175 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '何宾 Tel : 13911127536 email:hebin@mail.buct' - yves


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

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

何宾

Tel:13911127536

email:hebin@mail.buct.edu.cn

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

slide2
培训内容

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

Xilinx公司介绍

Xilinx公司产品概述

Xilinx公司软件平台介绍

Xilinx公司ISE10.1软件及简单设计流程介绍

PicoBlaze8位嵌入式微控制器原理

EXCD-1硬件开发平台介绍

基于ISE10.1和PicoBlaze8位微控制器的设计实现

Xilinx片上可编程系统原理介绍

基于EDK10.1和MicroBlaze32位软核处理器的设计实现

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

Xilinx提供了基于以下嵌入式处理器的片上可编程

系统解决方案。

PicoBlaze8位嵌入式软核微控制器

PowerPC405/PowerPC440嵌入式硬核处理器

MicroBlaze32位嵌入式软核处理器

ARM嵌入式硬核处理器(未来,预计今年底)

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

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

机 )的微控制器, 已经被专门设计和优化,用于Xilinx

的Virtex和Spartan系列的FPGA和CoolRunner-II CPLD器

件。

PicoBlaze比现有的8位的微控制器消耗的资源更少,

并且提供了免费的、源码级的VHDL代码。

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

1.免费的PicroBlaze核

所得到的PicoBlaze微控制器是一个可综合的VHDL

源代码。所以,该核可以移植到Xilinx的未来的产品

上。

2. 容易使用的汇编器

PicoBlaze的汇编器是一个简单的DOS程序,该汇编器

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

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

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

和仿真模型。

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

3. 高性能

PicoBlaze每秒传递44-100 million指令(取决于

FPGA的类型和速度等级),比商业上可用的微控制器快

好几倍。

4. 较小的逻辑消耗

PicoBlaze消耗192个逻辑单元,比如大约消耗

Spartan-3 XC3S200器件5%的逻辑单元。由于只占用很小

部分的FPGA和CPLD资源,工程师可以使用多个PicoBlaze

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

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

5. 100%嵌入式能力

PicoBlaze核嵌在FPGA或CPLD内部,不需要外部的资

源。通过将额外的逻辑和微控制器的输入和输入端口连

接后,可扩展其基本功能。

picoblaze kcpsm3
PicoBlaze的一个实例--KCPSM3结构原理图(可编程的状态机)PicoBlaze的一个实例--KCPSM3结构原理图(可编程的状态机)
picoblaze kcpsm31
PicoBlaze的一个实例--KCPSM3内部详细结构

程序空间

KCPSM3支持程序的指令可以到1024(使用一个

BRAM),多个KCPSM3处理器可以用于处理不同的任

务。

16个通用寄存器

16个8位的通用寄存器,标号s0-sF(在汇编器中可能

被重新命名)。所有的操作所使用的寄存器是非常灵活

的(没有专用的或优先级)。在KCPSM3中没有累加器,

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

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

ALU

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

操作数。结果返回到该寄存器。对需要两个操作数的操

作,第二个操作数来自sY寄存器或8位常数kk。

ADD和SUB操作可以包含进位标志作为一个输入

(ADDCY和SUBCY),用于支持宽度大于8的算术操作;

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

持SHIFT和ROTATE操作;

COMPARE和TEST指令可以测试寄存器的内容(不

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

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

标志和程序流控制

ALU的运算结果影响ZERO和CARRY标志位。CARRY

也可以用于捕获在移位和旋转指令操作时,位移出寄存

器的操作。在TEST指令,CARRY标志也用来标识,是

否8位的暂时结果是ODD PARITY(奇校验)。

这个标志也用来确定程序的执行序列。JUMP跳转到

程序空间的绝对地址,CALL和RETURN提供了自程序

功能(代码段)。堆栈支持31个嵌套的子程序级。

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

复位

处理器返回到初始状态。程序从000开始,禁止中断,

状态标志和CALL/RETURN栈复位。不影响寄存器内容。

输入/输出

支持最多256个输入和256个输出端口。使用PORT_ID

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

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

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

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

入操作用一个READ_STROBE脉冲标识(不总是需的),

但可以指示数据被处理器接收到。

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

出操作用一个WRITE_STROBE脉冲标识,该信号被接口

逻辑用来保证有效的数据被送到外部的系统。典型的,

WRITE_STROBE用于时钟的使能或写使能。

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

内嵌存储器

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

指令将16个寄存器中的任意一个寄存器的内容写入64个地

址位置中,FETCH指令将存储器中任一个位置的内容写入

到16个寄存器中的任意一个寄存器中。这允许在处理器边

界内可以保持有更多的变量,也用于保留所有的I/O空间

用于输入和输出信号。

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

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

使用一个简单的逻辑连接多个信号。默认禁止中断,在程

序中可以使能/禁止中断。活动的中断,使KCPSM3初始

化“CALL 3FF”(一个子程序调用最后的存储器位置),这里定义了用户定义的跳转向量到中断服务程序ISR。

INTERRUPT_ACK输出产生脉冲。ZERO和CARRY自

动的被保护,禁止其它中断。“RETURNI”指令保证ISR的结束,回复状态标志,并说明使能/禁止未来的中断。

中断

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

注: 程序ROM的名字取决于用户程序的名字,比如如果

程序文件叫“phone.psm”,汇编器将产生程序ROM的定义

文件叫“phone.vhd”。

picoblaze 2
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 21
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 22
PicoBlaze指令集(需要2个周期)--中断组 --存储组

RETURNI ENABLE

RETURNI DISABLE

ENABLE INTERRUPT

DISABLE INTERRUPT

STORE sX,ss

STORE sX,(sY)

FETCH sX,ss

FETCH sX,(sY)

picoblaze 23
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 汇编器--原理及操作

KCPSM3汇编器提供一个简单的DOS可执行文件和

三个模版文件,将KCPSM3.EXE, ROM_form.vhd,ROM

_form.v和ROM_form.coe文件复制到工作目录下。

程序可用标准的Notepad和Wordpad工具编写,文件扩展名为.psm(8字符名字限制)。

打开一个DOS对话框,并定位到当前的工作路径下。然后运行汇编器“kcpsm3<filename>[.psm]”来汇编所编写的程序(运行速度很快)。

kcpsm32
KCPSM3 汇编器--错误处理

当遇到错误时,汇编器将停下来。将显示一个短消

息来帮助判断引起错误的原因。汇编器将显示遇到问题

的行。设计者然后修改错误重新运行汇编器程序。

kcpsm33
KCPSM3 汇编器--文件组成

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

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

kcpsm3 rom form vhd
KCPSM3 汇编器--ROM_form.vhd

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

件,和汇编器一起提供,在工作路径下。

该文件为Spartan-3,Virtex-II,Virtex-II Pro的单端口

BRAM配置为ROM.下面给出该文件的模版。

kcpsm3 rom form vhd1
KCPSM3 汇编器--ROM_form.vhd

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

出文件<filename>.vhd。不进行其语法的检查。

该文件包含一些特殊的文本串,包含{}。

Attribute AttributeName of ObjectList : ObjectType is AttributeValue;

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

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

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

kcpsm3 rom form coe
KCPSM3 汇编器--ROM_form.coe

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

件和汇编程序一起提供,并且同在一个工作目录下。

ROM_form.coe模版文件为Spartan-3,Virtex-II和其它

FPGA定义了一个双端口存储器。

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

出文件<filename>.vhd。不进行其语法的检查。

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

文件的最后一行关键字

memory_initialization_vector=

将要被核生成器标识后面的数据值。汇编器将添加

1024个所要求的值。

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

该文件是对

原始的.psm文件

的格式化,使源

文件看上去更好

看。下面给出该

文件。

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

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

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

这两个文件提供了行标号的列表和它相关的地址,

以及常数的列表和值。

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

pass.dat文件是汇编器的内

部文件,用来表示汇编过程中

的中间步骤。这些文件可不去

理会,但能帮助识别汇编器如

何理解(翻译)程序的。当开

始汇编时,这些文件自动删

除。

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

1)没有空行- 空行将被汇编器自动去除,如果保持

一行用一个空的注释(用分号“;”)

2)注释- 用分号“;”开始,汇编器忽略注释。

3)寄存器- 所有寄存器必须用“s”定义,后面跟16进制

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

“sX”格式。

4)常数- 常数用两个16进制数表示,范围“00”-“FF”,

汇编器接受大小写的混合输入,但是将其转换为大写。

5)标号- 标号是用户定义的字符串,区分大小写。

中间不能有空格,支持下划线“_”。

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

6)行标号-用来标识一个程序行,用于JUMP和

CALL指令的参考,行标号后面跟一个冒号“:”。

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

7)汇编器允许使用空格和<TAB>字符,但是指令

和第一个操作数之间必须至少有一个空格。带有两个操

作数的指令,其两个操作数之间必须用“,”分割符。

8)汇编器接受大小写混合编程,但是自动的将其

转化为大写。

kcpsm38
KCPSM3编程语法--常数指令

常数是全局的,即使常数在程序的末尾定义,它也

能在程序的任何地方被使用。

kcpsm3 address
KCPSM3编程语法--ADDRESS指令

LOG文件给出的描述。

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

kcpsm39
KCPSM3中断处理--中断使能

使用ENABLE INTERRUPT指令来使能中断。当不

允许中断时,使用DISABLE INTERRUPT来禁止中断。

使用RETURNI ENABLE/DISABLE指令来从中断返回主

程序。

当中断产生时,进行下面的步骤:

1)将程序计数器入栈,保护CARRY和ZERO标志;

2)禁止中断输入;

3)程序计数器的值为“3FF”。

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

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

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

指令,程序将转向“00”。

中断服务程序可以放在程序的任何位置。ISR执行所

要求的任务,用RETURNI结束。

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

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

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

形。通过对S0寄存器递减来以固定的间隔来写数值。

响应中断后,PicoBlaze停止产生波形,然后对sA寄

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

kcpsm313
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

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

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

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

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

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

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

为了设计容易和满足系统的性能要求,经常需要在

一个可编程芯片内使用多个KCPSM3宏。在SPARTAN-3

或者Virtex-II芯片内使用一个BRAM来提供1024个地址空

间。

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

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

对于少于8个输出的端口可以尝试分配”one-hot”地

址,然后确保只解码正确的PORT_ID信号。这省去大量

的逻辑和地址解码。同时,降低了PORT_ID总线上的负

载。

在程序中使用CONSTANT指令使代码可读,并且确

保使用了正确的端口。

kcpsm320
KCPSM3输出端口的设计--带解码和高性能的输出端口KCPSM3输出端口的设计--带解码和高性能的输出端口
kcpsm321
KCPSM3输入端口的设计--简单输入端口

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

其接入输入端口。建议检查综合的结果,以确保特殊的

MUXF5和MUXF6被用来构成高效的多路复用结构。

在程序中使用CONSTANT来定义多路开关。

由于PORT_ID保持有效2个周期,因此在多路复用器后

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

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

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

经被读取。一个典型的例子是使用FIFO缓冲区,可以准

备下一个被读取的数据。下面给出其结构和时序图。

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

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