WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
FizikS
Maniac
Posts: 328
Joined: 11 Oct 2018 00:52
Location: г. Клинцы, Брянская обл.

WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by FizikS »

Спустя несколько десятков лет компания Microchip выпустило обновление среды разработки для микросхем программируемой логики малой степени интеграции таких как GAL16V8, GAL22V10 и других.

Версия программы 1.1.0 от 28 февраля 2026 года.

Никаких ключей, серийников для работы не требуется. Т.е. программа бесплатна.
Легко установилась на Windows 10 и отечественную ОС RedOS.
Интерфейс программы более удобен, чем в старой версии 5.34
Все примеры в программе обновлены. Кириллицу в текстовом редакторе применять нельзя - компилятор ругается.
Программа после установки предлагает (на английском) неплохую справку по языку CUPL, так, что при наличии предложенных примеров и мануалов, можно научиться писать прошивки для указанных микросхем. Симуляцию вживую можно сделать в Proteus Pro.

Загрузить программу можно с официального сайта: https://www.microchip.com/en-us/develop ... ol/wincupl

Для жителей России сайт скорее всего недоступен, поэтому предлагаю ссылку на зеркало с инсталлятором и некоторыми мануалами: https://disk.yandex.ru/d/HMEGsohO0pEqTw
WinCUPL_II-1.PNG
WinCUPL_II-2.PNG
You do not have the required permissions to view the files attached to this post.
User avatar
FizikS
Maniac
Posts: 328
Joined: 11 Oct 2018 00:52
Location: г. Клинцы, Брянская обл.

Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by FizikS »

Обнаружился первый серьезный недостаток программы.
Проявляется в следующем. Переносишь каталог с проектом в другое место, и при попытке открыть его появляется сообщение об ошибке:
Cupl_er1.PNG
Причина в том, что в файле проекта пути к файлам, включенным в проект, пишутся в полном виде, а не относительно точки размещения проекта:
Cupl_er2.PNG
Лечить можно так:

Создаем новый проект. В окне выбора микросхемы выбираем виртуальное устройство:
Cupl_er3.PNG
После нажатия кнопки Create Project программа просит сохранить файл проекта. В качестве имени указываем имя существующего проекта (в каталоге проекта). Сохраняем проект. Соглашаемся на перезапись.
Программа предупреждает, что в каталоге имеются файлы и они будут добавлены в этот проект.

Жмем Ок и попадаем в рабочую среду.
Проверяем возможность редактирования файла прошивки. Должно работать нормально.
You do not have the required permissions to view the files attached to this post.
User avatar
FizikS
Maniac
Posts: 328
Joined: 11 Oct 2018 00:52
Location: г. Клинцы, Брянская обл.

Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by FizikS »

Небольшая инструкция по созданию функционального аналога К155ИР13 на CPLD GAL22V10 или ее аналогах.

Целью создания замены указанной выше микросхемы является ее применение в доработке видеоформирователя стандартного любительскуого компьютера Орион для вывода картинки на телевизор и VGA монитор 1024*768 точек. Режим вывода на изображения на монитор 1024*768 точек потребует пиксельклока более 30 МГц. Микросхема К155ИР13 не выдержит такого надругательства над собой. Более скоростная микросхема КР1533ИР13 в природе существует, но она по отзывам не дает стабильную картинку на экране. Есть схема замены микросхемы 155ИР13 на 2 микросхемы КР1533ИР11. Разработан также и адаптер по этой схеме, состоящий из 2-х этих микросхем на небольшой платке, который впаивается вместо 155ИР13. Смотрится не очень... Поэтому было решено сделать аналог на GAL22V10.

Идея такова: берем схему внутреннего строения микросхемы К155ИР13 или ее аналога, описываем ее на языке CUPL и компилируем в прошивку для GAL22V10. Поиск схемы внутреннего строения 155ИР13 не дал результатов, даташит на аналог т.е. SN74198N имеется, но схема неудобная для описания (переделывать было лень). Взяв за основу схему замены ИР13 на две ИР11 я склеил 2 схемы аналогов ИР11 (т.е. SN74ALS194) в одну и приступил к работе.
155IR13_logic_diagram1.png
Из схемы видно, что триггер и логика, подключенная ко входу D, повторяет строение макроячейки GAL22V10. Инверторы, соящие на входах S0, S1 являются дешифратором на 4 выхода. Номера выходов этого дешифратора я вписал с логические элементы AND для упрощения построения формул. Каждый выход дешифратора включает один их возможных режимов работы микросхемы:

S0 = 0, S1 = 0 : 0 - хранение
S0 = 0, S1 = 1 : 1 - сдвиг вправо
S0 = 1, S1 = 0 : 2 - сдвиг влево
S0 = 1, S1 = 1 : 3 - параллельная загрузка

Для удобства присвоим каждому режиму имя (это будут переменные, которые мы применим при написании прошивки):
MSAVE, MSR, MSL, MLOAD соответственно.

Для создания адаптера прикинул назначение сигналов микросхемы 155ИР13 для GAL22V10. Делал это из соображения удобства трассировки переходника. Это делать вообще необязательно, ибо можно взять труп микросхемы с 24 выводами, высверлить в ней кристалл и припаять панельку для GAL22V10 проводками. Но переходник будет немного эстетичнее.
Соответствие сигналов:
155IR13-GAL22V10.PNG
Теперь все готово для создания прошивки.

Продолжение следует...
You do not have the required permissions to view the files attached to this post.
backa
Fanat
Posts: 65
Joined: 21 Mar 2017 16:39

Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by backa »

FizikS wrote: 08 Apr 2026 01:18 Поиск схемы внутреннего строения 155ИР13 не дал результатов
Был такой справочник по 155 серии - там БЫЛИ ВСЕ МИКРОСХЕМЫ в "разрисованном" до простой логики и тригеров и с таблицами.
Даже помню цвет - коричневая))) За "речкой" лежит на полке.
Я покупал в 90-е в книжном.
K1533IR13.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
FizikS
Maniac
Posts: 328
Joined: 11 Oct 2018 00:52
Location: г. Клинцы, Брянская обл.

Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by FizikS »

Эти схемы аналогичны приведенным в даташитах на 74198. Работать с ними неудобно. Требуется перерисовка. Мне было проще сделать так, как описано. Результат аналогичный.
Alekcandr
Devil
Posts: 740
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by Alekcandr »

Ну да. Как правило эти схемы вот так просто не получится скопировать из справочника. GAL не печатная плата на которой можно собрать, что захочется. Придется адаптировать схему под типовую макроячейку GAL.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Alekcandr
Devil
Posts: 740
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by Alekcandr »

FizikS wrote: 04 Apr 2026 05:00 Обнаружился первый серьезный недостаток программы.
Ну это мелочи. Предыдущая версия начисто сносила все переменные среды в Windows :mrgreen: Вот это было весело.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
User avatar
FizikS
Maniac
Posts: 328
Joined: 11 Oct 2018 00:52
Location: г. Клинцы, Брянская обл.

Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики

Post by FizikS »

Рассмотрим кратко язык описания логических схем CUPL.
Предложенных сведений, думаю, будет достаточно, чтобы реализовать некоторые схемы на CPLD 16V8, 22V10 и других.

CUPL - Compiler Universal for Programmable Logic, инструмент разработки CPLD от компании Logical Devices. Является одним из самых простых языков описания логических схем. Это означает, что разрабатываемое цифровое устройство мы не изображаем в виде графической схемы, а описываем в виде логических формул или соглашений. В этом языке можно описывать триггеры и некоторые аппаратные особенности используемой CPLD. Также имеются конечные автоматы, таблицы истинности. В среде разработки присутствует симулятор, позволяющий проверить правильность синтеза схемы. Преимуществом языка CUPL является его простота и понятность.

Программу на языке CUPL можно разбить на три блока:
1. Описание программы (заголовочная часть), в котором есть один важный пункт - тип используемой ПЛИС.
2. Описание выводов.
3. Описание внутренней логики.

Описание программы, сгенерированной программой WinCUPL II по умолчанию, выглядит вот так:

Code: Select all

Name       GAL_DD5.pld;
Partno     ;
Date       ;
Revision   ;
Designer   ;
Company    ;
Assembly   ;
Location   ;
Device     P22V10;
Поля можно заполнить любой информацией. Анализируется только поле Device, в которое нужно вписать "реальное" название ИС. Этим обычно занимается среда разработки при выборе микросхемы, под которую пишем программу. Поле Name хранит имя проекта.

Описание выводов состоит из набора строк:

PIN номер = [!] имя;

Где номер - это просто номер вывода микросхемы, имя - это его идентификатор

Перед именем вывода можно поставить символ "!", который обозначает инверсию (Логическое «НЕ»).

Входы и выходы не различаются (по написанию). Компилятор решает сам, какая ножка вход, а какая выход, по тому, как она используется в программе. В микросхеме физически есть выводы, которые могут быть только входами или выходами, а есть те, что могут быть входами или выходами. Для лучшего понимания структуры программы можно в комментариях пометить группы выводов, которые являются входами, а какие - выходами.

Для описания схемы нужны идентификаторы (имена переменных), которые записываются по определённым правилам.

Требования к идентификаторам:
Переменные это строки длиной до 31 символа (лишние символы обрезаются), состоящие из цифр и букв, которые обозначают выводы устройства, внутренние узлы, константы, входные и выходные сигналы, промежуточные сигналы или наборы сигналов.
Переменные могут начинаться с цифры, буквы или знака подчеркивания, но должны содержать как минимум одну букву.
Переменные регистрозависимы т.е. Out, OUT, out – различаются.
Переменные не должны содержать пробелы. Для разделения слов можно применить подчеркивание в переменной: out_enable или заглавную букву outEnable.
Переменные не должны содержать зарезервированные символы (скобки, символы операций и т.п.) и не должны совпадать с зарезервированными ключевыми словами.

Каждая строка в описании заканчивается символом ";" - точка с запятой.
Комментарии помещаются между парами символов: "/*" и "*/". Кириллицу в комментариях использовать можно, но при компиляции получите сообщение об ошибке Error #1066 - неправильный символ. Т.е. будем считать, что кириллицу в комментариях использовать нельзя.

В языке CUPL допускаются индексные переменные.
Например, следующие имена переменных могут обозначать 4 младших бита шины адреса:
A0, A1, A2, A3 (Одинаковая часть имени – A и разный индекс – цифры 0, …, 3). Причем A1 и A01 - это разные переменные!
Т.е. имена переменных, которые заканчиваются цифрами, являются индексными.

Индексы это всегда десятичные числа от 0 до 31. Переменные, оканчивающиеся на числа более 31, не являются индексными.

Такие переменные удобно использовать для сокращения записи. Пример:

Code: Select all

PIN [2..9] = [D0..7];
PIN [9..2] = [D7..0];
Описание переменных:

Code: Select all

PIN 1        = clock;          /* Register Clock */ 
PIN 2        = !enable;      /* Enable I/O port */
PIN [3,4]   = ![stop, go];  /* Control signals */
PIN [5..7]  = [a0..2];         /* Address bits 0-2 */
компилятор будет "понимать" в следующем виде:

Code: Select all

PIN 1       = clock;         /* Register Clock */ 
PIN 2       = !enable;     /* Enable I/O port */
PIN 3       = !stop;         /* Control signals */
PIN 4       = !go;           /* Control signals */
PIN 5       = a0;             /* Address bits 0 */
PIN 6       = a1;             /* Address bits 1 */
PIN 7       = a2;             /* Address bits 2 */

Логические операции в языке CUPL:
a & b операция И
a # b операция ИЛИ
a $ b операция исключающее ИЛИ
!b инверсия

При написании формул допустимо разбить ее на несколько строк. Т.е. формулу:

Y = !OE & A0 & !A1;

можно записать так:

Y =
!OE & A0 & !A1;


или так:

Y =
!OE &
A0 & !A1;


Порядок операций в формулах можно изменить скобками «()».
Этой информации вполне достаточно, чтобы описывать некоторые комбинационные схемы при помощи логических формул. Есть, конечно, варианты описания схем при помощи таблиц истинности, с применением условных операторов и т.д., но это в другой раз...

Попробуем сделать аналог микросхемы 555ИД7 на языке CUPL и CPLD 16V8.

Листинг программы будет такой:

Code: Select all

Name       ID7.pld;
Partno     ;
Date       ;
Revision   ;
Designer   ;
Company    ;
Assembly   ;
Location   ;
Device     G16V8;

/* analog 555ID7 */
/* --------- input pin -------- */
pin  [2..4] = [A,B,C];     /* address line */
pin  [5..7] = [E1,E2,E3];  /* chip enable */

/*---------- output pin ------- */
pin [19..12]= ![Y0..7]; /* output */
 

/* --------- program ------*/
Chip_EN = E1 & !E2 & !E3; /* -- enable out ---*/

Y0= Chip_EN & !C & !B & !A;
Y1= Chip_EN & !C & !B &  A;
Y2= Chip_EN & !C &  B & !A;
Y3= Chip_EN & !C &  B &  A;
Y4= Chip_EN &  C & !B & !A;
Y5= Chip_EN &  C & !B &  A;
Y6= Chip_EN &  C &  B & !A;
Y7= Chip_EN &  C &  B &  A;
Как видно, особо сложного ничего нет. Остается откомпилировать проект и прошить микросхему.
ID7.PNG
You do not have the required permissions to view the files attached to this post.