1
\$\begingroup\$

I would like to use GAL chips for a project. 16V8, 22V10, 26V12.

I have read that the tri-state status of a pin maybe controlled individually.

I do not understand how write the equations to individually control the Hi-Z per pin feature, or tell the compiler that is what I have in mind.

  • This is where I am asking for help & direction. Many tutorials discuss it can be done, but I haven't found one that illustrates direct control of Hi-Z per pin..

Directly:

How can I use pins (as shown) as an input, to control separately the Hi-Z status of any two or more output pins.


I am using OPAL-Jr for all I've needed before.

data sheet:

http://www.latticesemi.com/Search.aspx?&lcid=9&q=gal16v8&t=480

This is what I am looking to learn, but cannot find as clear as this.

"Each output normally uses a single product term to enable it, so program it like any other signal. – Finbarr"

That is what I don't know.
How to write equations that address individual OE's, not just as a group OE.

\$\endgroup\$
4
  • 2
    \$\begingroup\$ Each output normally uses a single product term to enable it, so program it like any other signal. \$\endgroup\$
    – Finbarr
    Commented May 12, 2021 at 19:14
  • 1
    \$\begingroup\$ The real question would be… they do still make GALs? even CPLDs these days are simply low density FPGAs in disguise. Usually you write a separate equation for the OE term of each output to use the tristate features. \$\endgroup\$ Commented May 13, 2021 at 6:29
  • 1
    \$\begingroup\$ @LorenzoMarcantonio Yep, Microchip is still producing GALs. \$\endgroup\$
    – Vlad
    Commented May 13, 2021 at 14:01
  • \$\begingroup\$ Magic_Smoke - Hi, Thanks for being polite and saying thank you, but on this site, that shouldn't be posted as an answer in the box labeled "Your Answer" which you used. Instead, please read this & this, consider "upvoting" all helpful answers (although as a new user, your votes may not be visible) and consider "accepting" the most useful of the given answers. Thanks. \$\endgroup\$
    – SamGibson
    Commented Jun 14, 2021 at 20:32

2 Answers 2

0
\$\begingroup\$
GAL16V8                ; this is the second example
Exa.2

A  B  C  D  E  F  G  NC NC GND
NC NC NC NC NC NC Y3 Y2 Y1 VCC
...

Y3.T = /G
Y3.E = E * F    

DESCRIPTION

 tristate output:  pinname.T
 tristate control: pinname.E

-- https://github.com/daveho/GALasm/blob/master/examples/Tristate.pld

from the documentation for GALasm, which seems to be a popular ( a b c ) equation-to-GAL-fusemap assembler.

OPAL-Jr may use a different syntax than GALasm (Thanks, Bruce Abbot!), but you're not going to find that syntax in the GAL datasheets, but in the OPAL-Jr documentation.

\$\endgroup\$
1
\$\begingroup\$

I am using OPAL-Jr

In Opaljr an output pin's tristate or 'OE' (Output Enable) function is specified by appending .oe to the output name. So in your example the equation would be eg.

l8.oe = l12

Most GALs have three different global modes - Simple, Complex, and Registered. In Simple mode outputs are permanently enabled or disabled, so .oe cannot be used. However if you apply .oe to a combinatorial output the compiler should automatically choose an appropriate mode (complex or registered) that supports it. In the GAL16V8 pin 11 is a shared OE which is permanently assigned to all registered outputs, so you cannot control them individually.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.