C114门户论坛百科APPEN| 举报 切换到宽版

亚星游戏官网

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

亚星游戏官网-yaxin222  列兵

注册:2010-8-13
发表于 2010-9-23 23:32:17 |显示全部楼层
     在讨论CPLD在线加载技术之前,先来说下CPLDFPGA两种逻辑器件的差异。

         CPLDcomplex programmable logic device的缩写,中文意思是:“复杂可编程逻辑器件” FPGAField Programmable Gate Array,中文意思是:“现场可编程门阵列” 。虽然它们都是可编程的ASIC,有很多共同点,但是由于在结构上的本质差异,具有各自的特点,在用途上也有很大的差异。

         1).CPLD主要是基于EEPROMFLASH存储器的编程方式,编程次数可达1万次以上,该编程方式的优点是系统断电后编程信息不会丢失,所以,CPLD启动速度非常快,基本上上电就可以工作。而FPGA大部分是基于SRAM编程的,编程信息在系统掉电时会丢失,每次上电时,都需要从器件外部的FLASHEEPROM中存储的编程数据重现写入内部的SRAM中。其有点是可以任意次编程,缺点是启动速度慢,需要CPU先启动,然后在CPU的控制下对FPGA进行逻辑加载。

        2).CPLD内部乘法器资源丰富,比较适合完成各种算法和组合逻辑,通常用来扩展CPUI/O接口。而FPGA内部触发器资源丰富,更适合用于时序逻辑设计,通常用来模拟各种高速总线接口转换。

        3).CPLD通过修改具有固定内连电路的逻辑功能来编程,而FPGA是要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。CPLD的连续式布线结构决定了它的时序延迟是均匀可预测的,而FPGA的分段式布线结构决定了其延迟是不可预测的。

        4).FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现功能;CPLD的功耗比FPGA大,而且集成度越高越明显;CPLD的保密性好,FPGA的保密性差。
        随着FPGA技术的发展,未来的单板只要CPU+FPGA,另加一些外围器件就可以搞定了(FPGA可以模拟大部分专用IC器件),真正实现硬件的App化。现在有些FPGA厂商已经开始讲CPU嵌入到FPGA(包括CS51核、RAM核、DSP),这样一来的话,简单的单板上连CPU都可以省去,只要一片FPGA加少量的外围器件就可以搞定了。
       目前主流的FPGA/CPLD厂商有:Altera, Xilinx, Lattice三家。

    好,现在言归正传,探讨下CPLD的在线加载方式。早期的CPLD是基于宏单元结构的,从外部加载逻辑时,CPLDI/O口会进入三态状态,影响CPLD的正常工作。那么,如何才能做到在不影响CPLD正常工作的情况下更改CPLD里的逻辑呢?答案是CPLD逻辑在线加载技术。
        在很多场景下都需要这样的技术,比如某个骨干网或核心网的某个节点设备需要升级CPLD逻辑来规避某个BUG,当然,这些设备上运行的正常业务是不能暂停的,否则会导致大范围的网络中断,这是运营商所不能接受的,当然了,也不可能去现场用JTAG工具对CPLD进行升级,太麻烦了。可行的方法是通过串口或USB接口来给CPLD升级,最好的方法是通过以太网接口来给CPLD升级,此方法可以远程操作,不需要去现场,非常方便。不管是通过串口、USB还是以太网,这些升级方式都有一个共同点,那就是都要通过CPU中转,也就是先讲逻辑代码先通过与CPU连接的串口、USB口或以太网口写到CPU小系统的内存中去,然后再在CPU的控制下,将逻辑代码从内存写到CPLD中去。
         前面已经讲了,对普通CPLD进行逻辑升级时会使CPLDI/O口进入三态状态(不管是通过JTAG工具加载还是CPU加载),从而影响正常业务。看来,传统的CPLD由于其自身的结构原因,是无法做到在线加载的!
         针对日益增长的CPLD在线加载需求,主流CPLD厂商推出了支撑在线加载的新型CPLD芯片。
        新型CPLD芯片采用FLASH+FPGA逻辑单元结构。(传统的CPLD是基于宏单元的结构,内部没有存储单元,存储不了代码,新型CPLD内部有FLASH存储单元,可以存储代码),如下图所示。
亚星游戏官网-yaxin222
        JTAG 1149.1IEEE制定的JTAG原始标准,IEEE 1532是一个符合IEEE1149.1标准的超级,用来对在线系统配置,主要用于对闪存、嵌入式控制器的存储器、复杂可编程逻辑器件(CPLD)FPGA来进行编程。
        新型CPLD芯片有两种加载方式。
       1).将编程文件直接加载到片上FLASH和用户逻辑中,这种方式与片外加载方式一样,加载逻辑的时候,所有I/O口会进入三态。
       2).另外一种方法是首先将编程文件加载到CPLD的片上FLASH,这个过程不影响CPLD正常工作,之后通过指令或重新上电的方式将FLASH中的逻辑激活到用户逻辑。逻辑激活所需的时间非常短,只需要几毫秒,甚至有些CPLD在激活过程中能指定用于I/O口的输出电平,从而不影响正常工作。

    关于CPLD在线加载的硬件设计方案,目前流行的做法是JTAG二选一兼容设计,即在默认状态下将CPLD连接到JTAG链上,此时可利用外部JTAG控制器对CPLD进行加载,需要在线升级时,通过指令将JTAG链路切换到CPUI/O或扩展I/O上,通过CPUI/O端口模拟的JTAG主控制器对CPLD进行加载,其硬件实现方案有很多,现列举两个供大家参考。方案一如下图所示。(点击看清楚大图)
亚星游戏官网-yaxin222
     该方案使用一片二选一CMOS器件74HC157,通过使能管脚A/~B来控制输出,当使能管脚接高电平时,1A/2A/3A/4A分别与1Y/2Y/3Y/4Y连接;当使能管脚接低电平时,1B/2B/3B/4B分别与1Y/2Y/3Y/4Y连接。本设计中,使能管脚通过VCC上拉到高电平,即默认状态下,CPLD是与板内的JTAG链连接,可以通过板外的JTAG控制器对CPLD进行逻辑加载。当需要对CPLD进行在线加载时,可通过指令将74HC157的使能管脚驱动为低电平,此时,CPUI/O或其扩展的I/OCPLD直接连接(此时CPLD从板上JTAG链中断开),可直接通过I/O模拟出来的JTAG总线对CPLD进行逻辑加载。方案一目前已被申请专利。

     方案二如下图所示。
亚星游戏官网-yaxin222

    方案二与方案一类似,也是使用二选一CMOS器件74HC157,与方案一不同的是,它不是直接通过CPUI/O端口来模拟JTAG主控制器来对CPLD进行加载的,而是使用CPLD自身的I/O端口来模拟JTAG主控制器来给自己加载。电路原理请参照方案一的分析。

    目前不仅有支撑在线加载的CPLD器件,也有支撑在线加载功能的FPGA器件,例如LATTICE企业的Lattice XP, Lattice XP2两个系列的FPGA。其内部结构原理跟在线加载功能的CPLD是一样的,都是在片内集成了一个存储单元。




附件:

举报本楼

本帖有 2 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系大家 |网站地图  

GMT+8, 2024-9-24 16:29 , Processed in 0.680571 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部
XML 地图 | Sitemap 地图