新闻  |   论坛  |   博客  |   在线研讨会
一种简单实用的FLEX 10K系列芯片并行加载电路
zhchxgh | 2009-07-14 21:56:25    阅读:1681   发布文章

一种简单实用的FLEX 10K系列芯片并行加载电路

作者 张 宇 袁晓松 马樟萼 

  摘 要:ALTERA最新推出的FLEX 10K系列PLD以其丰富的资源和低廉的价格受到越来越多用户的欢迎。由于该系列芯片以可重新配置的CMOS静态RAM单元为基础构成,因此必须在每次上电后对芯片进行配置。在讨论了FLEX10K系列芯片的各种加载方式后,提出一种简便、实用的脱机并行加载方案。
  关键词:PLD FLEX10K ALTERA

  FLEX(Flexibl Logic Element Matrix)10K系列芯片是ALTERA公司新近推出的PLD产品。与ALTERA公司先前推出的MAX7000系列EPLD相比,FLEX10K(以下简称10K)系列具有更加丰富的内部资源(最多可达10万门),更加充裕的可配置的I/O管脚(最多达406条)。再加上其低廉的价格,使得10K系列芯片受到越来越多用户的欢迎。由于10K系列芯片是以可重新配置的CMOS静态RAM单元为基础构成的,因此必须在每次开机时对芯片进行配置。
  10K系列芯片共有4种加载方式可供用户选择。它们是:串行EPROM方式、被动串行方式(PS方式)、被动并行同步方式(PPS方式)、被动并行异步方式(PPA方式)。这四种方式是利用2位模式码(MSEL1、MSEL0)来识别的,如表1所示。

表1 模式码表

MSEL1 MSEL0 加载方式 
0 0 EPROM方式或PS方式 
1 0 PPS方式 
1 1 PPA方式 

  串行EPROM方式所需的元件少,而且几乎不需要外加控制器件。ALTERA公司同时为使用串行EPROM方式的用户提供所需的串行EPROM-EPC1。但这种EPROM只能配置一次,因此不适合于开发人员使用。
  PS方式又可分为BitBlaster加载、FLEX下载电缆加载及微处理器加载三种方式。其中前两种方式要求用户系统与计算机通过电缆相连,整个加载操作由软件控制。但大多数的应用系统是脱机工作的,因此这两种方式对于多数用户来说不是很方便。若使用微处理器方式,用户需外加RAM,而且PS方式将只利用RAM的一位数据位。目前市面上的RAM字长多为8位,因此这种方式不是很实用。
  PPA方式利用微处理器与10K芯片间的就绪/忙信号来实现数据的可靠传送,但这将增加控制逻辑的复杂性。
  对于多数用户来说,理想的加载方式应是在全脱机状态下(无需微处理器的控制),利用并行方式对10K芯片进行加载。PPS方式基本上能满足上面提出的要求。但ALTERA公司提供的参考方案是利用微处理器实现加载的,因此有必要设计一种脱机的PPS加载方案。下面将介绍作者在这方面的一些成果。
1 与加载有关的控制信号
  10K系列芯片在加载中利用的控制信号共有四个:nCONFIG、nSTATUS、CONFDONE、DCLK。
  nCNFIG是10K芯片的输入信号。当此信号为低时,10K芯片处于复位状态。当nCONFIG出现由低到高的跳变时,芯片开始加载。
  nSTATUS是双向开路信号。此信号需经1kΩ电阻上拉。上电后10K芯片将此信号拉低,并保持100ms的时间。若加载中出现错误,芯片将此信号拉低。因此nSTATUS可用于错误指示。若外部器件将nSTATUS拉低,则10K芯片将进入错误状态。
  CONFDONE是双向开路信号。此信号需经1kΩ电阻上拉。作为输出时,CONFDONE可用作加载结束标志。在加载期间,10K芯片将此信号拉低,芯片正确加载后此信号被释放。作为输入时,此信号变高将使10K芯片初始化并进入用户模式。
  DCLK是时钟输入信号。此信号将被用于锁存外部数据。

2 PPS方式介绍
  被动并行同步方式(PPS)工作过程如下:当nCONFIG出现由低到高的跳变时加载被启动。当DCLK出现第一个上升沿时芯片锁存8位数据总线上的第一个配置字,并在随后的8个下降沿将此字节串行移入10K芯片内部。当DCLK出现第9个上升沿时,芯片将锁存第二个配置字,并重复上面的操作,直至所有数据都被移入。在加载过程中一旦出现错误,nSTATUS将被拉低,用户系统必须能识别这个信号,并重新启动加载过程。加载结束后,CONFDONE将被释放,但为了保证芯片能被正确初始化,DCLK必须至少再提供10个周期的时钟。PPS加载时序图如图1所示。


图1 PPS加载时序图

3 加载控制电路
 图2为作者设计的并行加载电路。此电路由晶振、电源电压监视器(TL7705)、地址计数器(74HC161)及可编程器件(GAL16V8)组成。


图2 加载电路

  电源电压监视器在上电期间可产生nCONFIG所需的复位脉冲。在加载过程中一旦出现错误,监视器可在GAL产生的复位信号的控制下重新启动加载过程而无需重新开机。
  计数器用于产生存储器地址。为了保证DCLK的上升沿能与存储器输出的数据对齐,DCLK由计数器输出地址的最低位(A0)与时钟允许信号START_EN相与后生成。计数器的高位输出(A4-A18)作为存储器的地址,这样保证DCLK的频率是存储器数据输出速率的8倍。为了保证加载开始时,存储器的读地址为0,设计中将nCONFIG作为计数器的清零信号。
  控制器的控制功能是由2片GAL16V8完成的。为了保证nCONFIG的上升沿与DCLK第一个时钟上升沿之间至少有5μs的延时,设计中选用1MHz晶振来提供计数器时钟,在计到8时,GAL的译码逻辑产生时钟允许信号使得DCLK上有时钟输出。这样就能保证DCLK的第一个时钟与nCONFIG的上升沿有8μs的延时。

4 存储器的选用
  FLEX 10K系列芯片的配置文件长度是固定的,与逻辑的复杂程度无关。不同型号的10K系列芯片配置文件长度如表2所示。

表2 10K系列芯片配置文件长度

器件类型 配置文件长度
(bit) 配置文件长度
(Kbyte) 
EPF10K10 115 000 15 
EPF10K20 225 000 28 
EPF10K30 368 000 45 
EPF10K40 488 000 60 
EPF10K50 609 000 75 
EPF10K70 881 000 108 
EPF10K100 1 172 000 144 

  多个10K芯片的配置文件可以存储在同一个存储器中,此时总文件长度为各个文件长度的和。例如:一片28C256可最多存储两个EPF10K10的配置文件。图3所示电路适用于10K10及10K20芯片的加载,若对10K系列其他类型的芯片加载,则应选用更大容量的存储器,并增加地址计数器的位数。 

5 GAL方程
  NAME   U2;
  DEVICEG16V8;
  /*PIN IN*/
  PIN1=CLK_IN;
  PIN13=START_EN;
  PIN[12,11,9..2]=[A9..A0];
  /*PIN OUT*/
  PIN14=START_L;
  PIN15=CLK;
  PIN   16=DCLK;
  /*LOGIC EQUATION*/
  FIELD   ADDR=[A9..0];
  START_L=ADDR:[0..7];
  CLK=CLK_IN;
  DCLK=STARTEN & A0;

  NAME   U3;
  DEVICE   G16V8;
  /*PIN IN*/
  PIN [9..1]=[A18..10];
  PIN   13=STATUS;
  PIN   16=START_L;
  /*PIN OUT*/
  PIN   17=START_EN;
  PIN   12=!RESET;
  /*LOGIC EQUATION*/
  FIELD ADDR_H=[A18..A10];
  START_EN=!(ADDR_H:[0] & START_L);
  !RESET =!(START_EN & !STATUS);

  通过以上介绍不难看出文中提出的加载电路有以下四个特点:
  (1)脱机工作,整个加载过程无需微处理器控制。
  (2)并行工作,由于设计中选用的是通用的并行EPROM,因此提高了加载速度。
  (3)修改方便,通用的并行EPROM克服了串行PROM只能烧一次的缺点。
  (4)自动检错,本电路的控制逻辑在加载期间监视状态指示信号(STATUS),并在加载出错时重新启动加载逻辑,这样就避免了系统重新开机。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客