原创 PicoBlaze 学习笔记5: PicoBlaze设计例子(LED 闪烁)

2009-5-11 17:37 8154 9 11 分类: FPGA/CPLD

PicoBlaze 学习笔记5 PicoBlaze设计例子(LED 闪烁)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


本文是在Spartan-3E Starter kit Demo板上实现PicoBlaze参考设计,通过PicoBlaze控制板上LED灯的亮灭。


当然Xilinx公司关于Spartan-3E FPGA 入门套件板设计实例上也给出了很多关于PicoBlaze的设计实例,大家也可以参考一下,具体网址:


http://china.xilinx.com/products/boards/s3estarter/reference_designs.htm


 


(1)   下载适用于Spartan-3EPicoBlaze模块


Xilinx官网上好像没有应用于Spartan-3EPicoBlaze核,但如果要在Spartan-3E使用PicoBlaze,可以采用PicoBlaze for Spartan?-3, Virtex?-4, Virtex-II and Virtex-II Pro FPGAs,下载地址:


 


http://china.xilinx.com/products/ipcenter/picoblaze-S3-V2-Pro.htm


 


(2) 建立一个新的工程并输入文件名称,如图1所示,选择Spartan-3E Starter kit板的FPGA选择器件XC3S500E-4FG<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />320C作为本参考设计的目标器件,如图2所示。


                                点击看大图


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


1 创建一个新的工程文件


 

点击看大图



 图2 建立一个新的设计工程


 


(2) PicoBlaze处理器的所有设计源文件(包含在任何参考设计中的KCPSM3文件夹中)添加劲没计工程中,这仅仅是一个PioBlaze的内核文件如图3所示.根据设计者的儒耍,叫以分别选择VHDL风格或Verilong源文件。



 


1c644d11-a514-4bff-bf76-466bb1799d2e.JPG


3 PicoBlaze处理器的Verilong源文件


 


(3) 运行Implemcn Deslqn 实现PicoBlaze处理器 4所示.



             124ab483-cf93-45d5-9bc9-b184dadc2506.JPG


                    4 实现PicoBlaze处理器


 


(4) 实现完成后,可以打开设计报告,如图5所示。一个完整的PicoBlaze处理器在XC3S500E中仅需要76Slice176LUTs,资源占用率为1%



点击看大图


                            5 设计报告


 


(5)编写程序代码,可以利用任何文本编辑工具,并以psm格式保存。


  以下是LED.psm部分代码:


 


CONSTANT delay_1us_constant, 0B


      CONSTANT LED_port, 80       ;8 simple LEDs


 


LED:LOAD s0,01              ;其中1 LED


      OUTPUT s0,LED_port         


      CALL wait_1s                 ;调用延时1s程序


      LOAD s0,00                   ;亮那 LED 1s后灭


      OUTPUT s0,LED_port               


      CALL wait_1s                 ;调用延时1s程序


      JUMP LED


下面是调用延时1s程序


…….;


 


完整psm文件  https://static.assets-stash.eet-china.com/album/old-resources/2009/5/11/cfaedf19-a552-4c0b-867b-68161ff8d7e7.rar


 


(6) KCPSM3.EXEROM_form.coeROM_form.vROM_form.vhd(都是下载的PicoBlaze IPAssembler目录下的文件)连同刚才的汇编文件(LED.psm)放在XP根目录下(C:\  XP默认为C)(放在其他盘KCPSM3会显示编译不成功),我放在c:\LED目录里。


开始——运行——cmd




6e979544-82c6-47e9-addc-1758fb1236ec.JPG


 


DOS状态下进入KCPSM3所在文件夹(c:\LED)


 


C:\Documents and Settings\tengjingshu>cd C:\LED


C:\LED>dir


可以看到C:\LED目录下的五个文件


 


C:\LED>KCPSM3 LED.psm               //编译汇编文件


 


 

 


如果成功会出现


点击看大图


 


PASS 5 - Writing reformatted PSM file


           led.fmt


PASS 6 - Writing assembler log file


           led.log


PASS 7 - Writing coefficient file


           led.coe


PASS 8 - Writing VHDL memory definition file


           led.vhd


PASS 9 - Writing Verilog memory definition file


           led.v


PASS 10 - Writing System Generator memory definition file


           led.m


PASS 11 - Writing memory definition files


           led.hex


           led.dec


           led.mem


 


KCPSM3 successful.


KCPSM3 complete.


 



点击看大图 


 


如果成功你会发现c:\LED文件夹里会多了几个文件



 

点击看大图 


 


本文件夹下载:(包括了LED.psm)https://static.assets-stash.eet-china.com/album/old-resources/2009/5/11/229d2cfa-06f5-4f0d-b93f-1e68b7b66c61.rar


 


如果编译成功,将输出的<filename.vhd或<filename.v添加到FPGA的设计中。该文件实际上是一个1k×18bitsROM文件,需要占用FPGA一个BRAM。由于本工程采用Verilog编程,所以把生成LED.v 文件放在工程LED_PicoBlaze中。


 


    如果编译不成功,会出现下面提示:(比如把KCPSM3.exe放在其他目录下F:\



点击看大图


 


(7)编写Verilog顶层文件LED_PicoBlaze.v,连接kcpsm3.vLED.v


下面是LED_PicoBlaze.v代码:


 


module LED_PicoBlize(led_out,clk);


    input clk;


        output[7:0] led_out;


     reg  [7:0] led_out;


        


        wire         clk;


    wire [9:0]   address;


    wire [17:0] instruction;


   


        wire [7:0] out_port;


    wire  [7:0] port_id;


        wire  [7:0] in_port;        //不用的输入接0


        wire         reset;          //不用的输入接0


    wire          write_strobe;


    wire          read_strobe;


    wire          interrupt;


    wire          interrupt_ack;


 


      // Unused inputs on processor


  assign in_port = 8'b 00000000;


  assign reset = 1'b 0;


 


//----------------------------------------------------------------------------------


//


// declaration of KCPSM3


//


//


// declaration of program ROM


//


//----------------------------------------------------------------------------------


//


// Start of test circuit description


//


  


       kcpsm3 processor


       (     


          .address(address),                //10位地址线


          .instruction(instruction),           //18位指令输入


              .port_id(port_id),                 //led输出口地址


          .write_strobe(write_strobe),


          .out_port(out_port),               //led输出


          .read_strobe(read_strobe),


          .in_port(in_port),                  //


          .interrupt(interrupt),


          .interrupt_ack(interrupt_ack),


          .reset(reset),                      //


          .clk(clk));                         //时钟输入


 


     led program


      (     


          .address(address),                //10位地址线


          .instruction(instruction),           //18位指令输出


          .clk(clk));                        //时钟输入


 


//////////////////////////////////////////////////////////////////////


//  main programme


//////////////////////////////////////////////////////////////////////


 


   always@(posedge clk)


           begin


                  if(port_id==8'b10000000)


             led_out<=out_port;


       end


               


endmodule


 


 


要注意的是main programmeport_idI/O地址控制,


 


顶层文件主程序


if(port_id==8'b10000000)


对应psm汇编程序中的


CONSTANT LED_port, 80


 


通过I/O地址控制,控制I/O口的输入输出,最多控制256个地址。


 


(8) 根据PCB的情况修改FPGA的引脚定义(编辑UOF文件),重新对顶层设计文件进行综合及设计实现。Spartan-3E Starter Kit板上LED分布。



时钟采用Spartan-3E Starter Kit板上的50MHz有源晶振(C9输入)


 


81b3bb5e-94c3-45ba-b866-515c345b81bb.JPG


 

LED_PicoBlaze.ucf文件如下:


NET "clk"  LOC = "C9" | IOSTANDARD = LVTTL ;


NET "led_out[0]"  LOC = "F12" | DRIVE = 4  | IOSTANDARD = LVTTL ;


NET "led_out[1]"  LOC = "E12" | DRIVE = 4  | IOSTANDARD = LVTTL ;


NET "led_out[2]"  LOC = "E11" | DRIVE = 4  | IOSTANDARD = LVTTL ;


NET "led_out[3]"  LOC = "F11" | DRIVE = 4  | IOSTANDARD = LVTTL ;


NET "led_out[4]"  LOC = "C11" | DRIVE = 4  | IOSTANDARD = LVTTL ;


NET "led_out[5]"  LOC = "D11" | DRIVE = 4  | IOSTANDARD = LVTTL ;


NET "led_out[6]"  LOC = "E9" | DRIVE = 4  | IOSTANDARD = LVTTL ;


NET "led_out[7]"  LOC = "F9" | DRIVE = 4  | IOSTANDARD = LVTTL ;


 


(9) 然后就可以按照标准的SynthesisImplement(Translate, Map, Place & Route)Generate Programming File以及最后的下载到板上的ROM里面的方式进行了。


 


(10)可以看到Spartan-3E Starter Kit板上的LED0闪烁(隔一段时间亮,隔一段时间灭),时间不是当初汇编设计的1秒,而是好几秒了,说明psm汇编的程序没编写好。


 


    LED_PicoBlaze工程下载:*************https://static.assets-stash.eet-china.com/album/old-resources/2009/5/11/a3522400-10bd-4df8-a862-c0fec464037f.rar**************


      大功告成,让我们玩转PicoBlazeJ


 


 


参考资料:


1)     PicoBlaze处理器设计流流程


http://www.dzsc.com/data/html/2008-9-19/69656.html


2)     关于PicoBlaze编译器KCPSM3的使用 -- 1oh1oh1oh's Blog


http://blog.ednchina.com/1oh1oh1oh/123475/message.aspx 


3)     Picoblaze ISE入门-jame的博客-与非网


http://www.openhard.org/myspace/blog/show_155205.html


4) 常见dos命令详解


http://www.gonet8.com/article/1/0/200512/2208.html

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2015-10-25 22:19

I'm graueftl you made the post. It's cleared the air for me.

coyoo 2012-12-10 13:31

不知道有没有人整理成那种可以离线阅读的资料,这个链接很好,我是想离线的时候也能看到。

用户1052686 2012-12-10 13:04

我早就知道,还是谢谢

用户553229 2010-3-27 09:59

对初学者来说,会得到一定的启发!谢谢

用户1195540 2009-11-10 17:59

初学者,谢谢!
相关推荐阅读
藤井树 2015-10-12 14:43
印制电路板的抗干扰设计 zz
印制电路板的抗干扰设计     作者:中船重工集团第707所 肖麟芬   摘   要:本文以印制电路板的电磁兼容性为核心,分析了电磁干扰的产生机理...
藤井树 2013-10-22 15:32
2010.5.30 黄草梁上包饺子一日登山活动——摘韭菜篇
        上次桃花节的时候也有野韭菜,那时候的我连草和韭菜叶分不清,才回去的韭菜也不敢吃,哈哈,这次可算真正见识了韭菜,黄草梁也叫韭菜梁,因为满山遍野都是野韭菜而闻名,比较圆比较粗的就是野韭...
藤井树 2013-10-22 15:28
2010.5.30 黄草梁上包饺子一日登山活动——包饺子篇
摘韭菜回来,大家已经忙开了 我也装模作样地“工作着” 哈哈,还不让我包,包饺子是技术活,一定要皮薄馅厚才有资格包,像我这样的只能旁观了 摘的韭菜应该足够了,旁边那个袋子是我摘来带回学校的 ...
藤井树 2013-08-09 15:19
datasheet下载网站整理(查IC芯片手册)【原创】
*************************************************************************         作为电子工程师,芯片的dat...
藤井树 2010-06-04 00:21
陈伟宁王辉一家捐助渠道(北京菲亚特—英菲尼迪)
       王辉的最新消息请关注 http://chenweining.org/       目前事故责任认定已经出来了——陈家全责。        发信人: program (程序), 信区: D...
藤井树 2010-06-01 13:43
2010.5.30 黄草梁上包饺子一日登山活动——美景篇
这天不得不说的是天空,蓝蓝的天空,白白的云    绿油油的山脊  我、洪涛哥哥、huangna妹妹还有她同事小艾走在黄草梁上    在蓝天白云下合影       阳光照过来,景色真美 象鼻山,走不...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条