cpld/fpga一些问答

By: flanix

top
  不同厂家的叫法不尽相同,pld是可编程逻辑器件的总称,早期多eeprom工艺,基于乘积项结构。 fpga是指现场可编程门阵列,最早由xilinx公司发明。多为sram工艺,基于查找表结构,要外挂配置用的eprom。xilinx把sram工艺,要外挂配置用的eprom的pld叫fpga,把flash工艺、乘积项结构的pld叫cpld;altera把自己的pld产品:max系列,flex/acex/apex系列都叫作cpld,即复杂pld,由于flex/acex/apex系列也是sram工艺,要外挂配置用的eprom,用法和xilinx的fpga一样,所以很多人把altera的felx/acex/apex系列产品也叫做fpga.
-zakme
l'w1z:y@ntop  1)nios ii嵌入式处理器是一个用户可配置的通用risc嵌入式处理器。它的易用性和灵活性使它成为世界上最流行的嵌入式处理器之一。
d2q!t@7a q{^p      2)cyclone ii fpga系列是价格极其敏感应用的正确选择,因为其提供了与所有其他成本优化fpga系列相比最低的单le价格。每个cyclone ii器件都被设计拥有一套最佳的功能,包括:● 多达68,416 le用于高密度应用多达1.1兆比特的嵌入式处理器用于通用存储 ● 多达150个18x18 嵌入式处理器用于低成本数字信号处理(dsp)应用 ● 专用外部存储器接口电路用以连接ddr2、ddr和sdr sdram以及qdrii sram存储器件 ● 最多4个嵌入式pll,用于片内和片外系统时钟管理 ● 支持单端i/o标准用于64-bit/66-mhz pci和64-bit/100-mhz pci-x (模式1)协议 ● 具有差分i/o信号,支持rsds、mini-lvds、lvpecl和lvds,数据速率接收端最高达805兆比特每秒(mbps),发送端最高622mbps ● 对安全敏感应用进行自动crc检测 ● 具有支持完全定制nios? ii嵌入式处理器 ● 采用串行配置器件的低成本配置解决方案 ● 可通过quartus ii软件的opencore plus评估功能进行免费的ip功能评估 ● quartus ii网络版软件提供免费软件支持。
vt+_qx
cx/]!yc?5ftop   :设计pld/fpga内部电路与设计74的分立电路是有区别的。这个问题是由于电路中的毛刺造成的。电路布线长短不同造成延时不一致,有竞争冒险,产生毛刺。分立元件之间存在分布电容和电感可以滤掉这些毛刺,所以用分立元件设计电路时,很少考虑竞争冒险和毛刺问题,但pld/fpga内部没有分布电容和电感,不可以滤掉任何毛刺(哪怕只有1ns)。有些毛刺是可以忽略的,有些是致命的(如d触发器的clk,clr,prn端)。这些致命的毛刺将导致电路不能正常工作。这是设计fpga和设计分立元件最大的不同。可以通过修改电路减少有害毛刺。根据经验,几乎所有稳定性或可靠性问题均由pld内部电路设计不合理造成的。

a{@/a2xptop   当需要对某一信号作一段延时时,初学者往往在此信号后串接一些非门或其它门电路,此方法在分离电路中是可行的。但在fpga 中,开发软件在综合设计时会将这些门当冗余逻辑去掉,达不到延时的效果。用altera公司的maxplusii开发fpga时,可以通过插入一些lcell原语来产生一定的延时,但这样形成的延时在fpga芯片中并不稳定,会随温度等外部环境的改变而改变,因此并不提倡这样做。在此,可以用高频时钟来驱动一移位寄存器,待延时信号作数据输入,按所需延时正确设置移 位寄存器的级数,移位寄存器的输出即为延时后的信号。此方法产生的延时信号与原信号比有误差,误差大小由高频时钟的周期来决定。对于数据信号的延时,在输出端用数据时钟对延时后信号重新采样,就可以消除误差。

j[f#ks$ru7rp  ip核是指:将一些在数字电路中常用但比较复杂的功能块,如fir滤波器,sdram控制器,pci接口等等设计成可修改参数的模块,让其他用户可以直接调用这些模块,这样就大大减轻了工程师的负担,避免重复劳动。随着cpld/fpga的规模越来越大,设计越来越复杂,使用ip核是一个发展趋势。不过目前大多数库是收费的。

e ]v&h!`w  多用低压差线形稳压器(ldo)或采用开关电源,详细内容参见低电压pld/fpga的供电设计。
a(h-i;l,vo?z
top   宏单元(或逻辑单元)是pld/fpga的最基本单元,不同产品对这种基本单元的叫法不同,如le,mc,clb,slices等,但每个基本单元一般都包括两部分,一部分实现组合逻辑,另一部分实现时序逻辑。各个厂家的定义可能不一样。对altera的芯片,每个基本单元含一个触发器;对xilinx的部分芯片,每个基本单元单元含两个触发器。一般不用“门”的数量衡量pld/fpga的大小,因为各家对门数的算法不一样,象altera和xilinx对门的计算结果就差了一倍,推荐用触发器的多少来衡量芯片的大小。如10万门的xilinx的xc2s100有1200个slices,即含2400个触发器;5万门的altera的1k50则含2880个le,即2880个触发器。
v\.xl~:k
c ]3{}xp  top   maxplusii支持大部分vhdl语法,但也有一些标准的vhdl语句不能支持,最好的方法是采用专用vhdl语言综合工具综合,生成*.edif文件后再给maxplusii做布线。2000.5月起altera与synopsys和mentor公司达成合作协议,所有altera用户均可按协议可免费使用以下专用的vhdl工具:1.synopsys公司fpga express(hdl综合工具)2.mentor 公司 graphics'leonard spectrum (hdl综合工具)3.mentor公司modelsim(hdl仿真工具), 软件可从altera的网上下载。9、在仿真时,如何设置时钟周期和总的仿真时间?
qhp }q0zdpf在出现仿真窗口后,要把菜单:option>snap to the grid 的勾去掉,才可任意设置时钟频率,在菜单file>end time中可修改仿真时间。仿真时间越长,对内存和cpu要求也越大。
ajgjf k.tw
top  调入rom元件时(可用lpm_rom或用megawizard plug-in manager调入)软件会问初始化文件的名字,如你还没有做好这个文件,可以先填一个文件名,如:test.mif或test.hex(test这个文件现在并不存在),完成设计后编译,再建立波形文件*.scf,打开仿真窗口simulator, 此时可在菜单中找到initialize>initialize memory(这个选项只有在仿真窗口出现后才会出现)此时你可以编辑初始化文件并输出成*.mif或*.hex文件(如test.mif或test.hex),要再次编译。这样才算完成。

[:nsu _`wzgfp  对quartusii的用户可以直接用quartusii计算功耗。对maxplusii的用户可以用这里的几个excel小程序来自动计算功耗和电流,感兴趣的用户不妨下载一试,如对有些参数不清楚,可查阅altera date book。
1)max7000数据手册 2)flex10k/6k数据手册 3)最新自动计算功耗文件数据手册(包括apex20k/10k/6k/7k)

$~*d+z~h7u2hqd[g1)检查maxplus2菜单assign>device中芯片型号与实际使用的芯片型号是否一致.出现编程窗口后,菜单option>hardware 中要选择byteblaster。 2)检查pc的cmos设置中并口是否是ecp模式,如是windowsnt或windows2000,应先装byteblaster驱动程序(nt的控制面板>多媒体>添加硬件,或win2000的控制面板>添加新硬件>多媒体,byteblaster的driver在你的安装目录\maxplus2\driver下。 3)检查byteblaster是否插反,换一条电缆试一试。 4)检查芯片是否发烫,芯片各边vcc,gnd是否正常,有没有按databook要求加1k上拉或下拉电阻,与byteblaster连线是否正确。对flex系列的msel0/msel1和nce管脚是否处理正确,没有使用的全局信号是否已接地。 5)参照数据手册或光盘,检查下载波形,极少数pc的主板并适合使用isp,换一台计算机。最后一招,与革新科技联系,获得技术支持。
(ou f}fb注意:有些用户自制的下载电缆不良会带来干扰,反射及信号过冲问题,引起数据传输错误,导致下载失败。建议购买革新科技(或altera原厂)下载电缆。
btn2bzmb cy
  不用的全局信号和专用输入管脚,应接地,如:global clk,global clear,ded input.其他不用的管脚一般悬空。maxplus2中的报告文件(*.rpt)详细说明了管脚的接法。如不用的管脚与外电路相连,为保证不影响外电路,应将此管脚定义为输入脚,但不接逻辑。
n{sj!~?
ye%@o%bttop
1) gclk:全局时钟脚,这个脚的驱动能力最强,到所有逻辑单元的延时基本相同,所以如系统有外部时钟输入,建议定义此脚为时钟脚。如想用其他脚为时钟输入,必须在在菜单:assign>global project logic synthesis>automatic global>把gclk前面的勾去掉。这样任意一个i/o脚均可做时钟输入脚
    2)oe2/gclk2:全局输出使能/全局时钟脚,两者皆可。
    3) oe1:全局输出使能,如有三态输出,建议由此脚来控制(也可由内部逻辑产生输出使能信号),优点和用法同上。
    4) gclrn:全局清零,如有寄存器清零,建议由此脚来控制(也可由内部逻辑产生清零信号),优点和用法同上。
    5)分配这些脚和分配普通i/o脚是一样的,先在assign>device中选好器件型号,再在assign>pin中填入你想分配的管脚号和类型,或直接在原理图中选中input或output,点鼠标右键,选>assign pin,填入你想分配的管脚号,编译一遍即可。但要注意菜单:assign>global project logic synthesis>automatic。global>中的设置。10k/6k/3k的全局脚的意义与此相同。
本篇发布于:设计互动 (www.ccflash.org),复制请注明.

Username