GAL的工作模式

发布时间:2020-06-04 16:17:22

GAL的工作模式

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

GAL16V8寄存器模式

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

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

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

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

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

引脚号

功能

20

Vcc

10

29

仅作为输入

1

时钟输入

11

使能(低电平有效)

1219

输入或输出(本引脚反馈),图A和图B



寄存器模式逻辑图

输入 引脚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熔丝数显示在下页的逻辑图上。

引脚号

功能

20

Vcc

10

2~9,111

仅作为输入

1219(两端)

仅作为输出(无反馈),图B

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

B组合输出配置引脚12,19无反馈,7个输出乘积项,1个使能乘积项

13~18

输入或I/O本引脚反馈)A



复合模式逻辑图

专用输入 引脚2...9,1,11

组合输出 引脚12,19,无反馈

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

GAL16V8简单模式

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

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

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

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

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

引脚号

功能

20

Vcc

10

2...9,111

仅作为输入

1516(中间)

仅作为输出(无反馈),图B

12,13,14

输入或I/O下临反馈),图A和图C

B组合输出配置,引脚15,16,反馈

A组合输出配置引脚12,13,14,下临脚反馈17,18,19上临脚反馈8个输出乘积项

17,18,19

输入或I/O上临脚反馈,图A和图C

简单模式逻辑图

专用输入 引脚2...9,1,11

组合输出 引脚15,16,无反馈

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



编译软件对OLMCOutput Logic Macrocell的支持

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

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

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

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

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

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

简单模式

模式

寄存器模式

自动模式选择

CUPL

G16V8AS

G16V8MA

G16V8MS

G16V8

TANGO-PLD

G16V8AS3

G16V8C

G16V8R

G16V8

GAL16V8GAL20V8引脚分布图

GAL16V8引脚功能表

引脚

寄存器模式

复合模式

简单模式

1

时钟

专用输入

专用输入

2...9

专用输入

10

20

电源

电源

电源

19

引脚(12...19),

组合I/O,本引脚反馈

引脚(19),组合输出,不可反馈

引脚(17...19),

组合I/O,上临引脚反馈,

或专用输入

18

引脚13...18)

组合I/O,本引脚反馈

17

16

引脚(15,16),组合输出,反馈

15

14

引脚(12...14

组合I/O,下临引脚反馈,

或专用输入

13

12

引脚(12),组合输出,不可反馈

11

输出使能

专用输入

专用输入

开发软件应用提示

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开发软件wincupl(),能做cupl语言程序设计和波形仿真,但不能做图形设计,只能部分代替Protel99 SE中的PLD模块wincupl可以从atmel网站免费下载。

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

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

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

进入Protel99 SE 创建一个名为PLD图形设计文件。

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

在图形程序经过编译后生成的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源程序文件和可用于烧片的目标程序文件

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

保存文件,然后在sch界面或pld界面进行仿真PLD/Simulate

仿真成功后生成波形文件和波形格式文件

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

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

图形编程举例

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

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

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

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

以下为文件头

NAME GAL138;

DATE 2013/6/11;

PARTNO ;

REVISION ;

DESIGNER ;

COMPANY ;

ASSEMBLY ;

LOCATION ;

DEVICE g16v8;

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

/* All Parts Connected */

这一部分全部为注释,全部省略

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

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

/* Input and Output Pin Declarations */

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

以下为输入引脚说明

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 */

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

以下为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);

/* Part = (U6) */

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

以下为GAL16V8输出引脚

NetY0_O = !NetU6_Y0;

/* Part = (U15) */

NetY1_O = !NetU6_Y1;

/* Part = (U16) */

GAL16V8输出方程后半部分省略

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

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

NAME GAL138; 文件头部分

DATE 2003-6-17;

PARTNO ;

REVISION ;

DESIGNER ;

COMPANY ;

ASSEMBLY ;

LOCATION ;

DEVICE g16v8;

Order: 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;

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的工作模式

相关推荐