1ispGDX培训教程上海莱迪思半导体公司市场部1999年5月2ispGDX培训教材目录第一节ispGDX概述第二节GDF语法第三节ispGDX开发系统第四节ispGDX设计实例3第一节ispGDX概述ispGDX(ispGenericDigitalCrosspoint)是Lattice半导体有限公司推出的数字交叉阵列系列产品。与传统的CPLD和FPGA不同,ispGDX系列在系统级信号布线和接口电路的设计中显示了其无与伦比的灵活性和运行性能。ispGDX的特殊结构使得它特别适用于诸如多微处理器接口、多位的数据/地址总线接口以及PCB板信号布线等系统级硬件设计中。ispGDX的结构图1.1所示的是ispGDX总体的功能模块和I/O单元结构图。图1.1ispGDX总体的功能模块和I/O单元结构图从总体上看,ispGDX由两大模块组成:全局布线池(GlobalRoutingPool)和可编程的I/O单元(I/OCell)。从任意一个I/O单元输入的信号可经全局布线池输出到任意一个I/O单元。每个输入输出信号可以编程为组合方式、锁存方式或寄存器方式。每个I/O单元拥有独立的可编程三态控制信号(OE)、输出寄存器/锁存器的时钟信号(CLK)以及由两个选择信号(MUX0,MUX1)控制的可编程四选一的多路选择器(MUX)。通过在系统编程,ispGDX器件的每个I/O引脚输出固定的高或低电平用以模拟PCB板上的双列直插开关和跳线器。4ispGDX共有3种系列产品:ispGDX80,ispGDX120和ispGDX160。每种产品分别拥有80,120和160个通用输入/输出单元。图1.2ispGDX80A顶视图图1.2所示的是ispGDX80A的顶示图。它共有100个引脚,其中20个为系统引脚(电源、地和编程引脚),其余80个(I/OA0~I/OA19,I/OB0~I/OB19,I/OC0~I/OC19,I/OD0~I/OD19)为通用的输入输出引脚。ispGDX的应用领域PRSIispGDX系列首先可以应用于可编程随机信号互连(PRSI:ProgrammableRandomSignalInterconnect)场合。PRSI是指在众多芯片之间进行互连,它提供了PCB板级的静态引脚连接。ispGDX的可编程特性允许通过再编程来实现多种硬件配置。5I/O引脚之间的内部互连是通过E2CMOS工艺的GRP(全局布线池)实现的,一旦器件编程完毕任一输入引脚都以静态方式与任一输出引脚相连。比如一片ispGDX160可构成80*80的静态交叉矩阵,通过数秒时间的编程就可完成在系统的重构。图1.3是ispGDX实现PRSI功能的示意图。图1.3ispGDX实现PRSI功能的示意图PDPispGDX的另一种应用是可编程数据通道(PDP:ProgrammableDataPath)。利用ispGDX器件可实现诸如数据接收器、多路选择器、寄存器、锁存器以及动态信号通路切换等系统数据通路功能。单片的ispGDX器件可代替多片的通用接口电路器件,如TTL273,TTL373,TTL244,TTL245等器件。图1.4ispGDX可替代多达15种的通用接口器件由于用一种ispGDX器件可以根据需要定制成多种通用器件,因此使用ispGDX器件可以减少器件库存。此外,由多片TTL器件实现的接口电路可在一片ispGDX中实现,因此采用ispGDX器件可大大缩小PCB板面积,缩短系统开发时间,从而降低整个系统的成本。6PSRispGDX的每个通用I/O引脚均可通过在系统编程使之输出固定的高或低电平。因此它可方便地实现可编程开关替换(PSR:ProgrammableSwitchReplacement)功能,用来代替通用的双列直插开关和跳线器。利用在系统可编程技术在任何时候可以轻松修改器件配置以模仿开关或跳线的功能。图1.5PSR功能示意图除以上三种场合外,ispGDX在其它一些地方也被广泛地采用:24mA的总线驱动能力使得ispGDX可被用于总线驱动和收发器;输出特性与PCI标准兼容,使得用ispGDX器件加上ispLSI器件可实现多种类型的PCI控制器。7第二节GDF语法对于ispGDX系列产品,Lattice公司提供了基于Windows的集成开发环境-ispGDXDevelopmentSystem,下一节将详细讲述该开发系统的操作步骤。对ispGDX器件进行设计,首先要书写描述设计内容的ispGDX源文件-GDF文件,本节着重介绍该文件的结构和语法。GDF文件结构框架图2.1GDF文件的结构图GDF文件的总体结构如图2.1所示。该文件由四部分组成:1.器件选择部分(DeviceSection)该部分包含由关键字PART和PARAM开头的声明内容。PART用来描述所选器件的型号,PARAM用来设计参数,例如:是否加密(SECURITY)、输出是否上拉(PULLUP)、是否为慢摆输出(SLOWSLEW)以及书写用户的电子签名(UES:UserElectronicsSignature)的内容。2.集合/常量定义部分(Set/ConstantSection)8在该部分中用户可以定义由由一组信号组成的集合名称,也可以定义常量或字符串。关键字SET用来定义由一组信号组成的集合的名称,关键字DEFINE用来定义常量或字符串。该部分可出现在GDF文件的任何部位。3.引脚定义部分(PinSection)该部分定义设计中各引脚的类型,可以是输入信号(Input)、输出信号(Output)或双向信号(BIDI)。该部分还可以定义引脚的属性,如上拉(PULLUP)、慢摆(SLOWSLEW)或组合(COMB)。4.连接关系部分(ConnectionSection)该部分是GDF文件的核心部分,用于描述输入、输出之间的连接关系,以及控制信号的连接关系。GDF句法1.GDF文件的后缀后缀是GDF句法中较为复杂的部分,书写时需对ispGDX器件的结构,尤其是I/O单元的结构有一定的了解。由图1.1可见,GDX器件的I/O单元主要有一个四选一的多路选择器MUX、一个寄存器/锁存器(Register/Latch)和一个三态门组成。根据这一结构,GDF语法提供了以下这些后缀,其意义和用法如下表所示:类型后缀意义举例MUX输入.M04-1MUX的第一数据输入端pathAout_sig.m0.M14-1MUX的第二数据输入端pathBout_sig.m1.M24-1MUX的第三数据输入端pathCout_sig.m2.M34-1MUX的第四数据输入端pathDout_sig.m3MUX选择.S04-1MUX的第一控制端S0out_sig.s0.S14-1MUX的第二控制端S1Out_sig.s1控制端口.CLK寄存器时钟信号out_sig.clk.EN锁存器允许信号out_sig.en.OE三态门控制端out_sig.oe表2.1GDF后缀一览表例如:AOUTO.M0=AIN0;//AIN0与多路选择器MUX的第一数据输入端相连AOUTO.M1=AIN1;//AIN1与多路选择器MUX的第二数据输入端相连AOUTO.OE=AIN6;//AIN6连接输出信号AOUTO的三态控制端AOUTO.EN=AIN7;//AIN7连接输出信号AOUTO的锁存控制端9图2.2是4-1多路选择器MUX的示意图。图2.24-1多路选择器MUX的示意图在使用MUX时,必需定义至少一个数据输入端.M?(?表示0,1,2,3中任意一个数),而选择控制信号.S?有时候可不必定义,ispGDX开发系统会自动给其赋值。例如,当用户只定义了一个数据输入端时,用户可不必定义选择控制信号.S?,系统会按表2.2所示的规则自动赋予.S0,.S1为GND或VCC。表2.2定义一个输入端时控制信号的系统默认值同理,表2.3所示的是有两个输入通路时的控制信号的系统默认值。表2.3定义二个输入端时控制信号的系统默认值10当定义了两个以上的数据输入端口后选择控制信号.S0和.S1必需由用户定义。2.!操作符!操作符用于定义引脚的极性。其极性判断为“负负得正”原则。如果等式两边的信号的极性与引脚定义中的信号极性均相同,那么极性为正;如果等式两边的信号的极性与引脚定义中的信号极性均不相同,那么极性也为正;如果仅有等式一边的信号的极性与引脚定义中的信号极性相同,那么极性为负。例如:例1:INPUTin0{A13};OUTPUTxa{A0};BEGINxa.m0=in0;//正极性END例2:INPUTin0{A13};OUTPUTxa{A0};BEGIN!xa.m0=in0;//负极性END例3:INPUT!in0{A13};OUTPUTxa{A0};BEGINxa.m0=in0;//负极性END例4:INPUTin0{A13};OUTPUT!xa{A0};BEGINxa.m0=in0;//负极性END3.BEGIN关键字BEGIN用于表示连接关系部分的开始。它总是与结束标志关键字END一起使用。例如:DESIGNdesign1;PARTispGDX160-5Q208;INPUTin1{C13};INPUTin2{D13};INPUTin3{A13};11INPUTin4{B14};INPUTxs0{A38};INPUTxs1{A39};OUTPUTxa{A0};OUTPUTxb{A1};BEGIN//表示连接关系部分的开始xa.m0=!in3;xa.m1=!in4;xa.m2=gnd;//MUX的第三数据输入端接地xa.m3=gnd;//MUX的第四数据输入端接地xa.s0=xs0;xa.s1=xs1;xb.m0=vcc;//MUX的第一数据输入端接VCCxb.m1=vcc;//MUX的第二数据输入端接VCCxb.m2=in1;xb.m3=in2;xb.s0=xs0;xb.s1=xs1;END//连接关系段结束标志4.BIDI关键字BIDI用于定义双向的引脚信号。例如:DESIGNdesign2;PARTispGDX160-5Q208;SETbusA[dataA0..dataA3];SETbusB[dataB0,dataB1,dataB2,dataB3];SETbusC[dataC0..dataC2,dataC3,dataC4,dataC5..dataC7];SETbusD[dataD0,dataD1,dataD2..dataD4,dataD5,dataD6,dataD7];INPUT[oe0,oe1]{A9,A13};INPUTclk0{A8};BIDIbusB{B0..B3}COMB;//定义一组双向信号;用COMB//特性定义双向信号,使得在该I/O单元//中使用输入寄存器(或锁存器)和输出缓冲BIDIbusC{C0..C7};//定义一组双向信号BIDIbusD{D0..D7};//定义一组双向信号BIDIbusA{A0..A3};//定义一组双向信号BEGINbusA.oe=oe0;busA.m1=busB;busB.oe=!oe0;busB.clk=clk0;busB.m0=busA;busC.oe=oe1;busC.m3=busD;busD.oe=!oe1;busD.m2=busC;END5.DEFINE12关键字DEFINE用于定义常量和字符串的内容。在定义过后,GDF文件中如用到该常量或字符串名后,编译时会自动进行内容替换。例如:DESIGNdesign3;PARTispGDX160-5Q208;SETbusA[A0..A2];SETbusB[B0..B2];DEFINEOPTPULLUP;//定义一个字符串替换INPUToe0{A13}OPT;INPUTbusB{B0..B2};OUTPUTbusA{A0..A2}OPT;BEGINbusA.oe=oe0;busA.m1=busB;END6.DESIGN关键字DESIGN用于表示设计的开始,并且赋予整个设计一个名称。通常DESIGN出现在GDF文件的开头。例如:DESIGN