GAL的工作模式

发布时间:2020-04-08 18:00:16

GAL的工作模式

GAL16V83种工作模式,即寄存器模式、复合模式和简单模式。适当连接器件的引脚线,由OLMC的输出/输入特性可以决定其工作模式。

GAL16V8寄存器模式

在寄存器模式中,宏单元被配置为专用的寄存器输出或者I/O功能。

这种模式中有效的结构配置与普通的16R816RP4器件类似,只是在极性,I/O和寄存器布置方面有不同。

所有的宏单元共享共同的时钟和输出使能控制引脚。任一个宏单元都能够被配置成寄存器或I/O形式,可以多至8个。

专用的输入或输出功能能够被用作I/O功能的子系统。寄存器形式输出每个输出端有8个乘积项(图A),I/O形式输出端有7个乘积项(图B),在两个图中,引脚111总是分别地配置为时钟输入和输出使能,不能被配置为专用输入。

包括用户电子签名(UES)熔丝和乘积项禁止 (PTD) 熔丝,JEDEC熔丝数显示在下页的逻辑图上。


寄存器模式逻辑图

输入 引脚2-9

I/O 引脚12-19,本引脚反馈

时钟 引脚1

输出使能 引脚11

GAL16V8复合模式

在复合模式中,宏单元或者仅仅配置为输出功能或者配置为I/O功能。

这个模式中有效的结构配置类似于普通的16L816P8器件,只是在每个宏单元中带有可编程的极性。

这个模式中最多能有6I/O口,专用的输入或输出功能能够被用作I/O功能的子系统(图A)。2个最外边的宏单元(引脚 12 19)没有输入能力(图B)。在寄存器模式中能够实现设计需要的8I/O口。

全部宏单元的每一个输出端有7个乘积项,1个乘积项被用于可编程的输出使能控制(图A和图B)。引脚111作为输入

到与阵列的数据输入端总是有效的,并分别地使用引脚1912的反馈。由于有这个反馈路径,引脚1912不能选择反馈。

包括UES熔丝和PTD熔丝的JEDEC熔丝数显示在下页的逻辑图上。


复合模式逻辑图

专用输入 引脚2...9111

组合输出 引脚1219,无反馈

组合I/O 引脚13...18,本引脚反馈,7个输出乘积项, 1个使能乘积项

GAL16V8简单模式

在简单模式中,宏单元被配置为专用的输入或者专用的组合输出。

在这种模式中有效的结构配置与通用的10L812P6器件类似,只是一般的输出极性或输入选择可能变更。

简单模式中全部输出端都最多有8个控制逻辑乘积项,附加的,每一个输出端都有可编程的极性。

引脚111作为输入到与阵列的数据输入端总是有效的。中间的2个宏单元(引脚1516)不能被用作输入或I/O引脚(图A,C),而仅仅能被用作专用(图B)。

包含UES熔丝和PTD熔丝JEDEC熔丝数显示在下页的逻辑图里。

简单模式逻辑图

专用输入 引脚2...9111

组合输出 引脚1516,无反馈

组合I/O 引脚12,13,14,上临引脚反馈,17,18,19,下临引脚反馈


编译软件对OLMCOutput Logic Macrocell的支持

软件编译器以不同的器件类型支持全部3种不同的OLMC模式。3种器件类型包含在下面的表中。大多数编译器都有能力自动选择器件类型,通常是基于寄存器用法和输出使能(OE)用法。器件的寄存器用法强迫软件选择寄存器模式。带有乘积项控制的OE的所有组合输出,将强迫软件选择复杂模式。仅仅当所有的输出都是专用组合而没有OE控制时,软件选择简单模式。

表中的不同器件类型能够被使用而代替软件的自动器件选择。详情请参阅编译软件手册。

当使用软件配置器件时,用户必须特别关注下列每一种模式中限制条件:

在寄存器型模式中,引脚111总是分别地配置为时钟输入和输出使能,不能被配置为专用输入。

在复模式中,引脚111变为专用输入并分别地使用引脚1912的反馈。由于有这个反馈路径,引脚1912不能选择反馈。

在简单模式中,输出引脚的全部反馈路径通过邻近的引脚连接。因此,最中间的两个引脚(引脚1516)不能选择反馈而被配置为专用组合输出。

GAL16V8GAL20V8引脚分布图

word/media/image11_1.pngword/media/image12_1.png

word/media/image13_1.png

word/media/image14_1.png

GAL16V8引脚功能表

开发软件应用提示

Protel99 SEPLD模块支持简单PLD器件的图形程序设计和cupl语言程序设计。不论图形程序或cupl语言程序,编译后都能生成jed文件。jed文件的容可以用通用烧写器写入PLD器件。图形程序设计仅需画图,不用编写代码,比语言程序设计直观方便得多。PLD模块中的图形程序设计可以使用358个图形符号(其中31个为74系列器件功能)。图形符号可以看作语言程序设计中的库函数,图形符号的输入引脚相当于库函数的参数,输出引脚相当于库函数的返回值。

Protel 2004及以后版本FPGA模块代替PLD模块,不再支持简单PLD器件设计。现在实际使用的简单PLD器件主要就是GAL了,显然,Protel99 SE中的PLD模块,对于开发GAL器件是非常珍贵的。

atmel公司的PLD开发软件wincupl10.9MB),能做cupl语言程序设计和波形仿真,但不能做图形设计,只能部分代替Protel99 SE中的PLD模块。wincupl可以从atmel免费下载。

Cupl程序设计应注意三点:① 文件头的10个项目中,至少要有NAME(源文件名,例如NAME xxx.pld,扩展名可省略),DEVICE(器件类型,即工作模式,例如DEVICE g16v8,其中g16v8表示GAL器件GAL16V8的自动模式选择)这2项;② 分配引脚时,变量方向与引脚方向要一致;③ 程序主体中,语句的语法要正确。这样,经过编译就可以产生熔丝图文件xxx.jed,逻辑的正确性由模拟仿真验证或由实验验证。

PLD图形程序设计几乎等同于电路原理图绘制,不同点在于,PLD图形必须使用专用图形符号。图形符号库的加载路径是,\Design Explorer 99 SE\Library\Sch\PLD.ddbPLD.ddb中包含2个库文件:PLD Devices.libPLD symbols.lib。其中,PLD symbols.lib是逻辑符号库,用于PLD图形程序,PLD Devices.libPLD器件的引脚图库,用于电路原理图。

PLD图形程序设计步骤如下:

1 进入Protel99 SE 创建一个名为xxx.schPLD图形设计文件。

布放元件 在空白的sch文件中,PLD symbols.lib库中选取逻辑符号,逻辑元件,引脚符号,放到适当的位置。

在图形程序经过编译后生成的pld文件中,引脚符号的设计号(Design)将成为引脚变量的一部分,为了便于指称和识别,应将设计号修改为比较有意义的名称(字符或字符串)。

连线 wire线连接逻辑符号,逻辑元件,引脚符号等逻辑元素。也可以用总线的方式,即用总线和总线输入线联结。

分配引脚 每个引脚符号有一个引脚说明文字LOC=PIN[*],为了显示或隐藏引脚说明文字,PLD/Toggle Pin LOC

若脚说明文字LOC=PIN[*]显现,鼠标双击该文字,出现“Part Descripion”对话框,将“Text”项后面的字符串“LOC=PIN[*]”中的“*号改为引脚号,例如整个字符串改“为LOC=PIN[1]

对于复合引脚符号,如OPAD8,写为“LOC=PIN[12..19]的样式。

配置PLD器件 配置器件即选择工作模式。PLD/Configure...->Configure PLD Compiler对话框:①“Option”工作模式选项卡:Target Device”小窗口中为默认器件“Virtual”,点击“Change”按钮->Target Device选项卡:在左边“Device”下拉窗口中,选“GAL”,在右边下拉窗口中,选“g16v8”或 g20v8,即为“自动模式选择”。②“Output Fomats”输出格式选项卡:保持默认容,即默认生成jed文件。

编译 PLD/Compile,如果编译能够完成,即生成cupl源程序文件xxx.pld和可用于烧片的目标程序文件xxx.jed

仿真 创建一个与pld文件同名(也就是与sch文件同名)的xxx.si文件,在其中编写仿真文件。仿真文件中的变量名称(输入引脚和输出引脚的名称,或称设计号)必须与编译后生成的xxx.pld文件中的变量名称相同。

保存xxx.si文件,然后sch界面或pld界面进行仿真:PLD/Simulate

仿真成功后生成波形文件xxx.so波形格式文件xxx.WO

仿真说明文件主要包括2个域,第1个是order:域,第2个是vectors:域,vectors:域的容是输出输入的逻辑关系式,格式类似真值表,输入变量值用01XC表示,输出变量值用HLZ表示,order:域则指明vectors:域中变量的顺序,变量名必须与pld文件中使用的变量名一致。

仿真并不必须,可以不进行。此外,在proteus中也可以对pld器件进行仿真,只要加载jed文件即可。

图形编程举例

. 任务 利用GAL器件GAL16V8,仿照74138,设计一个3-8译码器。输入引脚的数目和功能,与74138完全一致。输出引脚的数目与74138相同,但输出极性由74138的低电平有效变为高电平有效。

. 图形程序设计 设计好的图形程序如下图,将文件名取为xxx.sch。图中,输入引脚符号和输出引脚符号的名称(即设计号)与74138是完全一致的。

. 工作模式配置 配置为自动模式选择,即“GAL”和“g16v8”。

. 编译 编译后自动生成的xxx.pld文件(部分)如下:

以下为文件头

NAME GAL138;

DATE 2013/6/11;

PARTNO ;

REVISION ;

DESIGNER ;

COMPANY ;

ASSEMBLY ;

LOCATION ;

DEVICE g16v8;

/*************************************************************************************/

/* All Parts Connected */

word/media/image19.gif 这一部分全部为注释,全部省略

/*************************************************************************************/

/*************************************************************************************/

/* Input and Output Pin Declarations */

word/media/image20.gif/*************************************************************************************/

以下为输入引脚说明

PIN 1 = NetA_I;

/* Part = (A) */

PIN 2 = NetB_I;

/* Part = (B) */

PIN 3 = NetC_I;

/* Part = (C) */

PIN 4 = NetG1_I;

/* Part = (G1) */

PIN 5 = NetG2A_I;

/* Part = (G2A) */

PIN 6 = NetG2B_I;

/* Part = (G2B) */

以下为输出引脚说明

PIN 12 = NetY0_O;

/* Part = (Y0) */

PIN 13 = NetY1_O;

/* Part = (Y1) */

PIN 14 = NetY2_O;

/* Part = (Y2) */

PIN 15 = NetY3_O;

/* Part = (Y3) */

PIN 16 = NetY4_O;

/* Part = (Y4) */

PIN 17 = NetY5_O;

/* Part = (Y5) */

PIN 18 = NetY6_O;

/* Part = (Y6) */

PIN 19 = NetY7_O;

/* Part = (Y7) */

/*************************************************************************************/

/*************************************************************************************/

/* Logic Equations */

/*************************************************************************************/

word/media/image21.gif 以下为x74_138输出方程

NetU6_Y0 = !(!NetA_I & !NetB_I & !NetC_I & NetG1_I & !NetG2A_I & !NetG2B_I);

/* Part = (U6) */

NetU6_Y1 = !(NetA_I & !NetB_I & !NetC_I & NetG1_I & !NetG2A_I & !NetG2B_I);

word/media/image22.gif/* Part = (U6) */

74_138输出方程后半部分省略

以下为GAL16V8输出引脚

NetY0_O = !NetU6_Y0;

/* Part = (U15) */

NetY1_O = !NetU6_Y1;

/* Part = (U16) */

word/media/image23.gif GAL16V8输出方程后半部分省略

/*************************************************************************************/

. 仿真 以下为仿真文件的容,不能有汉字注释,仿真文件名必须与pld文件(也是.sch文件)相同,。

word/media/image24.gifNAME GAL138; 文件头部分

DATE 2003-6-17;

PARTNO ;

REVISION ;

DESIGNER ;

COMPANY ;

ASSEMBLY ;

LOCATION ;

DEVICE g16v8;

word/media/image25.gifOrder: NetG2A_I, NetG2B_I, NetG1_I, 变量顺序说明部分

NetC_I, NetB_I, NetA_I,

NetY7_O, NetY6_O, NetY5_O, NetY4_O,

NetY3_O, NetY2_O, NetY1_O, NetY0_O;

word/media/image23.gif

Vectors: 仿真向量部分

/* G G G C B A Y Y Y Y Y Y Y Y */

/* 2 2 1 7 6 5 4 3 2 1 0 */

/* A B */

1 1 X X X X L L L L L L L L

1 0 X X X X L L L L L L L L

0 1 X X X X L L L L L L L L

X X 0 X X X L L L L L L L L

0 0 1 0 0 0 L L L L L L L H

0 0 1 0 0 1 L L L L L L H L

0 0 1 0 1 0 L L L L L H L L

0 0 1 0 1 1 L L L L H L L L

0 0 1 1 0 0 L L L H L L L L

0 0 1 1 0 1 L L H L L L L L

0 0 1 1 1 0 L H L L L L L L

0 0 1 1 1 1 H L L L L L L L

GAL的工作模式

相关推荐