打印
[CPLD]

Spartan-3E Starter Kit 出厂例程修改与编译

[复制链接]
2133|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
emouse|  楼主 | 2012-11-2 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
**是原创哦,从我的博客贴过来的,欢迎各位参考。

手头有个Spartan-3E Starter Kit的板子,三年了,一直没功夫搞,昨天实验室停电回到宿舍,只有这个板子在身边,其他板子都在实验室,所以决定用一下,之前用的都是Altera的FPGA和CPLD,虽然在FPGA以及CPLD这块Xilinx和Altera势均力敌,但是学校教的是Altera,低端用的也多一点,所以Xilinx就相对比较生疏了,好了闲话不多说,需要说的是之前从没有用过Xilinx的产品,Altera的也只是项目中用用,对于FPGA这块我还是初级菜鸟。这个教程就是对于板子中自带的例程机型修改,最起码可以把液晶上的字符改成自己要的,从软件使用到程序修改总共也就琢磨了几个小时的时间,所以很多地方理解不透彻,好处是同是菜鸟,大家看起来可能容易点,把这篇**写出来也是因为这个板子的资料相对较少,一开始很多人摸不着头脑,算是做点好事了。

首先安装开发环境,ise 13.2,目前最新的是13.4,安装包就5.7G,太大了没下载,虽然我用软件一向追新,这次还是将就着吧,安装过程就不说了,需要的自己百度,装完之后开发板上电,连上usb默认情况下是可以自动安装驱动的,识别开发板的,没有识别的就自己手动更新,让驱动更新程序搜索安装根目录就可以了,我Win7 32位,用起来没有问题。

第二个就是下载官方的参考例程,地址自己去下载http://china.xilinx.com/products/boards/s3estarter/reference_designs.htm
Spartan-3E FPGA Starter Kit Board Design Examples这个例程用的是这个文件:s3esk_startup
文件目录如下

各扩展名的文件啥意思,这里就不在赘述了,bit是已经生成的供下载到fpga中的文件,可以直接下载到板子上,mcs是下载到flash的,如果想让程序断电不丢失,就得下载这个,fpga是基于sram的,断电程序是要丢失的,这点学过的同学应该都清楚。
下面新建工程
点击File-New Project

添上相应的名称,选择路径,主要的地方我都标出来了。

选择使用的开发平台和语言,这个版本还是直接支持我们的板子的,虽然有几年了。
把之前例程解压出来的文件拷贝到新建工程的根目录,添加文件。

把能看得到的几个文件都加上,加了之后如下图所示

这个地方有个问号,看来少了东西,看看附带的文档吧,给的东西当然得看啊,不然还忙活啥。

文档里说了,这个东西没有自带,自己去找吧,不就是一个vhd文件么,找到拷贝进去。另外从这里面对文件的解释大家应该看出来点啥了,这个例程是内嵌了一个8位的微控制器PicoBlaze来实现LCD的控制的,LCD那么多控制指令如果用vhdl来写的话也着实让人郁闷,好了至于PicoBlaze是啥东西,可以自己百度,官方也给了详细的文档,简单的说一下就是一个占用资源非常少,性能还可以的8位控制器,特别说明的是只支持汇编,所以可以用记事本打开最上面那个图中的psm文件,就知道contorl.psm文件是啥作用了,那个就是PicoBlaze的汇编代码。
文件拷贝之后问号就没了,就变成这个样子了

好了,文件齐了编一下试试吧,哎呦喂,出错了,都是官方的文件啊,为啥有错误呢,这个我也不知道,提示是control.vhd的错误。

官方文档里介绍的意思大概能看懂一点,这个文件是通过psm那个汇编文件生成的,因此这个错误先不管,重新生成这个文件再说,这个需要PicoBlaze的编译链接工具了,从下下载到的文件里有一个Assmber的文件夹,文件如下

这些看样子就是工具了,拷贝到工程目录下,下面的工作需要用命令行完成了,首先进入到工作目录用里面的工具kcpsm3 编译链接汇编文件,这个有过gcc或者linux开发的同学应该都清楚,一样的道理,如下图。

编译成功

再看看根目录

一个是多了很多文件,另外这个之前就有的文件看时间就知道已经被更新了,看它的源码

这个文件是根据汇编文件生成的,所以待会想改变lcd显示的字符大家想必应该清楚要改啥地方了。

再编译一下看看

哎呦喂,竟然还有错误,这可怎么办啊,在看看文档吧,自带的文档没看到啥有用的,只能百度了,百度没结果再谷歌看看,终于找到了点信息,上截图


这个家伙就是Xilinx的工程师,所以还是比较可信的,仔细看看大概知道问题了,解决方法就是把s3esk_startup.vhd与JTAG Loader version有关的注释掉,不用这个功能了,其他的也没有具体深究,先试试再说,毕竟才学几个小时,经过不断的改和尝试,终于搞定,编译通过,好了,下载试试,成功了!
接下来改点东西呗,上面已经提示了,改的就是那个汇编文件,因为是Picoblaze这个内嵌的处理器来实现这部分功能控制的,所以就看看他的汇编程序吧,看之前,先抄一段相关的简介先:
PicoBlaze是由VHDL语言在早期开发的小型8位软处理器内核包,其汇编器是简单的DOS可执行文件KCPSM2.exe或KCPSM3.exe,用汇编语言编写的程序经过编译后放入FPGA的块RAM存储器区。在XC3S500E的FPGA中,只用到了96个Silice,也就是只占用到5%的逻辑资源。PicoBlaze执行一条命令需要2个时钟周期,在Spartan3E Starter Kit板上以50MHz时钟为例,PicoBlaze也能达到25MIPS的性能。
好了,看看程序,贴个截图,一看就知道了,汇编程序有点基础的还是比较容易懂的,截图来了

看着点应该就明白了,上面定义了对应ASICII码,这里对应的写入就行了,改成你想要的,然后按照之前介绍的命令行编译流程编译,在ISE中重新生成,最后再下载到你的板子上就OK了。
好了,写了很多了,有些地方介绍的还不是很到位,我也是刚学几个小时,理解上还很肤浅,有兴趣的可以深入在研究研究。有啥不明白的可以留言或者加入我的QQ群,到时候可以再补充。

相关帖子

沙发
gaochy1126| | 2012-11-3 23:34 | 只看该作者
现在的版本都到了14了,楼主赶快更新呀

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-11-4 20:34 | 只看该作者
是呀,欢迎更新。

使用特权

评论回复
地板
jakfens| | 2012-11-5 10:17 | 只看该作者
赞~~

使用特权

评论回复
5
emouse|  楼主 | 2012-11-5 11:03 | 只看该作者
3# GoldSunMonkey 现在用的14.1,安装包越来越大,苦逼还按流量计费的娃儿伤不起啊

使用特权

评论回复
6
GoldSunMonkey| | 2012-11-5 22:29 | 只看该作者
3# GoldSunMonkey 现在用的14.1,安装包越来越大,苦逼还按流量计费的娃儿伤不起啊
emouse 发表于 2012-11-5 11:03
天,你怎么会。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

88

帖子

4

粉丝