原创 PicoBlaze相关简介

2008-6-22 12:03 2996 9 9 分类: FPGA/CPLD

下面介绍KCPSM3.zip中所包含的各个文件以及PicoBlaze的结构作一个简要说明。
1为解压后的KCPSM3的目录结构: <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


1 KCPSM3文件目录结构图 


 



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




 kcpsm3.vhd


KCPSM3的核心VHDL描述 


 embedded_kcspm3.vhd


连接了program ROMKCPSM3VHDL描述文件


 kcpsm3_int_test.vhd


压缩包自带的设计案例的VHDL文件


 test_bench.vhd


对应kcpsm3_int_test.vhd的测试VHDL文件,相当于一个kcpsm3 test bench的模版


 uart_clock.vhd


基于UART的实时时钟参考设计的VHDL文件


 uart_tx.vhd


UART发送器核,带有8位数据位,无奇偶校验,1位停止位,整型16字节FIFO缓冲器,占用了18Slice


 uart_rx.vhd


UART接收器核,带有8位数据位,无奇偶校验,1位停止位,整型16字节FIFO缓冲器,占用了22Slice


 kcuart_tx.vhd


UART发送器核,带有8位数据位,无奇偶校验,1位停止位。可作为发送器单独使用,但一般作为uart_tx的组成部分来使用


 kcuart_rx.vhd


UART接收器核,带有8位数据位,无奇偶校验,1位停止位。可作为发送器单独使用,但一般作为uart_rx的组成部分来使用


 bbfifo_16x8.vhd


深度为16字节的FIFO,占用资源为8 Slice。在uart_txuart_rx中用到,也可作为FIFO单独使用


 uart9_tx.vhd


带有奇偶校验和16字节FIFOUART发送器


 uart9_rx.vhd


带有奇偶校验和16字节FIFOUART接收器


 kcuart9_rx.vhd


带有奇偶校验的UART接收器


 kcuart9_tx.vhd


带有奇偶校验的UART发送器


 bbfifo9_16x9.vhd


深度为16字节的FIFO,占用资源为9 Slice。在uart_txuart_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.EXE


KCPSM3的汇编程序 


 ROM_form.vhd


生成ROMvhd文件模版


 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——该目录下包含了适用于PicoBlazeJTAG工具:




 hex2svfsetup.exe


JTAG用到的可执行程序 


 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


 


 


 


KCPSM3是一个picoblaze的的处理器型号,用于时序要求不高的场合。相当于一个状态机。


    结构图如下:




ALU


提供很多8bit的操作。所有的操作利用从Sx来的一个操作数。结果背返回到原来的寄存器。操作还需要另一个操作数sY,或者一个8bit的常量(kk)。为了简化指令,ADD 直接加上常数和INCREMENT操作一样,比如 “ADD <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1”


     ADDSUB包含了进位(ADDCYSUBCY)以支持大于8位的算术操作。


     LOADANDORXOR bit-wise操作提供操作和测试值的能力。


     全面的包括SHIFTROTATE


     COMPARETEST指令使得能够测试寄存器的值而不需要改变他们的值,并进行奇偶校验。


Flag and Program Flow Control


     ALU的结果决定ZEROCARRY的值。ZERO有效,当ALU的所有值多是0的时候。Carry当有进位产生时有效。Carry也背用来做shift作用。在TEST命令时,作为结果是否满足奇偶校验的要求。


      Flag的状态也能被用来有条件和无条件程序就程控制的执行顺序。JUMP用于执行完全的(aaa)地址空间的指令。CALLRETURN指令为一般使用的代码提供一个子段。CALL指令是为一个“完全地址“(aaa)和一个内部程序计数器栈保持RETURN需要的相应的地址。栈可以存32个。


Reset


RESET强迫处理器进入初始状态。程序会充“00“开始执行,并且中断无效, 状态表示和CALLreturn也会被复位,


Input/Output


256个输入和输出。写入数据的端口的“地址“被一个8bit”port-ID”标识。端口地址也能在程序中用“完全值”(pp)来表示,或者间接的用任一个sY来确定。


INPUT操作进行时(写入数据到寄存器),那么READ_ATROBE信将来一个脉冲。WRITE_STROBE同理。


Scratch Pad Memory


一个内部的64byte一般用途的memory16 个寄存器中任何一个能被写入到64byte中的任何一个,使用STORE命令。FETCH命令能够把64byte中的任何一个写入到16个寄存器中。这就允许一个更多数目的变量能够被“保持”在boundary of the  process


 

 


 


 

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条