FPGA之道(12)FPGA芯片的配置方式

文章目录

    • 前言
    • FPGA芯片的配置方法
      • 主动配置模式
      • 被动配置模式
      • JTAG配置模式

前言

Xilinx公司FPGA芯片的配置方法在调试阶段可以通过JTAG的方式将bit流文件烧写(编程)进FPGA芯片进行配置,当硬件设计成熟后可以通过固话进Flash的方式进行开机自启。
至于为什么固化进Flash里面即可实现开机自启,下面的内容会给出回答。
如果产品投出以后,例如上天、下海之后需要更改设计内容,则无法通过JTAG的方式进行固化,这是可以使用Multiboot的方式进行远程更新自启动。
下面节选自《FPGA之道》的内容对一般的FPGA配置模式进行理解。讲解的还是十分好的,比数据手册更容易理解。

FPGA芯片的配置方法

当我们在PC机上的FPGA软件集成开发环境中完成我们的设计后,必须通过某种形式将其映射到FPGA芯片硬件中,这样FPGA芯片才能具有我们所期望的功能,而这一过程称为FPGA芯片的配置。
对于基于FLASH或者反熔丝工艺的FPGA,配置的方法其实比较单一,这里就不多讨论。而目前主流的FPGA芯片还都是基于SRAM工艺的,这种FPGA芯片一般都不能单独使用,这是因为基于SRAM工艺的FPGA芯片不具有配置保持功能,每当系统掉电后,SRAM中的配置数据就会全部丢失,因此下次上电后便重新变成一个没有任何功能的空白芯片。
因此,基于SRAM工艺的FPGA芯片配置的方式和方法就比较多,这也是本章节介绍的重点。注意,在本章节的后续介绍中,如无特别说明,FPGA芯片都泛指这种基于SRAM工艺的芯片。针对这类FPGA芯片,配置的方法主要有三种:主动配置模式、被动式配置模式和JTAG配置模式,分别介绍如下:

主动配置模式

主动配置模式通俗的讲就是FPGA芯片自己配置自己,这时候需要用到一个片外的存储芯片作为“道具”。该芯片一般是由FLASH或者EPROM等掉电后可以继续保存数据的存储介质构成的,学名叫做配置芯片。由于FPGA芯片再次上电后就会把之前发生的一切忘得一干二净,所以我们找来一块FLASH芯片作为它的“大脑”,并提前在该芯片中存储好FPGA芯片的配置信息。通过正确的布线连接和外围电路配合,那么等到FPGA芯片上电后,就会主动的从该配置芯片中将配置数据读出并存储于自己的SRAM中,于是FPGA芯片就重新具有了相应的逻辑功能。
也许你会疑惑,FPGA再次上电后不是什么都不记得了么,那它是怎么完成主动对配置芯片中的数据读取的呢?这是因为FPGA芯片中有一套专门用于主动配置模式的电路,该电路的一个主要功能元件就是一个晶振,该晶振的精度不高,但是用来产生频率要求并不高的主动配置工作时钟还是绰绰有余的。系统上电后,该晶振电路就会产生时钟信号,该时钟信号同时供给FPGA内部和外部的配置芯片,通过FPGA内部预置的读取逻辑从配置芯片中读取数据并同时完成FPGA内部的配置。当FPGA的配置完成后,关闭相应功能管脚和晶振电路,FPGA芯片将按照所配置的功能工作,直到系统掉电。
关于这种配置模式有几点需要注意:

  • 保密性较差。通过这种方式配置的FPGA芯片,其破解软肋主要在其片外的配置芯片上。由于这些基于FLASH或EPROM的配置芯片本身的读写逻辑早已众所周知,那么别人只需要将配置芯片中的数据复制到其他配置芯片上,然后在使用相同型号的FPGA产品,即可轻易的在任何地方完成对你设计的重现。
  • 配置文件的大小只跟FPGA芯片的型号有关,跟设计本身的复杂度无关。例如,无论你的设计占用了90%的FPGA片内资源,还是占用了1%的FPGA片内资源,配置文件的大小都是一样的,这是因为同一个型号的FPGA芯片其内部的SRAM大小是一样的,而配置文件就是整个SRAM中存储的数据之和,因此无论数据是什么情况,文件大小都是一样的。
  • 配置芯片的容量一定要大于配置文件的大小。根据FPGA芯片的规模不同,配置一个FPGA芯片所需的配置文件大小也会有所区别,那么在选择配置芯片时,一定要注意是否能够装得下所需的配置文件。一般来说,选择容量最大的配置芯片肯定是没错的,但是成本也会提高,因此最好还是根据FPGA芯片的具体型号来选择一款合适的即可。
  • 不同配置芯片的配置文件的格式往往是不一样的,一般不能通用,例如基于FLASH的配置芯片和基于EPROM芯片的配置文件的后缀名是不同的。需要根据实际情况在集成开发环境中生成。除此以外,主动配置模式使用的配置文件和被动配置模式以及JTAG配置模式使用的配置文件的格式也可能不同。

被动配置模式

被动配置模式通俗的讲就是FPGA被其他设备配置,这里的设备可以是任意一款微处理器芯片甚至CPLD,只要能够产生满足FPGA配置要求的控制信号和数据的模块都行。虽然每次系统重新上电后,FPGA又变成一片空白,但由于微处理器芯片上电后会自动重新开始执行程序,因此,可以将对FPGA的配置信息保存在微处理器的存储器,并按照FPGA芯片被动配置的时序要求将配置行为代码加入到微处理器的启动程序中,再通过适当的线路连接和外围电路配合,即可完成对FPGA芯片的上电后配置。由于FPGA芯片在这一配置过程中完全处于被动地位,所以也叫被动配置模式。
相对于主动配置模式而言,被动配置模式的保密性较好,因为要想破解这种配置模式下的FPGA逻辑功能,要么去破解相应的微处理器代码,要么去实时监控、记录并分析微处理器和FPGA芯片之间的通信波形然后想办法模仿之,总之都比较费劲一些。
除此以外,由于此时的配置是由微处理器控制的,那么微处理器完全可以保存多个不同功能对应的配置文件,然后根据一些选择信息来决定每次到底使用哪一个配置文件来对FPGA芯片进行程序加载。这样可以灵活的实现不同场合对FPGA功能的不同要求。

JTAG配置模式

JTAG,英文全称:Joint Test Action Group,翻译成中文即联合测试行为组织。它有两大功能:电路的边界扫描测试和可编程芯片的在线系统编程。
边界扫描测试发展于上个世纪90年代,随着大规模集成电路的出现,印制电路板制造工艺向小、微、薄发展。由于芯片的引脚多,元器件体积小,板的密度特别大,根本没有办法进行传统的下探针测试。于是一种新的测试技术产生了,联合测试行为组织,即JTAG,定义这种新的测试方法,并命名为边界扫描测试。边界扫描测试是在20世纪80年代中期做为解决PCB物理访问问题的JTAG接口发展起来的,它在芯片级层次上嵌入测试电路,以形成全面的电路板级测试协议。因此FPGA芯片可以利用它上面的JTAG接口,来对芯片进行一些在线调试,例如Altera公司的SignalTap工具,或者Xilinx的ChipScope工具,都是利用JTAG接口对FPGA芯片进行在线调试查错的。
除了完成边界扫描测试外,FPGA芯片上的JTAG接口的另一个重要功能就是对FPGA芯片进行非常便捷的在线系统编程。相比于主动配置模式和被动配置模式,只要系统已经上电,JTAG配置模式可以在任意时刻对FPGA芯片进行重配置,而此时的配置主动方,一般是PC机上的集成软件开发环境。开发环境通过PC机上的串口、并口、USB等等接口与FPGA芯片上的JTAG接口相连,然后按照相应的配置时序完成对FPGA芯片的配置。

你可能感兴趣的:(#,FPGA之道精选)