(转)CycloneIII设计向导
全文地址:http://blog.ednchina.com/ishock/190136/message.aspx
CycloneIII设计向导-第一篇.芯片选型
公司开始用CycloneIII芯片,因此打算把Altera的官方文档,AN466:Cyclone III Design Guidelines详细的阅读一遍,并撰写一系列的博文。文章的组织框架按照altera的来,除了摘要原文档的内容,我也会加上自己的很多心得。
该笔记不会一次就完成,我会慢慢把它补充完整。
第一篇:芯片选型
1.考虑器件的资源,包括LE,ram资源,硬件乘法器,PLL,全局时钟网络等。
总体来说,对于FPGA设计,资源一定要留有余量,否则最后的时序收敛会比较困难。我认为使用80%左右是比较合适的。对于资源使用量在95%以上的设计,除了时序收敛,可能还会遇到一些你想不到的问题。
A. LE是5K到120K。要对设计需要的资源做一个估算,120K,对于大部分的应用,应该是一个很大的数字了。
B.ram资源为400K-3888Kbit.注意ram块的大小都是9Kbit,有些模块,比如fifo,实际上用不到9K的资源。但不管你用多少,都得占用一个ram(有些情况下占用0.5个ram)。所以ram的数量是否足够也得考虑。
C.乘法器的数量 23-288个。注意是18*18bit的乘法器。实际使用时,要看应用需要的乘法器精度是多少。
D.PLL的数量为2-4个。每个PLL可以输出5个时钟,一般的设计够用了。如果设计中的时钟很多,就得仔细考虑了。
E.全局时钟网络为10-20个。一般够用,如果设计中有很多时钟或者很多扇出(fan-out)很大的信号,比如复位信号,也得仔细考虑。
2.考虑引脚,封装和迁移
A.引脚数量。设计前,就要考虑需要多少普通IO(LVTTL),这个应该是比较好计算的。电平有几种,因为一个bank只能1个IO电平。需要多少LVDS管脚,一些小封装器件的LVDS管脚很少。
B.封装。封装影响到引脚数量。还影响到焊接的难度。EQFP和PQFP当然好焊接也好拆卸,如果是BGA的,一般需要找专人焊接(需要专门的工具),价格也贵。布线难度:用BGA,还得出注意ball pitch(焊接球的间距)。1.0mm的当然比0.8mm的好布线。F780比F484的外圈引脚数量多,当然也好布线一些。体积:也就是芯片的大小了,比如用于移动和手持应用,就得考虑大小了。不过体积小,布线就难,所以这时pcb的层数往往从6层起,上不封顶。
C.器件迁移。也就是相同封装,资源不同的器件可以直接替换使用。当然都得是CycloneIII的器件。这样的好处在于,初期设计时可以用大规模的器件,设计成功后,根据实际的资源使用情况,更换更经济的器件来量产。具体的型号替换,文档上说得很清楚,这里就不说了。如果考虑型号替换设计,要仔细核对每个芯片的引脚文档,最后决定出画原理图时芯片的引脚定义。这里说一个技巧,那就是规模最大的芯片的引脚定义,一般是最接近的,但也会有修改。
3.考虑器件速度
速度分为-6,-7,-8。-6是最快的,也是最贵的。每一档次速度相差20%,包括内部工作频率和IO速度。FPGA的实际最高工作频率和这些数字无关,和具体的设计相关。我的经验是,对于很多代码,-8的器件能跑到130MHz左右。以前用CycloneII的-8器件,只能跑到110MHz左右。说明CycloneIII比II还是有进步的。
额外说一点,器件还分商业级,工业级和汽车三种类型。我们一般采购的都是商业级器件。差别在于温度范围和稳定性。如果产品的工作温度在在0-70度之间,稳定性要求也不是太高,用商业级就可以了。要求高,那就多出钱吧。
官方文档的下载链接:http://www.altera.com.cn/literature/an/an466.pdf
以后的部分:
第二篇.早期系统规划
第三篇.板级设计考虑
第四篇.设计和编译
第五篇.验证
第6篇.调试
第7篇.测试
第8篇.其它考虑
CycloneIII设计向导-第二篇.早期系统规划
需要提早就估算好芯片的功耗是多少,才能做好供电设计和散热设计。
下面是Altera对于Cyclone III器件的功耗估计excel表格:
http://www.altera.com.cn/support/devices/estimator/cy3-estimator/cycloneiii_epe_72sp1.xls
如果设计已经基本完成,QuartusII软件也可以根据实际设计估算功耗。
2.I/O支持
A. 三类I/O标准,包括Single-ended(单端),Voltage-referenced(参考电压),Differential(差分)。三者各有优缺点。不过在实际应用中,使用哪种标准,往往由FPGA连接的芯片决定。
B.灵活的I/O bank。8个bank的I/O电压和Vref参考电压可以不一样,但在每个bank内部必须一致。在I/O电压确定的情况下,还可以有一定的兼容性。比如2.5V和3.3V的兼容性。
C.外部内存接口。支持ddr,ddr2,qdrII,需要专门的管脚。以前的sdram和sram当然也支持,不需要专门的管脚(把时钟脚小心处理更好)。使用top和bottom的bank速度更快,最快支持200MHz。这里简单介绍,做高速设计,得多查文档。
D.Pin-Out文件。QuartusII工程编译后会生成该文件,里面对引脚的描述就是该引脚最终确定的功能。对这个文件的检查,可以帮助我们明确问题。一些多功能引脚,需要小心处理。
3.选择FPGA配置方案
下面是原文中的配置方案的表格,说得很清楚。
配置方案很多,包括
Active serial (AS):
单芯片,使用Altera的EPCS系列芯片,配置速度第3。芯片价格较贵。
Active parallel (AP):
单芯片,使用特定型号的FLASH(INTEL P30,P33),配置速度第1。芯片价格便宜。但需要占用FPGA 40个管脚(16data+24addr)。
Passive serial (PS):
被动方式,需要额外的控制器参与。配置速度第4.
Fast passive parallel (FPP):
被动方式,需要额外的控制器和flash芯片。配置速度第2。flash芯片价格便宜。需要占用FPGA 8个管脚(8data)。
Joint Test Action Group (JTAG)——调试使用
配置方案的选择,由MSEL pin控制。
选择考虑:是否需要fast power-on reset (POR) time ,达到快速上电工作的目的。
封装不同,支持的配置方案也不同。
配置方案的选择,需要考虑配置时间的要求。
AS和AP模式,FPGA的DCLK为输出,最大速度40MHz。PS和FPP模式,FPGA的DCLK为输入,上升沿采样。最大速度为100MHz。
下载电缆包括:
USB-Blaster,目前最常用的。价格中等,下载配置文件到FPGA的速度快。不想购买的话,可以从网上下载pcb,采购器件自己做。
ByteBlaster II,常见,最便宜,但是下载速度慢。同样可以自己做。器件规模大了用这个会慢得很痛苦。
EthernetBlaster,不常见,价格贵,下载速度快。
目前,强烈建议使用USB-Blaster,除非对价格太敏感。
可以通过FPGA的JTAG接口,烧写EPCS配置芯片。需要用到Serial Flash Loader这个Altera提供的IP核。
使用MAX II芯片,PS或者FPP模式,也有MAX II Parallel Flash Loader这个IP核,来通过MAX II芯片JTAG烧写FLASH。
AP模式,有FPGA-Based Parallel Flash Loader这个IP核,通过FPGA的JTAG烧写FLASH。
4.配置特性
AS和PS模式,配置文件可以选择压缩模式,能减少配置文件的大小。
远程系统升级,不熟悉,待补充
5.PLL锁相环
强大的PLL功能,包括时钟倍频,分频,相移,可编程占空比,输入时钟切换,PLL级联,PLL动态重配,动态相移,扩展频谱时钟,外部时钟输出和控制信号。
相对于Cyclone和Cyclone II,现在Cyclone III增加了PLL的动态重配功能。
PLL的时钟输入,必须使用FPGA的专用时钟输入脚(dedicated clock
input pins)或者另一个PLL的时钟输出。也就是说,PLL可以级联。
输入时钟切换:可以给PLL输入双时钟,当使用的输入时钟失效时,可以自动或者手动切换使用另一个备用输入时钟。
PLL有5个输出。如果要输出到专用外部时钟输出脚,建议用C0输出,这样jitter最小。当然也是可以使用其它的输出的。
如果对输入时钟和PLL的输出时钟,有相位上的要求,就得了解PLL的相位补偿模式的设置。
6.芯片内部调试方法
A.SignalProbe Incremental Routing 不改变目前的布线,引出内部信号到一个没使用的I/O上。
B.SignalTap II Embedded Logic Analyzer 嵌入式逻辑分析仪,可以捕捉实时的内部信号。是最常用的调试工具。需要消耗一定的LE和M9K资源。使用时,如果想减少对原设计的影响和编译时间,可以反标原设计,使用增量编译模式。
C.Logic Analyzer Interface 等效于多路选择器,把多个内部信号通过少量的管脚输出。可以切换输出哪些信号而不用重新编译。适合于把信号引出给外部的逻辑分析仪。
D.In-System Memory Content Editor 在线修改内存或者常量的值。
E.In-System Sources and Probes 能对内部节点给一个简单的激励信号,然后捕获输出。
F.Virtual JTAG Megafunction 能对内部节点给一个简单的激励信号,然后捕获输出。和上面的方式有不同的地方。