TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
`+ q5 T/ _/ J" b+ S# B1 Z0 V! E2 n# W6 K- i# U
CPLD是英语复杂可编程逻辑器件的缩写,对于一个硬件工程师来说,能应用cpld技术是一个十分强大的能力。它的应用可在根本上解决许多数字电路设计的问题,能大幅度改变设计思想,大幅度提高工作效率,甚至可以把以前的数十颗普通分立芯片的功能用一个芯片实现。它还有一个十分优秀的优点,在硬件原理设计和布线的时候,不用考虑引脚的顺序,可从布线方便的角度安排需要的信号位置,使得布线难度大幅度降低。由于布线难度下降,直接带来布线优化的好处。本文就cpld初学者面对的问题做一个简单描述。希望对有志于学习cpld的硬件工程师有所启发。 , p) M |, j3 W$ Q' s# G
8 X1 T( O! l1 J. k- o _ G5 G1:首先进行的准备是有针对性的学习cpld物理构造和资源
+ V4 P( _. o/ a$ [$ P- ]) F5 v$ T' x0 v
先不要着急去买开发板,不要着急写逻辑。了解硬件本身更加重要。Cpld是一个很大的范畴,初学者会淹没在众多厂家、众多资料的海洋中。针对这个问题,笔者建议大家有所针对的进行知识获取,推荐大家以aLTEra的max ii系列cpld为突破口,首当其冲的就是emp240这颗芯片。把它吃透,则max ii系列的其它都很好理解了,构造都一样,只是资源增加而已。其它厂家的也好用了,因为它们都是大同小异的。之所以选择emp240是因为它应用已经很广泛,市场上容易买到,而且价格便宜,批量买只有8元/片左右。
) q( e5 V: p- ^5 E2 o w! m* _! k' A4 t* g
Emp240顾名思义具有240个宏单元。简单理解就是有240个触发器,或者理解成240个bit的存储单元。这样都好理解,以后对工程应用就容易估算容量了。对于工程来说,一般这么做,首先依据需求设计引脚的数量,然后再在开发环境中进行逻辑编写、软仿真,这样,在硬件完全没有开始之前,就能把逻辑部分全部设计完,只差物理验证一步了。仿真分2布,写逻辑时用qUARTus自带的仿真即可。逻辑写完之后,最好用model sim。Model sim是专门的仿真软件,功能十分强大,但对初学者来说,最好先不要介入这个领域。先把cpld用上是最主要的。' A+ l9 C8 U+ z4 q) P
( c# P6 d+ K1 ]3 Z3 W: e6 f 好了,这样就把目标缩小到一个点上了。需要花功夫把240的相关资料吃透,把quartus用熟。到这里,一分钱都不用花。时间用在3个点上:1、240的构造和资源,2、quartus软件使用,3、verilog hdl语言学习。
1 L5 r" \' z' _6 [+ `! [ K, V6 U u4 x5 J
设计中,如果你的逻辑需要100个单元,编译后会发现用掉120个单元,这是cpld内部布线需要。作为实际应用,必须要留20%以上的富余量,比如编译结果指示用220个单元,这时就不要用240了,应该使用570,因为240的富余量不够。7 Z' g" d$ F$ e6 V; c/ h. A( Q
( w0 t' n1 _/ O+ @1 o 一个小技巧,针对EPM240和570来说,常用的封装是T100的,就是TQFP100,这2个芯片的封装是向下兼容的,因此,设计时,即便决定使用240,也要按570去画板子。焊接是兼容的,同时万一240不够了,可以改焊570。
+ ~2 K" I8 B! }4 c7 [
6 R3 ]% M, }' X2 F! p2:向应用cpld走近一步,用开发板练习3 r, ~8 T- w; L2 P* }; c% w+ [
! n0 l* k& v/ Q9 k
有了上面的基础,可以投资买开发板了,一般卖板子的都配套好软件和编程器了。针对240的开发板可能很少,可能570的好买。注意买cpld的开发板,不要急于用FPGA的,学会cpld之后,再用fPGA就容易多了。要一步一步来。570的开发板,带仿真器,带软件,带练习光盘,一整套下来估计200-300元人民币。这个资金对你要学会的技术来说,微不足道。
4 d. A, Z( F5 M
% \# \6 y1 V3 H* ]' B9 s+ `) q 开发板光盘有许多例子程序,可以先跑跑看,很容易就上手了。对于初学者来说,cpld技术是一个很大的领域,切记不要急于求成,上来就弄个FPga去加载视频编解码算法,那会十分困难。建议先从最简单的开始,用240替代设计中使用的一些74芯片、完成部分软件功能等,熟能生巧。这个技术绝不是短时间就能达到多高水平的,必须有积累过程。一开始就啃难度高的,会对信心造成打击,长时间没有进展,是让一个硬件工程师最为抓狂的事。) J! f% a A8 H$ L. V }9 E
& A0 K$ R/ ^$ M) Q* a8 m 对于前期学习准备比较充足的工程师来说,完全可以不买开发板,直接在工程中应用。现在的互联网太方便了,只要你的cpld外围没有接错,由于引脚分布是可编程的,PCB板导致不能用的可能性就大大降低了,鼓励直接自己画pcb去应用。这样掌握得更快。
& t. h, X9 p8 B- ^. N6 D K4 e6 G ^2 u: c# |6 S, [
3:cpld与cpu的接口4 k. U( `2 \( y) }; e* M
; ?7 w1 B3 V2 S0 H! f2 Z% I
这个问题十分重要,因为cpld大部分扮演的是cpu的扩展,替cpu完成外部引脚资源扩展、输入输出时序管理、部分软件功能实现。很少有让一个cpld单独工作的。( F. S5 t& t) b, B5 L
+ @4 V! M! s g% W4 H' ]: A Cpld与cpu的接口就十分突出,对于要学cpld的工程师来说,用的cpu可能仅限于51单片机或者ARM7系单片机。这种接口算是比较简单了,还是应该循序渐进,从简单的入手,比如用单片机3个io去cpld,由cpld完成74hc138功能,这就是一个简单接口。再进一步,用cpu的p0口和一个io脚接到cpld,用cpld完成373、244、273等功能,这就进了一步,有时序的概念了。最后,用cpu的数据口、晶振、wr、rd、ale等信号接入cpld,把cpld做成几个字节的ram,读写实验。这一关过去之后,cpld与单片机的接口就再无秘密可言了。
% u/ C' ~6 t4 u; ^* C# u' S. z9 F! w* t& n* @& x
与51单片机的接口注意必须深刻理解cpu的工作时序,地址与数据口如何复用,ale信号如何锁存地址等。与arm7的接口相对简单,因arm7比较灵活,对外部接口的管理功能强。$ s# v5 X3 p0 }
* z5 t: P( i2 ^, `' k
初学者使用cpld的时候,建议在所有io脚的连线中都串联一个51欧电阻,这样会方便测量,更重要的是能保护cpld的io口,更深入的说,能改善高速信号的振铃、信号反射,提高信号完整性。% f- h( z5 x% b+ h: A- P
" {! n9 k$ ^% `, B" S
4:cpld与fpga的简单介绍" @2 Y$ i1 F' x" T" Z( v: j9 Y3 I
# [$ P7 [9 K9 H$ y7 F8 f
Cpld比较简单,fpga更加复杂,在cpld基础上,增加了PLL、硬件乘法器、ram块等硬件资源。更有的fpga直接集成了DSP的硬核。Altera的max ii系列cpld,其内部应用了走线池,因此严格地说它已经属于fpga了。
& @& o/ l1 B6 F# ?& h3 H# K+ c' o2 f0 T
目前主要的cpld和fpga厂家是altera和xilinx,还有actel等规模稍小。Altera主要面对商用和工业用,其产品性价比稍好,市场应用最为广泛。Xilinx初期定位在宇航级产品,因此,它的芯片具有更好的性能。后来xilinx也面对商业用户了,因此形成了与altera分庭鼎立的情况,两个这么大的厂家,芯片的系列十分类似。建议初学者使用altera的。当然,使用xilinx也无所谓。! C) L7 b. t& o/ P6 g- B
. r x+ `9 ]3 g: T
Altera的开发环境是quartus,笔者使用的是8.1版,已经老了,但是够用,且不出问题,姑且使用。Xilinx的开发环境是ISE。这些环境本身已经提供了比较完整的仿真功能。但有一个功能更加强大、更加独立的仿真环境是model sim,它分前仿真和后仿真,由于altera和xilinx的主导作用,因此model sim提供了这两家的芯片的完整支持。‘前仿真’属于逻辑仿真,所有瞬态时序同步发生,用于初期测试逻辑功能是否正确。‘后仿真’则带有延迟特性,这与芯片内部构造和编译后的内部走线密切相关。这个后仿真,一般情况下就等同于在实际板子上跑的结果。如果在pcb上跑出现问题,则此问题就比较难解决。
1 {) R6 I% s9 h6 D
4 t/ c1 _# J. B9 x. Y2 D6 N3 }1 \ 软件分两种规范,一个是verilog hdl,一个叫vhdl。前者基本就是c语言的底子,因此对于工程师来说,很容易上手,所以用verilog的人非常多。Vhdl则更加严谨,其语言规范需要一段时间熟悉。如果要长期以hdl语言为伍,则推荐学习vhdl,它的结构更加严谨,能避免比较复杂的问题的发生。听一个在华为的硬件工程师说,华为要求必须熟练一个语言的同时要能看懂另一个语言。 | ) M) @( G0 f# T. Q1 L/ J9 N2 _/ C
|
|