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 10 2~9 Vcc 地 仅作为输入 时钟输入 使能(低电平有效) 输入或输出(本引脚反馈),图A和图B 功能 1 11 12~19
图A,寄存器配置,输入或输出,引脚12...19, 8个输出乘积项,本引脚反馈,/OE和CLK公用 图B,组合I/O配置,输入或输出,引脚12...19,7个输出乘积项,1 个使能乘积项,本引脚反馈
1 / 12GAL工作模式1/12
如果您需要使用本文档,请点击下载按钮下载!
寄存器模式逻辑图
输入 I/O 时钟 输出使能
引脚2-9
引脚12-19,本引脚反馈 引脚1 引脚11
2 / 12GAL工作模式2/12
如果您需要使用本文档,请点击下载按钮下载!
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 10 2~9,1,11 Vcc 地 仅作为输入 功能 12,19(两端) 13~18 仅作为输出(无反馈),图B 输入或I/O(本引脚反馈),图A 图A,组合I/O配置,引脚13...18,本引脚反馈,7个输出乘积项,1个使能乘积项 图B,组合输出配置,引脚12,19,无反馈,7个输出乘积项,1个使能乘积项 3 / 12GAL工作模式3/12 如果您需要使用本文档,请点击下载按钮下载!
复合模式逻辑图
专用输入 组合输出 组合I/O
引脚2...9,1,11 引脚12,19,无反馈
引脚13...18,本引脚反馈,7个输出乘积项, 1个使能乘积项
4 / 12GAL工作模式4/12
如果您需要使用本文档,请点击下载按钮下载!
GAL16V8简单模式
在简单模式中,宏单元被配置为专用的输入或者专用的组合输出。
在这种模式中有效的结构配置与通用的10L8和12P6器件类似,只是一般的输出极性或输入选择可能变更。 简单模式中全部输出端都最多有8个控制逻辑乘积项,附加的,每一个输出端都有可编程的极性。
引脚1和11作为输入到与阵列的数据输入端总是有效的。中间的2个宏单元(引脚15和16)不能被用作输入或I/O引脚(图A,图C),而仅仅能被用作专用(图B)。
包含UES熔丝和PTD熔丝JEDEC熔丝数显示在下页的逻辑图里。
引脚号 20 10 2...9,1,11 15,16(中间) 12,13,14 Vcc 地 仅作为输入 仅作为输出(无反馈),图B 输入或I/O(下临引脚反馈),图A和图C 功能 17,18,19 输入或I/O(上临引脚反馈),图A和图C 图A,组合输出配置,引脚12,13,14,下临脚反馈,17,18,19,上临脚反馈,8个输出乘积项 5 / 12GAL工作模式5/12
图B,组合输出配置,引脚15,16,无反馈 如果您需要使用本文档,请点击下载按钮下载!
简单模式逻辑图
专用输入 组合输出 组合I/O
引脚2...9,1,11 引脚15,16,无反馈
引脚12,13,14,上临引脚反馈,17,18,19,下临引脚反馈
6 / 12GAL工作模式6/12
如果您需要使用本文档,请点击下载按钮下载!
编译软件对OLMC(Output Logic Macrocell)的支持
软件编译器以不同的器件类型支持全部3种不同的OLMC模式。3种器件类型包含在下面的表中。大多数编译器都有能力自动选择器件类型,通常是基于寄存器用法和输出使能(OE)用法。器件的寄存器用法强迫软件选择寄存器模式。带有乘积项控制的OE的所有组合输出,将强迫软件选择复杂模式。仅仅当所有的输出都是专用组合而没有OE控制时,软件选择简单模式。
表中的不同器件类型能够被使用而代替软件的自动器件选择。详情请参阅编译软件手册。 当使用软件配置器件时,用户必须特别关注下列每一种模式中限制条件:
在寄存器型模式中,引脚1和11总是分别地配置为时钟输入和输出使能,不能被配置为专用输入。
在复合模式中,引脚1和11变为专用输入并分别地使用引脚19和12的反馈。由于有这个反馈路径,引脚19和12不能选择反馈。
在简单模式中,输出引脚的全部反馈路径通过邻近的引脚连接。因此,最中间的两个引脚(引脚15和16)不能选择反馈而被配置为专用组合输出。
CUPL TANGO-PLD 简单模式 G16V8AS G16V8AS3 复合模式 G16V8MA G16V8C 寄存器模式 G16V8MS G16V8R 自动模式选择 G16V8 G16V8 GAL16V8和GAL20V8引脚分布图
GAL16V8引脚功能表
引脚 1 2...9 10 20 19 18 17 16 15 14 13 12 11 输出使能 引脚(12),组合输出,不可反馈 引脚(12...19), 组合I/O,本引脚反馈 引脚(13...18), 组合I/O,本引脚反馈 时钟 寄存器模式 复合模式 简单模式 专用输入 地 电源 专用输入 地 电源 引脚(19),组合输出,不可反馈 专用输入 地 电源 引脚(17...19), 组合I/O,上临引脚反馈, 或专用输入 引脚(15,16),组合输出,无反馈 引脚(12...14), 组合I/O,下临引脚反馈, 或专用输入 专用输入 7 / 12GAL工作模式7/12
专用输入 如果您需要使用本文档,请点击下载按钮下载!
开发软件应用提示
8 / 12GAL工作模式8/12
如果您需要使用本文档,请点击下载按钮下载!
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(10.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.ddb。PLD.ddb中包含2个库文件:PLD Devices.lib和PLD symbols.lib。其中,PLD symbols.lib是逻辑符号库,用于PLD图形程序,PLD Devices.lib是PLD器件的引脚图库,用于电路原理图。
PLD图形程序设计步骤如下:
⑴ 进入Protel99 SE 创建一个名为xxx.sch的PLD图形设计文件。
⑵ 布放元件 在空白的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:”域的内容是输出输入的逻辑关系式,格式类似真值表,输入变量值用0,1,X,C表示,输出变量值用H,L,Z表示,“order:”域则指明“vectors:”域中变量的顺序,变量名必须与pld文件中使用的变量名一致。
仿真并不必须,可以不进行。此外,在proteus中也可以对pld器件进行仿真,只要加载jed文件即可。
8 / 12GAL工作模式8/12
如果您需要使用本文档,请点击下载按钮下载!
图形编程举例
一. 任务 利用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 */ 这一部分全部为注释,全部省略 /*************************************************************************************/ /*************************************************************************************/ /* 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) */9 / 12GAL工作模式9/12
如果您需要使用本文档,请点击下载按钮下载!
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 ;10 / 12GAL工作模式10/12
如果您需要使用本文档,请点击下载按钮下载!
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
(注:可编辑下载,若有不当之处,请指正,谢谢!)
11 / 12GAL工作模式11/12
因篇幅问题不能全部显示,请点此查看更多更全内容