Those who are fond of retro-computing in the field of self-assembly of computers based on 8-bit processors (i8080 / i8085 / z80 / z180 / 6502/6809, etc.) or microcontrollers, usually face the need to display during debugging and / or "operation "any information (contents of address buses, data, etc.) on 7-segment displays in hexadecimal representation.
In principle, the task of displaying hexadecimal digits is easily solved by the necessary number of "smart" TIL311 indicators . Developed by Texas Instruments long before the dinosaurs died out, these well-known indicators are still in production and can be found on Aliexpress .
Despite the ease of use, these indicators also have significant drawbacks, namely:
Relative high cost - even on Aliexpress, these indicators are not cheap at all (compared to conventional 7-segment indicators) and you won't buy them for future use on the "maybe they'll come in handy" principle;
Lack of walking distance - they must be specially ordered and waited for, i.e. not at all the case when you need to mock up something for a quick hand;
β , .
, , 7- LED- . , , (. GAL16V8) β , ( ) , , .
1 GAL16V8 1- 16- , 16- GAL16V8 ( ).
1: ?
, , a 3 (, ) 4 ( 'βββ', 'βββ', 'βββ' - 'ββββ').
:
a-g β F(A,B,C,D),
* β '' ( , ),
+ β '' ( , ),
\ β '' ( )
GAL16V8 7- . 7- GAL16V8 . ?
Β« GAL16V8?Β» , 2- , , . , .
?
β ?
. 'e'.
, 10 16- β 0 2 6 8 A B C D E F.
, 0000 0010 0110 1000 1010 1011 1100 1101 1110 1111.
e(A, B, C, D) = \A*\B*\C*\D + \A*\B*C*\D + \A*B*C*\D + A*\B*\C*\D +
A*\B*C*\D + A*\B*C*D + A*B*\C*\D + A*B*\C*D + A*B*C*\D + A*B*C*D
(.. , ) . . (). , 10, 4 :
e(A, B, C, D) = \B*\D + C*\D + A*B + A*C*D
GAL4V1 ( , GAL-, , β ):
GAL4V1 :
, 'X' '\X';
, ( 5 ) , '';
, '';
, ' ' (eXclusive OR - XOR) .
, , . , - e (A, B, C, D) (. ).
, , GAL4V1? (4), (1) (5), β , , 4- 5-.
e(A, B, C, D) , «» , 'a' (7 ).
, ...
))
GAL-
GAL- GAL4V1? β , GAL- / :
, .. , ( 8 GAL16V8 GAL20V8, 10 GAL18V10 GAL22V10, 12 GAL26V12 GAL26CV12);
(7-8 GAL16V8 GAL20V8, 8-10 GAL18V10, 8-16 GAL22V10 GAL26v12, 8-12 GAL26CV12);
, .. , ( 16 GAL16V8, 18 GAL18V10, 20 GAL20V8, 22 GAL22V10 26 GAL26V12 GAL26V12);
( ) « », «-» «» ( );
.
GAL 1- (D-), / (GAL16V8 GAL20V8) - (GAL18V10, GAL22V10 GAL26V12/GAL26CV12).
GAL- , , .
1- , GAL- " " (OLMC β Output Logic MacroCell).
GAL4V1
Y A (.. ). 1 :
Y(A) = A
Y A , B :
Y(A, B) = A * \B
2- , 1 .
β Y A , B , C :
Y(A, B, C) = A * B * \C
, , .
: C , Y A, C , Y B:
Y(A, B, C) = A * \C + B * C
. 3- , , 2- 2 () , 1- . ? , β Β« Β».
?
(/) 7- . 7+7=14 ( , , 16).
, GAL, .
, 2- 7- , , β (.. ) .
GAL16V8?
GAL16V8 , (.. , 1- ) 3- , .. Registered, Complex Simple. , .
Simple ( 8) GAL4V1, 8 β 10. .
Complex Simple, Output Enable (\OE), . 7 . β 10.
Registered ( ) XOR- 1- (D-), CLK, 1 . \OE, 11 . β 8. , Complex 7 . β 8.
?
GAL16V8 , .. 4 ( 'e') 7 ( 'a') .
, .. 7- GAL16V8, , 7 ( 'a'), 2- 2 .
, , , 7- , 7- GAL16V8.
7- GAL16V8.
2: - !
(.. ) , .. Simple Registered, 8 .
, , GAL16V8 16- 4- . ?
, 1- , .. , .
, ? , - , , ( ) , .
, , «» , «» , .
. «» , ('\' '/'). , «» :
, 7- \a(A,B,C,D), \b(A,B,C,D), ..., \g(A,B,C,D) 4-, !
, , GAL4V1, ;)
.
GAL16V8D
β 2 DIP- :
β 555 ( ). β PNP 100 . β 7- .
. , , «» , «».
XOR- GAL16V8 LED- , GAL16V8D , :
GAL16VP8 - ( 64 ), . ( ).
2- LED- ( 200- 4- , ):
GAL16V8 WinCUPL, :
( , WinCUPL ), ...
, EN_L , . , -.
β , (.. , ), , 2-, ( ) EN_i , EN_j, :
, / , EN_L EN_H GAL16V8, Β«EN_L = ! EN_HΒ» :
EN_L, , ( ) ( LED1/LED2 ).
GAL16V8D JED- ( ) MiniPro TL866A.
β , , β GAL16V8 7- :
In the process of creating this article, I came across a good publication on HabrΓ© - PAL, GAL and a journey into digital retro / Habr (habr.com) and thought that my case might be of interest to those who want to understand how it actually works and who does not believe that the rolls grow in the store, the water comes from the tap, and the electricity from the outlet.