EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
FPGA中的PLL(锁相环)等价于mcu中的软中断指令,甚至PLL是区分cpld与FPGA的标志?
$ `. `% v( ~+ [1 V! @: D7 X. _; u* B4 l+ X+ ?. ^+ B* F9 V# f' f) L; i
可编程逻辑器件,分为CPLD和FPGA,CPLD规模较小,单元基于乘积项,偏重门电路,速率低。而FPGA规模大,单元采用查找表,偏重寄存器,速度快,以上就是常规的解释,就不再重复了。 / F- X# @5 f3 s. U8 k
不否认以上观点,因为当年CPLD和FPGA就是基于以上的应用定义的,只是到了后来,随着竞争加剧,CPLD和FPGA的界限慢慢的模糊了,因为商业竞争,于是有些厂家开启了错位竞争,用FPGA的技术做CPLD,典型的代表就是Lattice,此外Altera的MAXII系列,用的就是FPGA技术做的CPLD。所以到今天CPLD与FPGA的定义,应该要重新定义了。 , Z8 a' r% G9 l1 _- U
那么对于今天,区分CPLD和FPGA,则比较简单的理解为有没有PLL,因为大家可以发现,FPGA几乎都有PLL,而Altera和Xilinx的CPLD,几乎都没有PLL。PLL在可编程逻辑器件中的地位非常关键,它不仅仅是区分CPLD和FPGA的标准,更类似MCU中的软中断指令,决定了这颗可编程逻辑器件能否上系统,把它做成一颗协处理器,跟MCU具有同等的地位。 6 _- Z- v9 t3 n7 k9 O2 F. z
因为大家知道在MCU中,尤其是ARM中,因为有了软中断指令,上RTOS更加方便了,而MCU51是没有软中断指令的,虽然MCU51也可以通过其它硬中断或者汇编直接**任务等手段实现RTOS,但是毕竟资源有限,没有实际意义。并且当年Intel设计MCU51的时候,根本就没有想过RTOS(设计当年不知道有没有RTOS),所以不可能对RTOS支持,而ARM,尤其是Cortex系列的,有太多的设计是针对RTOS的,比如软中断指令、系统时钟、中断栈和任务栈、连续压栈出栈指令等等。其中软中断指令是MCU能否上RTOS的标志。
* b; }) b/ u# m! J3 {/ L, @) @
同理,我们看FPGA的PLL,它可以把几MHz到几十MHz的主频在芯片内部倍频到几百上千MHz。这样允许在FPGA内部设计各种协处理器,甚至是处理器,自主完成各种功能,再通过总线跟外部主控处理器通讯即可。若没有PLL,则必须要外部提供高速的时钟进来,但是高速时钟就单端信号来说,上到100MHz,信号幅度小,容易受干扰而畸形,影响FPGA的时钟,导致时序错误。哪怕差分信号,虽然可以提高一些,但是成本、设计难度都高了很多,不划算了。低的主频,导致设计出来的低主频协处理器性能低下,很多甚至达不到MCU的效果,那么就失去了使用FPGA的意义了。这就是我为什么强调PLL的原因。
0 t" w. C6 Q. G
以前用的是ACTEL的一款ProASIC3,也内置PLL,但缺点是编译下载速度太慢了。后来在与非网的推荐下试用小脚丫FPGA开发板,主芯片为lattice的machOS2系列,它有两个优点,一是内置PLL,主频最高可以到400MHz,二是编译下载速度很快,现在用起来感觉非常爽,所以给msOS的群友推荐,再次也再一次的感谢与非网赠送的小脚丫开发板。 9 p" t" x% d, N
后续若有精力,基于msPLC/msOS,把这颗FPGA扩展上去,到时候或许就是msPLC+/msOS+了 $ Y8 C; {/ l: c% t6 M
) g5 ?( Y/ b" m
|