博客首页 | 排行榜 |

simux的博客

个人档案
博文分类
PicoBlaze 介绍(二)  2008-02-26 14:10

前面已经简要的介绍了一下PicoBlaze。而这一次,我将介绍一下PicoBlaze的结构。以便让大家知道初步了解PicoBlaze的相关HDL文件和工具,为将来进行自己的PicoBlaze设计打下基础。


Xilinx对于PicoBlaze的IP核是免费提供的,你可以从如下网址进行下载:
http://www.xilinx.com/products/ipcenter/picoblaze-S3-V2-Pro.htm

 

需要注意的是,PicoBlaze对应Xilinx不同系列的CPLD和FPGA有不同的版本,因此在下载前你需要确认一下你所使用的硬件平台。这里我所使用的是Spartan3系列和Virtex-II Pro平台对应的PicoBlaze IP核。 

 

同时,下载该IP核的充分条件为:
1) 必须拥有一个Xilinx网站的Account,也就是你在Xilinx的站点下载各种文档资料、参考设计压缩包以及IP License的通行证;
2) 填写一份调查表,包括你从事行业的领域,职位,使用PicoBlaze的目标领域等问题。
完成以上步骤之后,就能够顺利地从Xilinx的网站上下载到PicoBlaze核了。下载到的IP核是一个名为KCPSM3的zip压缩包,将它解压缩到你想要放置它的位置(注意!!:路径中不能有空格以及中文—这是使用Xilinx工具必须特别注意的地方)。

下面就让我对KCPSM3.zip中所包含的各个文件以及PicoBlaze的结构作一个简要说明。
图 1为解压后的KCPSM3的目录结构:

图 1 KCPSM3文件目录结构图 

 

  • VHDL目录——该目录中包含了KCPSM3 的VHDL文件,如果工程师使用的开发语言是VHDL,则可直接调用该目录下的vhd文件:
 kcpsm3.vhd

KCPSM3的核心VHDL描述 

 embedded_kcspm3.vhd连接了program ROM的KCPSM3的VHDL描述文件
 kcpsm3_int_test.vhd压缩包自带的设计案例的VHDL文件
 test_bench.vhd对应kcpsm3_int_test.vhd的测试VHDL文件,相当于一个kcpsm3 test bench的模版
 uart_clock.vhd基于UART的实时时钟参考设计的VHDL文件
 uart_tx.vhdUART发送器核,带有8位数据位,无奇偶校验,1位停止位,整型16字节FIFO缓冲器,占用了18个Slice
 uart_rx.vhdUART接收器核,带有8位数据位,无奇偶校验,1位停止位,整型16字节FIFO缓冲器,占用了22个Slice
 kcuart_tx.vhdUART发送器核,带有8位数据位,无奇偶校验,1位停止位。可作为发送器单独使用,但一般作为uart_tx的组成部分来使用
 kcuart_rx.vhdUART接收器核,带有8位数据位,无奇偶校验,1位停止位。可作为发送器单独使用,但一般作为uart_rx的组成部分来使用
 bbfifo_16x8.vhd深度为16字节的FIFO,占用资源为8 Slice。在uart_tx和uart_rx中用到,也可作为FIFO单独使用
 uart9_tx.vhd带有奇偶校验和16字节FIFO的UART发送器
 uart9_rx.vhd带有奇偶校验和16字节FIFO的UART接收器
 kcuart9_rx.vhd带有奇偶校验的UART接收器
 kcuart9_tx.vhd带有奇偶校验的UART发送器
 bbfifo9_16x9.vhd深度为16字节的FIFO,占用资源为9 Slice。在uart_tx和uart_rx中用到,也可作为FIFO单独使用
如图 2所示,该图清楚地表明了PicoBlaze设计的HDL文件层次结构(对于用Verilog描述的设计也是这种结构,在此仅以VHDL为例);
   
图 2 PicoBlaze HDL层次结构图 
  • Verilog目录——该目录中包含了KCPSM3 的Verilog HDL文件,如果工程师使用的开发语言是Verilog,则可直接调用该目录下的v文件(包含的文件作用与同名的vhd文件相同,在此不再说明);
  • kcpsm3.ngc——该文件为经过封装了的kcpsm3的网表文件,在非HDL的设计流程中可以作为Black Box使用;
  • Assembler——该目录下包含了将psm文件转换成ROM文件所需的各种工具:
 KCPSM3.EXEKCPSM3的汇编程序 
 ROM_form.vhd生成ROM的vhd文件模版
 ROM_form.v生成ROM文件的v文件模版
 ROM_form.coe生成ROM所需的系数的模版
 cleanup.bat批处理文件,能自动清理KCPSM3.EXE对*.psm汇编后产生的文件
 int_test.psm压缩包自带的设计案例的psm汇编文件
 uclock.psm基于UART的实时时钟的psm汇编文件

  • DATA2MEM_assistance——该目录包含了能直接修改bitstream文件中的Block Memory所在的数据段的工具:
 PB_BMM.EXE能够定位FPGA配置文件中的Block Memory所在的数据段 (注1)
 change_pb_bits.bat批处理文件,能够自动进行Block Memory中的数据修改
注1:该工具对于基于PicoBlaze设计的配置文件bitstream是可行的(这应该是因为基于PicoBlaze的设计结构简单),对于其他设计生成的bitstream文件不一定可行。
  • JTAG_loader——该目录下包含了适用于PicoBlaze的JTAG工具:
 hex2svfsetup.exeJTAG用到的可执行程序 
 hex2svf.exe同上
 svf2xsvf.exe同上
 playxsvf.exe同上
 jtag_loader.bat批处理文件,能够自动按顺序执行上述4个可执行程序
 JTAG_Loader_ROM_form.vhd包含了JTAG接口的ROM模版,VHDL格式
 Normal_ROM_form.vhd常规ROM模版,同前面的ROM_form.vhd
 JTAG_Loader_ROM_form.v包含了JTAG接口的ROM模版,Verilog格式
 Normal_ROM_form.v常规ROM模版,同前面的ROM_form.v

 

如果各位有使用过8051或者其他的8/16位的单片机的话就应该知道,主要的开发方式就是对其进行编程并将程序烧写进Flash中。基于PicoBlaze的开发方式也是也大致如此,稍有差别的就是需要将PicoBlaze认识并执行的程序经过Assembler转换成相应的HDL文件以存放在FPGA内部的Block Memory中(也正因为如此,PicoBlaze执行一条指令所需的时钟周期也是固定的)。下图是PicoBlaze核的一个结构框架图:

  

 

图 3 PicoBlaze结构框架图

 

 

图 3中,微控制器核心KCPSM3从Block Memory里面读取程序并按顺序执行。在这里我们可以看到PicoBlaze的存储空间为1024x18bit,也就是能够存放1024条位长为18的指令。而PicoBlaze支持的指令集也很精简,只有57条,包含了程序控制类(跳转,调用,返回),算数类(加,减,比较),逻辑类(与,或,异或),中断类(中断开启/关闭),移位/旋转类(左移/右移,左旋/右旋),输入/输出类(输入,输出)。

 

图4 KCPSM3 核心结构图 
关于通用寄存器

KCPSM3中一共有16个长度为8位的通用寄存器,每个寄存器都可以在汇编代码中分别命名。

关于中断

KCPSM3只支持1个中断信号,但实际上可以将多个中断信号用逻辑组合的方式变成一个来用(当然这样的话会降低单中断通道的性能)。

关于Scratch Pad Memory

我不知道Scratch Pad Memory该如何翻译。它的大小为64 Bytes,作用相当于一块临时存储区,比如在中断例程ISR中可以将其作为临时变量适用。

进行PicoBlaze设计的方法如下(也可以使用前面所说的DATA2MEM或者JTAG_loader工具来开发):

1. 首先在文本编辑器中用上述的这些指令实现特定的状态机,并以psm格式保存;
2. 然后按照图 4的流程生成符合能够存放在Block Memories中的ROM格式的vhd文件或者v文件,将vhd文件(或者v文件)作为PicoBlaze的Program在稍后的设计中以供调用;
3. 在ISE中建立一个工程,写一个顶层文件,将kcpsm3,program,transmitter和receiver等各模块包括进来,在这里使用UART的目的是将其作为PicoBlaze的控制台,分别用transmitter和receiver作PicoBlaze的输入控制和输出显示通道。
4. 编辑UCF文件,指定FPGA的输入输出管脚。
5. 然后就可以按照标准的Synthesis,Implement(Translate, Map, Place & Route),Generate Programming File以及最后的Download Bitstream的方式进行了。


图 5 由psm文件转换成ROM格式的vhd文件或v文件 

 

以上是我自己对KCPSM中各个模块以及文档说明的理解,如有疏漏或错误之处,欢迎大家在此提出!让我们共同进步!

参考文献:
[1] PicoBlaze 8-bit Embedded Microcontroller User Guide, ug129, Xilinx. Inc
[2] KCPSM3_Manual.pdf,
     Available at http://www.xilinx.com/products/ipcenter/picoblaze-S3-V2-Pro.htm
[3] JTAG_Loader_quick_guide.pdf,
     Available at http://www.xilinx.com/products/ipcenter/picoblaze-S3-V2-Pro.htm


|
上一篇:PicoBalze 介绍(三) | 下一篇:PicoBlaze 介绍(一)
以下网友评论只代表其个人观点,不代表本网站的观点或立场