GAL的工作模式
发布时间:2020-06-04 16:17:22
发布时间:2020-06-04 16:17:22
GAL的工作模式
GAL16V8有3种工作模式,即寄存器模式、复合模式和简单模式。适当连接器件的引脚线,由OLMC的输出/输入特性可以决定其工作模式。
GAL16V8寄存器模式
在寄存器模式中,宏单元被配置为专用的寄存器输出或者I/O功能。
这种模式中有效的结构配置与普通的16R8和16RP4器件类似,只是在极性,I/O和寄存器布置方面有不同。
所有的宏单元共享共同的时钟和输出使能控制引脚。任一个宏单元都能够被配置成寄存器或I/O形式,可以多至8个。
专用的输入或输出功能能够被用作I/O功能的子系统。寄存器形式输出每个输出端有8个乘积项(图A),I/O形式输出端有7个乘积项(图B),在两个图中,引脚1和11总是分别地配置为时钟输入和输出使能,不能被配置为专用输入。
包括用户电子签名(UES)熔丝和乘积项禁止 (PTD) 熔丝,JEDEC熔丝数显示在下页的逻辑图上。
引脚号 | 功能 |
20 | Vcc |
10 | 地 |
2~9 | 仅作为输入 |
1 | 时钟输入 |
11 | 使能(低电平有效) |
12~19 | 输入或输出(本引脚反馈),图A和图B |
寄存器模式逻辑图
输入 引脚2-9
I/O 引脚12-19,本引脚反馈
时钟 引脚1
输出使能 引脚11
GAL16V8复合模式
在复合模式中,宏单元或者仅仅配置为输出功能或者配置为I/O功能。
这个模式中有效的结构配置类似于普通的16L8和16P8器件,只是在每个宏单元中带有可编程的极性。
这个模式中最多能有6个I/O口,专用的输入或输出功能能够被用作I/O功能的子系统(图A)。2个最外边的宏单元(引脚 12 和 19)没有输入能力(图B)。在寄存器模式中能够实现设计需要的8个I/O口。
全部宏单元的每一个输出端有7个乘积项,1个乘积项被用于可编程的输出使能控制(图A和图B)。引脚1和11作为输入
到与阵列的数据输入端总是有效的,并分别地使用引脚19和12的反馈。由于有这个反馈路径,引脚19和12不能选择反馈。。
包括UES熔丝和PTD熔丝的JEDEC熔丝数显示在下页的逻辑图上。
引脚号 | 功能 |
20 | Vcc |
10 | 地 |
2~9,1,11 | 仅作为输入 |
12,19(两端) | 仅作为输出(无反馈),图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简单模式
在简单模式中,宏单元被配置为专用的输入或者专用的组合输出。
在这种模式中有效的结构配置与通用的10L8和12P6器件类似,只是一般的输出极性或输入选择可能变更。
简单模式中全部输出端都最多有8个控制逻辑乘积项,附加的,每一个输出端都有可编程的极性。
引脚1和11作为输入到与阵列的数据输入端总是有效的。中间的2个宏单元(引脚15和16)不能被用作输入或I/O引脚(图A,图C),而仅仅能被用作专用(图B)。
包含UES熔丝和PTD熔丝JEDEC熔丝数显示在下页的逻辑图里。
引脚号 | 功能 |
20 | Vcc |
10 | 地 |
2...9,1,11 | 仅作为输入 |
15,16(中间) | 仅作为输出(无反馈),图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,下临引脚反馈
编译软件对OLMC(Output Logic Macrocell)的支持
软件编译器以不同的器件类型支持全部3种不同的OLMC模式。3种器件类型包含在下面的表中。大多数编译器都有能力自动选择器件类型,通常是基于寄存器用法和输出使能(OE)用法。器件的寄存器用法强迫软件选择寄存器模式。带有乘积项控制的OE的所有组合输出,将强迫软件选择复杂模式。仅仅当所有的输出都是专用组合而没有OE控制时,软件选择简单模式。
表中的不同器件类型能够被使用而代替软件的自动器件选择。详情请参阅编译软件手册。
当使用软件配置器件时,用户必须特别关注下列每一种模式中限制条件:
在寄存器型模式中,引脚1和11总是分别地配置为时钟输入和输出使能,不能被配置为专用输入。
在复合模式中,引脚1和11变为专用输入并分别地使用引脚19和12的反馈。由于有这个反馈路径,引脚19和12不能选择反馈。
在简单模式中,输出引脚的全部反馈路径通过邻近的引脚连接。因此,最中间的两个引脚(引脚15和16)不能选择反馈而被配置为专用组合输出。
简单模式 | 复合模式 | 寄存器模式 | 自动模式选择 | |
CUPL | G16V8AS | G16V8MA | G16V8MS | G16V8 |
TANGO-PLD | G16V8AS3 | G16V8C | G16V8R | G16V8 |
GAL16V8和GAL20V8引脚分布图
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 SE的PLD模块支持简单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:”域的内容是输出输入的逻辑关系式,格式类似真值表,输入变量值用0,1,X,C表示,输出变量值用H,L,Z表示,“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