А вот и прошивка для первой GAL'ки, обкатанная в Протеусе:
Код:
Name orion_gal_test ;PartNo 00 ;
Date 05.05.2018 ;
Revision 01 ;
Designer andreil ;
Company ;
Assembly ;
Location ;
Device g22v10;
PIN [1,2,3,4,5,6,7,8,9,10] = [x0..9];
PIN 11 = sr16;
PIN 13 = wen;
PIN 23 = xresn;
PIN 22 = ben;
PIN 21 = bh3;
PIN 20 = bh5;
PIN 19 = bh;
PIN 18 = xle;
PIN 17 = hs3;
PIN 16 = hs5;
PIN 15 = hs;
xresn = !(x9 & x8 & x4 & x3 & x2 & x1 & x0);
ben = !(x2 & x1 & x0);
bh3 = !x9 & ((!x8 & x7) # (!x7 & (x6 # x5 # x4 # x3)) # (x8 & !x6 & !x5 & !x4 & !x3));
bh5 = (!x9 & (x8 # x7 # x6 # x5 # x4 # x3)) # (x9 & !x3 & !(x8 # x7 # x6 # x5 # x4));
bh = (!sr16 & bh3) # (sr16 & bh5);
xle = ((!sr16 & !x6) # (sr16 & x6)) & (x9 & !x8 & x7 & x5 & !x4 & !x3 & x2 & x1 & x0);
hs3 = x9 & !x8 & !x7 & ((x6 & !x5) # (x5 & (!x3 # !x4)) # (!x6 & x4 & x3));
hs5 = x9 & !x8 & ((!x7 & x6 & ((x4 & x3) # x5)) # (x7 & !x6 & (!x5 # !x4 # !x3)));
hs = wen $ ((!sr16 & hs3) # (sr16 & hs5));
Формирует все необходимые инмпульсы для видео по горизонтали. Схема - под спойлером выше.
По логике - решил обойтись без триггеров, поскольку с ними надо для каждого свой клок иметь. А так - куча логики, отрабатывающей строго по таймингам (проверял по логическому анализатору).
Буду писать аналогичную для горизонтали.
PS: Для макетки купил 10 GAL'ок, буду собирать программатор 
- - - Добавлено - - -
А вот и прошивка для GAL по вертикали:
Код:
Name orion_gal_y ;PartNo 00 ;
Date 05.05.2018 ;
Revision 01 ;
Designer andreil ;
Company ;
Assembly ;
Location ;
Device g22v10;
PIN [1,2,3,4,5,6,7,8,9,10] = [y0..9];
PIN 11 = wen;
PIN 13 = bh;
PIN 23 = yresn;
PIN 22 = bl;
PIN 21 = vs;
yresn = !((!wen & y9 & y3 & y2) # (wen & y8 & y7 & y6));
bl = bh & !y8 & !y9;
vs = !((!y9 & y8 & !y7 & y6 & y4) & ((!wen & (y5 & y3 & !y2 & y1)) # (wen & (!y5 & !y3 & y2 & (y1 $ y0)))));
Здесь логики почти нет, но в схемном варианте требуется минимум 5 корпусов (половинка триггера берется из логики горизонтали).
Итого, на весь синхрогенератор получили 8 корпусов - 6 счётчиков и 2 GAL.