1、PicoBlaze程序的仿真调试工具——pBlazIDE
这是一款非官方的调试仿真工具,官网下载地址目前无法进入,现将其上传至CSDN网站。下载地址如下。
http://download.csdn.net/detail/kpsuwen/8974053
软件界面如下所示,不多做说明。
pBlazIDE与标准的KCPSM3语法相比,除中断处理和其他少量语句外,大部分均相同。在导入KCPSM3程序时,pBlazIDE会自动完成语法转换,无需人工干预。必须注意的是,pBlazIDE对KCPSM3语法中I/O端口的定义不会自动转换,必须手动修改,否则编译时会报错。例如,KCPSM3语法中输出端口定义LED EQU 1应修改为LED DSOUT 1,输入端口和双向口的定义与此类似。
pBlazIDE仿真调试步骤如下:
1) 打开软件,在Settings里选择合适的Picoblaze 类型,对于Spartan3、VirtexII或VirtexII Pro系列FPGA选择Picoblaze 3即可,本例程中使用的器件为S6,也选择的Picoblaze 3模式。其它设置可以自己摸索,本此实验没有多做配置。
2)点击File→Import命令,导入KCPSM3语法格式的LED.psm源文件,pBlazIDE会自动完成语法转换。
3) 手动修改I/O端口定义,以满足pBlazIDE语法要求。即输出端口定义LED EQU 1应修改为LED DSOUT 1
4) 单击Assemble&Simulate按钮,对程序进行汇编,如果程序没有错误,即可开始仿真。仿真既可以全速运行,也可以单步运行,并可设置断点等,大部分功能与常用的单片机开发软件Keil 51类似。在仿真过程中,可以查看或修改寄存器和存储器内容,监测I/O输出是否与预期结果相符,设置输入端口值和模拟端口输入;另外,还可以对外部中断进行模拟仿真,极大地方便了用户程序调试。
KCPSM源码与pBlazIDE源码的区别如下表所示
仿真调试工具说明就此结束,此部分多是参考别人的博客、资料等。最后会将参考资料一并列出。
2、PicoBlaze程序快速调试更新说明
KCPSM6版本相比KCPSM3版本在程序快速调试更新方面有很大不同,此处以KCPSM6为基础进行说明,参考资料来自KCPSM6_User_Guide_30Sept14文档(P25~P29)。
程序较大时,编译综合需要很长时间,如果对PB功能程序进行更改,十分影响工作效率。还好采用JTAG Loader进行调试无需重新综合、布线,可以通过JTAG口直接修改PB的程序,几秒钟即可完成。
1)准备,查看ROM文件是否支持快速调试,打开ROM_form.v文件,模块参数定义部分,令C_JTAG_LOADER_ENABLE = 1,表示支持快速调试。
2)程序修改后,使用kcpsm6.exe编译,本次快速调试使用的文件是LED.hex文件,将其复制到KCPSM6包下的JTAG_Loader文件夹中。LED.v文件留作调试结束后重新烧写时使用。
3)根据电脑操作系统版本打开命令窗口,如下图所示
打开之后,出现以下界面
运行KCPSM6包中JTAG_Loader文件夹下的JTAG_Loader_Win7_64.exe(根据操作系统选择),对硬件进行验证,运行结果如下。
接下来,运行JTAG_Loader_Win7_64.exe -l LED.hex,对新程序进行下载。如下所示
看到successfully,就是成功了,可以查看硬件输出效果了。
为了进行本次实验稍微对程序进了改动,如下所示,有兴趣可以和之前程序进行比较。
LED:LOAD s0,02
OUTPUT s0,LED_port
CALL delay_1s
LOAD s0,00
OUTPUT s0,LED_port
CALL delay_1s
JUMP LED
说明:通过JTAG Loader快速调试仅止于调试,调试完成之后还是需要重新编译、烧写程序。如有不明,可以参考用户手册
参考资料:
1、pBlazIDE仿真调试学习了以下资料
http://blog.csdn.net/makebuaa/article/details/7796656
http://www.eefocus.com/fpga/317087
2、书籍资料《Xilinx可编程逻辑器件设计与开发(基础篇)》,有一章讲解了PB软核的使用和仿真调试,很详细,可以学习一下。在CSDN网站上有相关资料下载。
3、tengjingshu博客有LED程序仿真调试的具体细节,再次感谢,地址如下
http://bbs.ednchina.com/BLOG_ARTICLE_228913.HTM
4、JTAG快速调试主要参考的用户手册,就在KCPSM6的压缩包内。