原创 CPLD(初级编)林珍文

2006-11-20 20:35 4169 7 7 分类: MCU/ 嵌入式
最近好几位网友在问我有没有一些关于CPLD的资料,正好年末了没什么事就跟大家一起谈谈我曾经的CPLD历。现在想想过去还是用两个字形容“好玩”。嘿嘿!至于怎么好玩呢?那就看你怎么玩她了你可以用她来做CPU或者用她RAM或将你板上所有的74xx的芯片一同替代掉。其实,CPLD在我们平时使用中很有多,比如用来扩展ARM7的TFT接口和VGA接口这点很容易就实现了。或者你也可以用她来做PCI卡跟ARM7的时序转换等等。
接下来我们从最初一步步走起吧。
首先,先看看她长什么样子吧。
2005122418453470938.jpg
那,看到了吧!还是一只大螃蟹。别急!别急!不要害怕。可以直接将她看成只有VCC、GND、IO只有这3类脚。这下就不会担心怎么用这些脚了吧。我不会担心你还会直接将VCC或GND接到你的MCU的I/O上用吧。
接下来再说说她的工作方式。通常我们在使用的时候已经习惯了流程是一步步的进行下去。但在CPLD里要改一改这种观念了。CPLD的Symbol可是并行运行的哦,哇!哪不是等于有好多个CPU在一起执行了。嘿嘿!对了,就是这样的。想想她如果不这样的话怎么代替其他的芯片工作呢?比如就用她来模拟成二个 74LS138等等之类的。所以她的工作模式是并行的,当然也有串行执行的。这下明白了吧。
    看过了她的长像知道了工作模式,接下来再该是什么呢!再来说说她的运行环境吧。我想迫不及待的你一定想搞一个CPLD来玩吧。不要急,咱慢慢来。玩过51的朋友一定都知道想要让51工作起码要二个零件,一个复位电容,一个晶振就可以让一个51跑起来了。CPLD呢就更直接了。什么都不需要直接加上电就开始运行了,而且速度一定会吓死你。想想简单吧。哦!对了对了,还要搞一个ISP的下载线这样才能下载程序是不!我怎么将这给忘了,大意啊。怎么样比51简单吧,连编程器也省了。关于下载线网上有好朋自制的图随便去搞一个接接就行了,很简单的。
好了,看来该是说软件的时候了,我用的软件是ALTERA公司的Quartus II 这个软件我个人感觉比Max+PLUS应该是更人性化许多了。
同样,来看看她的样子吧。
2005122418485161070.jpg
赶快去下一个Trial版本来试用一把吧。装完了就动手吧。在File菜单里有一个New Project Wizard,创建一个新的工程,我这里工程名叫PortCopy。那是因为接下来我要跟大家做一个端口复的Demo。创建完工程后就会出现上述的画面。当然这时候你还不能在这工程里做任务事。还要在 New一个文件。
同样通过File菜单我们来New一个Block Diagram/Schematic File,好了File New好了。出现如下画面。
200512241850364927.jpg
看到了没,New出来的File缺省名是Block1.bdf这时要做的第一件事就是存盘了。
保存的时候会自动将你的名字改成当前工程的名字。记住哦是用Save as…不是Save嘿嘿。奇怪吧,千万不要问我,我也不知道。只知道是怎么用的了。
一点Save as..名字自动会变成PortCopy不要改他直接点OK吧。然后工程就开始生效了。
好咯。开始干活了。
在空白地方双击鼠标选择出现Symbol窗口。
2005122418512012744.jpg
选择/primitives/pin/input 加一个引脚。我在这再啰嗦二句。这个pin呢就是最后对应的芯片外部的引脚,看到pin下的列表没,有三个选择
Bidir 是代表双向的I/O
Input 只做为输入
Output 只做为输出
这些端口你可以随便用吧,不要担心芯片的引脚会不直持。(附:还真有一些引脚不支持但没关系,你一般不会碰到这种情况的,要是碰到了你可以去买个彩票来。嘿嘿!起码在这里我不会让你将input放到只output的引脚上,或将output放到只input的引脚上)
少啰嗦一下说了这么多,sorry!快点OK吧。将将选择的input 放到工程里。
2005122418523186839.jpg
放好后再双击她,将名字改成myInputPin(注意大小写啊)Quartus II是对大小写敏感的。同上述的方法再加一个output pin将名字定成myOutputPin
2005122418533165265.jpg
最后用鼠标在将两个pin连接起来。(鼠标慢慢在在pin旁边动你就会知道怎么做了)
上面的逻辑你应该是一看就明白了吧。就是直接将myInputPin的值直接复制给myOutputPin了。
连接好后点击processing菜单里的Start Compilation 编译一下工程。
2005122418541979475.jpg
恭喜恭喜。编译成功了。
嘿嘿!别急还有事没做呢!问你一个问题,你知道那个myInputPin和myOutputPin在芯片在你应该接哪2个引脚吗??哈哈。傻眼了吧。
我们通过Quartus II来看看吧。点菜单Assignments再点Timing Closure Floorplan
200512241855677142.jpg
啊哎哎!出事了出事了。我们将面忘了选择芯片了。这里出来的芯片跟我们想要的不一样啊。怎么办呢?好办。点左右工程的Entity栏里的第一个根就是芯片了。
右键点她在弹出菜单里选择Devie。
2005122418561833672.jpg
再将Famliy改成MAX7000S系列的。
这里我们用MAX7000S系列里的芯片型号为EPM7128SLC84-15。找到后确定就OK了。
改完后记得要重新编译一下哦。
然后再点点菜单Assignments再点Timing Closure Floorplan吧。
看看有什么不一样。
200512241857829044.jpg
这下对了。这才是我们想要的芯片。使用放大镜找找看myInputPin和myOutputPin被放在哪里了。
200512241858022666.jpg
我看到一个咯。我的被放在12个引脚上了。你的被放在哪我就不知道了哈哈。注意哦。当你没有定义的时候这些引脚是随机放的。我也不知道她被放在哪了。刚快在你搭起来的电路上下载测试一下效果吧。下载不下去别怪我哦。因为我这里还没开始说怎么下载。嘿嘿!
算了,先不下载吧,我们再来做一件事吧,就是指令引脚,说完了我们再来说配置下载器。在上面的图中找出二个类型为(I/O)的引脚来用吧。将近吧。先11做myInputPin,12做myOutputPin。记住了。
点菜单Assigments里的Assigments Editors或按快捷键Ctrl+Shift+A
2005122418585677634.jpg
选择PIN在下面的列表中定义所需的引脚就OK了。别忘了要编译的哦。
友情提示:将你在To所在的栏里不出现你所要找到的引脚描述建议编译一次工程再找就会有了。
编译完再看看引脚定义吧。
2005122418595471616.jpg
变过来了吧。
 
好咯。来说最后一步了。配置下载器,将原理图下载到芯片上。
打开菜单Tools单击Programmer
在下面画面中点按钮Hardware Setup添加一个ByteBlaster(LPT1)的驱动。
然后在项目名称PortCopy后面将Program/Configure打个√然后点按钮Start就OK了。
200512241905173698.jpg
赶快动作吧。

文章评论0条评论)

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