1

Тема: Копаю PAL/FPGA. В целом, не только для Агата

Привет!

Понемногу начал изучать матрицы, с основ. Взял пакет
OPALjr by National Semiconductor, смотрю демки, ковыряю. В качестве подопытных жезелок - GAL16V8.
Но проблема: нигде не могу найти доков на OPAL. Демки есть, из них многое понятно, но хотелось бы формальное описание языка, который там применяется.
Кроме того, на одном форуме
http://www.edaboard.com/thread37134.html
пишут, что вроде как OPALjr - урезанная версия. Полная называется просто OPAL.

Кто что может сказать про этот пакет ? Или имеет более полный его архив.

2 Отредактировано LeoN (22-08-2017 07:01)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Владимир, зачем опал?
Ну вот же совет...

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

3

Re: Копаю PAL/FPGA. В целом, не только для Агата

Опал потому, что хочу начать с досовских прог. Там, как правило, меньше фич и, следовательно, освоить её от начала до конца проще. Да и рассчитана она на явно меньший спектр микрух, чем lever.
Lever почти гиг в архиве, а opal - несколько мег.
http://www.latticesemi.com/ispleverclassic
Чтобы скачать lever надо регаться, а opal у меня уже есть.

4 Отредактировано LeoN (22-08-2017 20:57)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Да, качать гиг. Регаться не только для дистрибутива, но и чтобы файл лицензии получить (бесплатно).
ИМХО, для простых схем и для таких простых устройств как GAL лучше всего подходит схемный ввод и никаких фич и не требуется, тем более в галках никаких фич и нет, и тем более в компиляторе для них. Фичи пойдут в синхронных проектах и девайсах, заточенных на синхронизм.

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

5

Re: Копаю PAL/FPGA. В целом, не только для Агата

OPAL интересен вроде как только для PALок.
Если найдёте полный OPAL - поделитесь пожалуйста.
По опалу есть совсем кратенкое описание (немецкое, но на английском).
Я искал некоторое время OPAL и PALASM, попадаются какие-то обрезки дистрибутивов. Но по PALASM документация вполне искабельна.
Меня волновали больше PALки и варианты их замены на GALки или что-то более продвинутое. Оказалось что всё не так просто, иногда PAL на GAL поменять не удается. Условный пример: в схеме три одинаковых PALки. Одна на GAL меняется на ура, а при замене второй - не стартует, при замене третьей схема стартует, но в некоторых режимах не работает. Но схема дюже "навороченная", в том числе генератор на части PALки собран.

6

Re: Копаю PAL/FPGA. В целом, не только для Агата

Я не знаю - полный он или нет. Кой что собралось и на тему opal и на palasm. Но я пока Грушвицкого читаю, ... может зря - он очень теоретически всё пишет - вроде бы и всё правильно, но в слишком академическом порядке. Сперва обяснение того, что такое матрицы вообще, потом несколько глав насчёт циклов разработки на них, потом основы VHDL и только потом - некоторые примеры кода. По мне логичнее было бы сперва простой пример, потом сложнее, потом объяснение языка и уже в конце про методику разработки устройств в крупном коллективе сотрудников (т.е. когда разрабатывается и тестируется одновременно и железо и конфигурации матриц и софт на встроенных в матрицы процессоров).

7

Re: Копаю PAL/FPGA. В целом, не только для Агата

Может быть, лучше сразу FPGA? На "Али" можно купить недорогие девборды, на которых стоят достаточно жирные плисины. И сразу будет хороший инструмент для изучения.
Я, например, в качестве "пушечного мяса" купил такую штуку: https://ru.aliexpress.com/item/Best-pri … 0.0.oUfbJ2
На борту Циклон 4 на 6000LEs. Можно купить аналогичную с циклоном на 10000LEs, рублей на 200 дороже, кажется.
Можно недорого купить и программатор: https://ru.aliexpress.com/item/USB-Blas … &tpp=1
Конечно, возможно, есть причина использовать для изучения архаичные GAL и PAL, но, по моему скромному мнению, лучше сразу взять что-нибудь посовременнее, скачать Quartus и изучить Verilog или VHDL.

8 Отредактировано Voldemar0 (08-10-2017 17:55)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Архаичные, да. Но в продаже есть, программатор есть. софт есть - чем плохо?
Можно было бы попробовать MAXII, но она трехвольтовая.

Сейчас есть две задачи:
- Засунуть в плис автомат кодирования/декодирования 840ки. Пока задача абстрактная, но запрягать под это циклон - жирновато. Тем более действительно нужна либо плата заказная либо девбоард. В то время как под DIP я сам нарисую и разведу и сделаю.

- Есть интерес сделать для агата очень быстрый SPI-конвертор. Т.е. чтобы за одну команду LDA/STA можно было заслать любое слово во внешнюю периферию, например, в mp3-кодек vlsi или что нибудь ещё такое.
На GAL я это вижу как один GAL-корпус + буферный регистр, на 580-й серии или чем-то близком.

А девбоард у меня есть уже, даже пара штук.

Я не хочу быстрого старта, я хочу прочувствовать всё развитие от начала до конца.
Например, когда я изучал AVR, то делал всё сам, включая программатор, причём на все режимы: High Voltage, SPI и parallel. Мне нравится процесс, а не только результат.

9

Re: Копаю PAL/FPGA. В целом, не только для Агата

Voldemar0 пишет:

Можно было бы попробовать MAXII, но она трехвольтовая.

Дык, попробуй EPM7032SLC44-x, EPM7064SLC44-x - они 5 Вольтовые в PLCC44-корпусе, 32 user-пина. Исчо EPM7128SLC84-x - в PLCC84-корпусе, 68 user-пинов.

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

10 Отредактировано Wierzbowsky (09-10-2017 11:45)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Имею крайне негативный опыт с 7064 Альтерой в PLCC44 корпусе. Купил 2 партии по 10 штук. Из 20 чипов рабочими оказались только два. Один был частично рабочий. Продавец предоставил Алиэкспрессу фальшивый сертификат, так что они встали на его сторону в диспуте. В итоге я потерял треть суммы на возврате чипов мудаку продавцу, который ещё и хамил.

11

Re: Копаю PAL/FPGA. В целом, не только для Агата

Wierzbowsky пишет:

Купил 2 партии по 10 штук. Из 20 чипов рабочими оказались только два.

Очень часто, если микрухи стоят относительно недорого, микросхемы могут попасться залоченными (заблокирован JTAG)
Причем сама микруха моет быть и рабочей, но надо для начала ее разлочить. А чтобы разлочить нужен специальный программатор.

12 Отредактировано Wierzbowsky (09-10-2017 21:56)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Чипы были в заводской упаковке, вряд ли часть чипов в ленте были специально залоченные. Хотя я слышал, что китайцы и заводскую упаковку научились подделывать...

13 Отредактировано LeoN (10-10-2017 13:51)

Re: Копаю PAL/FPGA. В целом, не только для Агата

http://we.easyelectronics.ru/plis/vvodn … rilog.html
http://we.easyelectronics.ru/plis/osvoe … rilog.html
http://we.easyelectronics.ru/plis/plis- … chego.html

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

14 Отредактировано Voldemar0 (03-12-2017 19:21)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Как соотносятся OPALjr, PALAsm и MACHXL ?

Это развитие одного языка или одной IDE с компилятором языка или что-то ещё?

Я сперва думал, что PALAsm - это совершенно перпендикулярный проект к OPALjr , которая вроде как официальная (я так понял из форумов, но примеры там от National Semiconductor - они каким боком сюда относятся?). Но в инете лежит хитрый документ с именем файла "PALASM4 manual.pdf" который начинается с (R) - AMD и буквально в первых же абзацев написано, что PALAsm и MACHXL - продукты AMD и что их можно ставить одновременно на одну машину (т.е. это разные проги, а не развитие одной в другую). Выходит, что официальные - все три пакета ?

Даты файлов во всех пакетах примерно совпадают (смотрю файлы примеров): 90-91 (palasm), 92-93 (machxl, opaljr) годы.

К сожалению, даже в доке к MACHXL (самая крупная из найденных - 500 страниц) нет какого нибудь "Введения" или "Abstract" - что, собственно, делает пакет ?

15

Re: Копаю PAL/FPGA. В целом, не только для Агата

http://zx-pk.ru/threads/4915-pal-gal-i- … post939775

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

16 Отредактировано Voldemar0 (11-12-2017 21:22)

Re: Копаю PAL/FPGA. В целом, не только для Агата

В общем, сам себе отвечаю, как понял ситуацию. Далее глубокое IMHO (из доков на продукты и английской Wiki):

Первую палку (PAL) предложила никому ныне не известная фирма Monolithic Memories (MMI). Ещё в 1976 она мутила че-то с General Electric, получилась ерунда, но уже в 1978 появилась первая матрица типа PAL.

Устройство получилось занятным, для него сразу придумали язык PAL ASM (очевидно - "PAL ассемблер"). Но писать на нём немного скучно и, к тому же, он очень похож именно на ассемблер, а не на макроассемлер (если вы понимаете, в чём разница).

Вкусный кристал заметило сразу несколько фирм, включая National Semiconductor, Texas Instruments и AMD и сразу выстроились в очередь за лицензиями на выпуск точно такого же устройства своими силами.

А уже в 1987 году MMI была куплена AMD за вагон денег и из MMI организовалось подразделение Vantis.

Тут, вероятно, и возникли сразу и PALASM4 (1991 год, версия 1.5, AMD) и OPALjr (1993 год, версия 2.0, автор - National Semiconductor). (Т.е. наверное, ещё до того, были версии и 1.0... но кто их видел? И когда ? Наверное, как раз где-то в районе 1983-1985...)

Зачем у всех свои проги ? Видимо, чтобы лично свою копию кристалла веселее продавать.

Тут нужно что сказать: обе проги вполне себе компиляют EQN (исходник на PAL-asm), но, помимо этого, имеют и поддержку языков более высокого уровня - что-то вроде ABEL/VHDL. Ну то есть паскалеподобное. И EQN (от "EQUATIONS" - главный раздел в PAL-asm исходнике) у них используется в качестве промежуточного формата, примерно как и в обычных языках программирования. К сожалению, нигде не удалось найти или заметить названия высокоуровневых языков, используемых в этих продуктах.

Формат PAL-asm исходника, судя по всему, не очень конкретный - между разными средами он слегка отличается. Но, в общем и целом, изучив одну его вариацию, вполне можно понять другую. Состоит из четырёх секций:

CHIP - это просто указание для какого кристалла компилим.

PIN - это алиасы для лапок микрухи (не обязательный раздел, но без него вообще машкод получится).

EQUATION - чему равен каждый выход в зависимости от входов.
Входы могут быть виртуальными (т.е. только внутри микрухи, не лапки), выходы могут иметь дополнительно сигнал Enable (задаётся точно также как и значения выходов) - это переключение между Z-состоянием и рабочим.
Если выходы имеют защёлку - то выражение записывается как ВЫХОД := ЗНАЧЕНИЕ, если не имеет : ВЫХОД = ЗНАЧЕНИЕ.

В зависимости от реализации PALASM-компилятора сами выражения могут содержать знаки трёх операций: как & | ! так и * + /. Ну и правильно - зачем больше -то? И так одна лишняя. Про стрелку Пирса никто и не вспомнил.

TEST - последняя секция, позволяет дополнительно описывать режимы пинов для самоконтроля "программы" компилятором.


Наконец, MACHXL - это развитие PALASM4 от AMD. Как сейчас говорят - ребрендинг продукта.
Суть, вероятно, в том, что AMD ушла от PAL архитектуры и плавно перешла на MACH. Ну и надо было как-то это подчеркнуть.

Мне не удалось найти список микрух, поддерживаемых OPALjr, но в PALASM4 упоминаются как самые старшие MACH 110 и 210. В то время как MACHXL уже поддерживала MACH 465 (между прочим - "208 device pins". Это уже далеко не GAL16v8). И ещё с пару десятков разных MACH*.

Тут вот любопытная табличка старых микрух от AMD-Lattice.
http://www.latticesemi.com/en/Support/M … vices.aspx

А, кстати, где тут присоседилась Lattice ? Вероятно, они тоже к 1985 имели лицензию от MMI, однако сообразили сделать не совсем то же самое, но с многократным программированием и совместимое сразу с рядом чужих разработок. Был ли софт (компиляторы) тех лет (1985-1990) от Lattice ? Не обнаружен.

Любопытно, что в инете все носятся с разного рода версиями GalBlaster (проги для программирования именно GAL-ок), но это - "hobbyist grade programmer". Почему именно он и почему нигде не упоминается официальный программатор от Lattice? Непонятно.

Вероятно, у Lattice это был "Lattice ISP Lever", проблема только в том, что его история не прослеживается раньше версии 1.7, а это уже 2013 год. Причем слово ISP у них возникает рядом с MACH в историческом списке микрух, так что, вполне возможно, что ISP - это очередной ребрендинг MACHXL.

(В 1999 году Lattice прикупила AMD'шное подразделение Vantis и началась уже новейшая история, которую и так все знают.)

17

Re: Копаю PAL/FPGA. В целом, не только для Агата

http://zx-pk.ru/threads/4915-pal-gal-i- … post941044

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

18

Re: Копаю PAL/FPGA. В целом, не только для Агата

Сделал первую свою конфигурацию на GAL: CD-триггер. Работает :)))

  Q0 =  D & !C | !Q1;
  Q1 = !D & !C | !Q0;

  Q0.OE = EN;
  Q1.OE = EN;

Ну не крут ли я ?! :)

19

Re: Копаю PAL/FPGA. В целом, не только для Агата

Крут, однозначно!

20

Re: Копаю PAL/FPGA. В целом, не только для Агата

Йоу, бро! ;)

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

21 Отредактировано Voldemar0 (03-01-2018 19:54)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Галка неплохо вписывается на шину Агата.
В паре с als323 образуют допозу объёмом в 1 байт. С возможностью сдвига бит :)

Post's attachments

DSC07959.jpg, 43.05 kb, 490 x 307
DSC07959.jpg 43.05 kb, 34 downloads since 2018-01-03 

22 Отредактировано Voldemar0 (05-01-2018 16:42)

Re: Копаю PAL/FPGA. В целом, не только для Агата

Следующая задачка: пилю быстрый SPI-приёмо-передатчик.

Минимального размера устройство, втыкается в агатовскую шину и позволяет выполнить обмен по SPI-шине на частоте 14 МГц. Т.е. обмен 8 битами должен выполниться за время между соседними командами STA/LDA ЦП Агата.

GAL16v8 + als323 + что-нибудь вроде ТЛ2 для задержки сигналов !RegSel и тактового импульса als323.

Набросал такой код:

// Слева - шина агата (rX - reserv), справа - управление als323 (R_S0, R_CLK, R_OE)
pin  1 CLK;     pin 20 VCC;
pin  2 F14;     pin 19 NEWDATA;
pin  3 F02;     pin 18 SH_MODE;
pin  4 r0;      pin 17 R_S0;
pin  5 Adr0;    pin 16 R_CLK;
pin  6 r1;      pin 15 !R_OE;
pin  7 r2;      pin 14 Q2;
pin  8 !RegSel; pin 13 Q1;
pin  9 R_nW;    pin 12 Q0;
pin 10 GND;     pin 11 !OE;

// Запрос значения из приёмника возможен в любой момент по любому адресу
R_OE    = RegSel & R_nW;

// !SS (SPI Select) сбрасывается в начале любой передачи по чётному адресу
// и устанавливается при обращении по нечётному адресу
//          нет обращения      чётный
//SS    := !SS & !RegSel | RegSel & !Adr0;      Реализован на внешнем CD-триггере :((

// Запись в регистр возможна по любому адресу, но следует использовать чётный адрес, чтобы устанавливалась SS
R_S0    = RegSel & !R_nW;

// Щёлкаем регистр в случае записи либо в режиме сдвига загоняем туда 14 МГц тактовой
// (Читаем SH_MODE из регистра, поэтому инверсия)
R_CLK   = RegSel & !R_nW & !F02 | !SH_MODE & F14;

// "Запись завершена". Устанавливается во время записи в регистр и сбрасывается при !RegSel
// Сброс регистра (условие !RegSel & NEWDATA) запускает SPI-передатчик
NEWDATA := !NEWDATA & RegSel | RegSel & !R_nW & !F02;

// SH_MODE (SHift Mode) устанавливается при записи в регистр (через некоторую паузу после RegSel = 0)
// и сбрасывается после отсчёта 8 импульсов F14/R_CLK (счёт от 0 до 7)
// (Читаем все данные регистра, поэтому инверсия)
SH_MODE := !SH_MODE & Q0 | !SH_MODE & Q1 | !SH_MODE & Q2 | !RegSel & !NEWDATA;

// Счётчик от 0 до 7, работает при SH_MODE=1, при SH_MODE=0 остановлен
Q0      := !SH_MODE & Q0;
Q1      := !SH_MODE & Q1 & /Q0 | !SH_MODE & /Q1 & Q0;
Q2      := !SH_MODE & Q2 & /Q0 & /Q1 | !SH_MODE & /Q2 & Q0 | !SH_MODE & /Q2 & Q1;


R_CLK.oe= 1;
R_OE.oe = 1;
R_S0.oe = 1;

Не хватило одного триггера для сигнала "SPI Select" , но он легко укладывается в ТМ2.
Однако, может быть что нибудь ещё можно оптимизировать ?

23

Re: Копаю PAL/FPGA. В целом, не только для Агата

Владимир, покажи, плиз, в виде схемы.
GAL22V10 также легко доступны.

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.

24

Re: Копаю PAL/FPGA. В целом, не только для Агата

-

Post's attachments

DSC_0059.png, 53.5 kb, 573 x 321
DSC_0059.png 53.5 kb, 32 downloads since 2018-01-06 

25

Re: Копаю PAL/FPGA. В целом, не только для Агата

Ага, спасибо, вот, немножко проясняется...
И еще уравнения галки в виде схемы покажи, плиз, а то лично у меня путаница "образовалась"...

Турбо АГАТ-9/16 (65C802 CPU, 2.8 Маха), MSX2 Yamaha YIS503IIIR.