EDA技术与实践教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 FPGA/CPLD器件的配置与编程

通常,将对FPGA的数据文件下载过程称为配置(Configure),而对CPLD的数据文件下载过程称为编程(Program)。

2.4.1 下载电缆

目前,Altera的下载电缆主要有ByteBlasterⅡ、ByteBlaster MV并口下载电缆、USB Blaster USB口下载电缆、MasterBlaster串行/USB通信电缆。下载电缆既可用于FPGA器件的ICR,也可用于CPLD器件的ISP。下面重点介绍ByteBlaster并口下载电缆。

ByteBlaster并口下载电缆连接到PC机25针LPT标准接口,它由以下几部分组成:与PC机并口相连的25针插头、与用户PCB板相连的10针插头,以及25针到10针的变换电路。要下载的数据文件从PC机并口通过ByteBlaster电缆下载到电路板上的器件中,其连接方法如图2-12所示。

图2-12 并口下载电缆连接示意图

(1)ByteBlaster 25针插头

ByteBlaster与PC机并口相连的是25针插头,它在PS模式下和在JTAG模式下的引脚信号定义是不同的,见表2-11。

表2-11 ByteBlaster 25针插头的引脚信号定义

(2)ByteBlaster 10针插座

ByteBlaster下载电缆的10针插座与含有FPGA/CPLD目标器件的PCB板上的10针插头相连接。PCB板上的10针插头分成两排,每排5个引脚,连接到器件引脚上(器件的引脚名与10针插座的引脚信号名称相同)。表2-12列出了10针插座在PS模式下和在JTAG模式下的引脚信号定义。

表2-12 ByteBlaster 10针插座的引脚信号定义

(3)ByteBlaster数据变换电路

在ByteBlaster下载电缆中,其变换电路实际上只有一个74LS244驱动芯片和几个电阻,变换电路原理如图2-13所示。

图2-13 ByteBlaster变换电路原理图

2.4.2 配置与编程模式

Altera器件的配置方式可分为主动串行(AS)、被动串行(PS)、被动并行同步(PPS)、被动并行异步(PPA)和JTAG模式。主动配置方式由专用配置器件引导配置操作过程,而被动配置方式由外部计算机或控制器控制配置过程。其中PS和JTAG模式最为常用。

(1)PS模式

在PS模式中,配置数据从数据源通过ByteBlaster下载电缆串行地送到FPGA,配置数据的同步时钟由数据源提供。配置文件是编译器在项目编译时自动产生的SRAM目标文件(.sof)。下面以FLEX 10K器件为例介绍PS模式对器件的配置情况。其连接如图2-14所示,主要配置引脚如下。

图2-14 PS模式下ByteBlaster下载电缆对FLEX器件的配置

①MSEL1、MSEL0 输入脚,接地。

②nSTATUS 命令状态下为器件的状态输出。加电后,FLEX 10K立即驱动该引脚到低电位,然后在100ms内释放它。nSTATUS必须经过1kΩ电阻上拉到VCC,如果配置中发生错误,FLEX 10K将其拉低。

③nCONFIG 配置控制输入。低电位使FLEX 10K器件复位,在由低到高的跳变过程中启动配置。

④CONF_DONE 双向漏极开路。在配置前和配置期间为状态输出,FPGA将其驱动为低。所有配置数据无误差接收后,FLEX 10K将其置为三态,由于有上拉电阻,所以将变为高电平,表示配置成功。在配置结束且初始化开始时,CONF_DONE为状态输入:若配置电路驱动该引脚到低,则推迟初始化工作;输入高电位则引导器件执行初始化过程并进入用户状态。CONF_DONE必须经过1kΩ电阻上拉到VCC,而且可以将外电路驱动为低以延时FLEX 10K初始化过程。

⑤DCLK 输入脚。为外部数据源提供时钟。

⑥nCE 使能输入。当nCE为低时,使能配置过程。单片配置时,nCE必须始终为低。

⑦nCEO 输出(专用于多片器件)。FLEX 10K配置完成后,输出为低。在多片级联配置时,驱动下一片的nCE端。

⑧DATA0 数据输入,在DATA0引脚上的一位配置数据。

在PS配置方式中,由ByteBlaster下载电缆或微处理器产生一个由低到高的跳变送到nCONFIG引脚,然后编程硬件或微处理器将配置数据送到DATA0引脚,该数据锁存至CONF_DONE变为高电位。编程硬件或微处理器先将每字节的最低位LSB送到FLEX 10K器件,当CONF_DONE变为高电位后,DCLK用多余的10个周期来初始化该器件(器件的初始化由下载电缆自动执行)。在PS方式中没有握手信号,故配置时钟的工作频率必须低于10MHz。

(2)JTAG模式

JTAG(Joint Test Action Group)是1985年制定的检测PCB和IC芯片的一个标准,1990年被修改后成为IEEE的一个标准,即IEEE 1149.1—1990。通过这个标准,可对具有JTAG接口芯片的硬件电路进行边界扫描和故障检测。在JTAG模式下,利用ByteBlaster下载电缆,可以实现FPGA/CPLD器件的ICR和ISP。下面举例说明JTAG模式下ByteBlaster下载电缆对FPGA/CPLD器件的配置或编程情况。

①JTAG模式下ByteBlaster下载电缆对FPGA器件的配置 通过ByteBlaster电缆,将编译过程中产生的SRAM目标文件(.sof)直接下载到目标器件FPGA中。以FLEX 10K器件为例,其连接如图2-15所示。器件的配置是经过JTAG引脚TCK、TMS、TDI和TDO完成的,所有其他I/O引脚在配置过程中均为三态。

图2-15 JTAG模式下ByteBlaster下载电缆对FPGA器件的配置

注:FIEX 10K的144引脚TQEP封装器件没有TRST信号脚,些时TRST信号可以忽略,nCONFIG、MSEL0、MSEL应根据FLEX 10K的配置方案进行连接。如果仅仅使用JTAG配置模式,则nCONFIG连到VCC,MSEL0和MSEL1连到地

JTAG引脚定义如下。

a.TCK 测试时钟输入。

b.TDI 测试数据输入,数据通过TDI输入JTAG口。

c.TDO 测试数据输出,数据通过TDO从JTAG口输出。

d.TMS 测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式。

e.可选引脚TRST 输入引脚,用于测试复位,低电平有效。

②JTAG模式下ByteBlaster下载电缆对CPLD器件的编程 通过ByteBlaster电缆,将编译过程中产生的编程目标文件(.pof)直接下载到目标器件CPLD中。以MAX 9000器件为例,其连接如图2-16所示。器件的配置也是经过JTAG引脚完成的,所有其他I/O引脚在编程过程中均为三态。

图2-16 JTAG模式下ByteBlaster下载电缆对CPLD器件的配置

当用户电路板上具有多个支持JTAG接口的FPGA/CPLD器件时,要求一个具有JTAG接口模式的插座连接到几个支持JTAG接口的FPGA/CPLD器件,如ByteBlaster的10针阴插座。JTAG链中器件的数目受限于ByteBlaster电缆的驱动能力,当器件数目超过5个时,建议对JTAG引脚信号进行缓冲。当用户电路板包含多个FPGA/CPLD目标器件时,或者对用户电路板进行JTAG边界扫描测试时,采用JTAG链进行编程是最理想的。

为了在JTAG链中对FPGA/CPLD器件进行配置或编程,可通过编程软件,将JTAG链中的所有其他器件(包括非Altera器件)设定为旁路(Bypass)模式。在旁路模式下,编程软件仅对选定的目标器件进行编程与校验。Altera公司的FPGA和CPLD能够放在同一个JTAG链中进行编程和配置。

2.4.3 配置方式

FPGA的在线配置方式一般有两类:一是通过下载电缆由计算机直接对其进行配置;二是通过配置芯片对其进行配置。在应用现场,不可能在FPGA每次上电后通过PC机手动进行配置,这时,应采用上电自动加载配置。为此,Altera提供了专用配置芯片(详见2.2.6节),对FPGA进行上电自动加载配置。

在选用配置芯片时,应根据FPGA器件的容量,决定配置芯片及其数目(可查阅QuartusⅡ开发工具Help中的 Devices and Adapters栏目)。

(1)使用专用配置器件配置FPGA器件

专用配置器件对FPGA器件的配置电路如图2-17所示。

图2-17 专用配置器件对FPGA器件的配置电路图

配置器件的控制信号(如nCS、OE和DCLK等)直接与FPGA器件的控制信号相连。所有的器件不需要任何外部智能控制器,就可以由专用配置器件进行配置。配置器件的OE和nCS引脚,控制着DATA输出引脚的三态缓存,并控制地址计数器的使能。当OE为低电平时,配置器件复位地址计数器,DATA引脚为高阻状态。nCS引脚控制着配置器件的输出:如果在OE复位脉冲后,nCS始终保持高电平,计数器将被禁止,DATA引脚为高阻;当nCS变低电平后,地址计数器和DATA输出均使能;OE再次变低电平时,不管nCS处于何种状态,地址计数器都将复位,DATA引脚置为高阻态。

对图2-17说明如下。

①同样的上拉电阻应该连接到配置器件的电源。

②所有的上拉电阻为1kΩ(APEX 20KE、APEX 20KC系列器件例外,它们的上拉电阻为10kΩ)。用户对EPC16、EPC8和EPC2芯片的OE和nCS引脚,可配置内部上拉电阻,如果这些引脚使用了内部上拉电阻,则不能再使用外部上拉电阻。

③nINIT_CONF引脚仅对EPC16、EPC8和EPC2芯片有效。如果nINIT_CONF无效(如在EPC1中)或未使用,则nCONFIG应该直接或经上拉电阻连到VCC

④nINIT_CONF引脚的内部上拉电阻对EPC16、EPC8和EPC2芯片总是有效的,故nINIT_CONF引脚不需要外部上拉电阻,nCONFIG必须通过10kΩ上拉电阻连到VCCINT引脚。

⑤nCEO引脚悬空。

⑥为了保证APEX 20KE和其他配置器件在加电时成功配置,nCONFIG上拉到VCCINT引脚。

⑦配置APEX 20KE器件时,为了隔离1.8V和3.3V电源,在APEX 20KE器件的nCONFIG引脚与配置芯片的nINIT_CONF引脚之间加一个二极管。二极管门限电压应小于等于0.7V,二极管会使nINIT_CONF引脚成为开漏引脚,仅能驱动低电平及三态。

⑧EPC16、EPC8和EPC2芯片不应用于配置FLEX 6000系列器件。

允许多个配置器件配置单个和多个FPGA。对多个FPGA器件的配置电路与对单个FPGA器件的配置电路类同:多个FPGA器件级联时,第一个器件的nCEO脚连到第二个器件的nCE脚,其他引脚与专用配置芯片的连接方式和单个FPGA器件配置电路图的连接方式相同。

(2)利用微处理器配置FPGA

在具有微处理器的系统中,可以使用微处理器系统的存储器来存储配置数据,并通过微处理器配置FPGA,这种方法几乎不增加成本,并且具有较好的设计保密性和可升级性。下面介绍微处理器系统中连接方式较简单的PS配置模式。图2-18是其电路连接图。

微处理器将nCONFIG置低再置高来初始化配置。当检测到nSTATUS变高后,微处理器将配置数据和移位时钟分别送到DATA0和DCLK引脚,送完配置数据后,检测CONF_DONE是否变高,若未变高,说明配置失败,应该重新启动配置过程。当检测CONF_DONE变高后,微处理器根据器件的定时参数,再送一定数量的时钟到DCLK引脚,待FPGA初始化完毕后进入用户模式。如果微处理器具有同步串口,DATA0、DCLK使用同步串口的串行数据输出和时钟输出,这时只需把数据锁存到微处理器的发送缓冲器。在使用普通I/O口输出数据时,微处理器每输出1个比特,就要将DCLK置低再置高产生一个上升沿。

图2-18 PS模式下微处理器对FPGA器件的配置电路图

思考

(1)早期的可编程逻辑器件有哪几类?

(2)请用自己的语言分别描述FPGA与CPLD的工作原理及结构特征。

(3)请描述配置与编程的特征。