Спустя несколько десятков лет компания 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 Обновление среды разработки для SPLD/CPLD логики
Moderator: Shaos
-
FizikS
- Maniac
- Posts: 328
- Joined: 11 Oct 2018 00:52
- Location: г. Клинцы, Брянская обл.
WinCUPL II Обновление среды разработки для SPLD/CPLD логики
You do not have the required permissions to view the files attached to this post.
-
FizikS
- Maniac
- Posts: 328
- Joined: 11 Oct 2018 00:52
- Location: г. Клинцы, Брянская обл.
Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики
Обнаружился первый серьезный недостаток программы.
Проявляется в следующем. Переносишь каталог с проектом в другое место, и при попытке открыть его появляется сообщение об ошибке: Причина в том, что в файле проекта пути к файлам, включенным в проект, пишутся в полном виде, а не относительно точки размещения проекта: Лечить можно так:
Создаем новый проект. В окне выбора микросхемы выбираем виртуальное устройство: После нажатия кнопки Create Project программа просит сохранить файл проекта. В качестве имени указываем имя существующего проекта (в каталоге проекта). Сохраняем проект. Соглашаемся на перезапись.
Программа предупреждает, что в каталоге имеются файлы и они будут добавлены в этот проект.
Жмем Ок и попадаем в рабочую среду.
Проверяем возможность редактирования файла прошивки. Должно работать нормально.
Проявляется в следующем. Переносишь каталог с проектом в другое место, и при попытке открыть его появляется сообщение об ошибке: Причина в том, что в файле проекта пути к файлам, включенным в проект, пишутся в полном виде, а не относительно точки размещения проекта: Лечить можно так:
Создаем новый проект. В окне выбора микросхемы выбираем виртуальное устройство: После нажатия кнопки Create Project программа просит сохранить файл проекта. В качестве имени указываем имя существующего проекта (в каталоге проекта). Сохраняем проект. Соглашаемся на перезапись.
Программа предупреждает, что в каталоге имеются файлы и они будут добавлены в этот проект.
Жмем Ок и попадаем в рабочую среду.
Проверяем возможность редактирования файла прошивки. Должно работать нормально.
You do not have the required permissions to view the files attached to this post.
-
FizikS
- Maniac
- Posts: 328
- Joined: 11 Oct 2018 00:52
- Location: г. Клинцы, Брянская обл.
Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики
Небольшая инструкция по созданию функционального аналога К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) в одну и приступил к работе.
Из схемы видно, что триггер и логика, подключенная ко входу 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 проводками. Но переходник будет немного эстетичнее.
Соответствие сигналов:
Теперь все готово для создания прошивки.
Продолжение следует...
Целью создания замены указанной выше микросхемы является ее применение в доработке видеоформирователя стандартного любительскуого компьютера Орион для вывода картинки на телевизор и 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) в одну и приступил к работе.
Из схемы видно, что триггер и логика, подключенная ко входу 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 проводками. Но переходник будет немного эстетичнее.
Соответствие сигналов:
Теперь все готово для создания прошивки.
Продолжение следует...
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 логики
Был такой справочник по 155 серии - там БЫЛИ ВСЕ МИКРОСХЕМЫ в "разрисованном" до простой логики и тригеров и с таблицами.
Даже помню цвет - коричневая))) За "речкой" лежит на полке.
Я покупал в 90-е в книжном.
You do not have the required permissions to view the files attached to this post.
-
FizikS
- Maniac
- Posts: 328
- Joined: 11 Oct 2018 00:52
- Location: г. Клинцы, Брянская обл.
Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики
Эти схемы аналогичны приведенным в даташитах на 74198. Работать с ними неудобно. Требуется перерисовка. Мне было проще сделать так, как описано. Результат аналогичный.
-
Alekcandr
- Devil
- Posts: 740
- Joined: 01 Oct 2007 10:30
- Location: Ukraine
Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики
Ну да. Как правило эти схемы вот так просто не получится скопировать из справочника. GAL не печатная плата на которой можно собрать, что захочется. Придется адаптировать схему под типовую макроячейку GAL.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
http://www.orion-ext.narod.ru
-
Alekcandr
- Devil
- Posts: 740
- Joined: 01 Oct 2007 10:30
- Location: Ukraine
Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики
Ну это мелочи. Предыдущая версия начисто сносила все переменные среды в Windows
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
http://www.orion-ext.narod.ru
-
FizikS
- Maniac
- Posts: 328
- Joined: 11 Oct 2018 00:52
- Location: г. Клинцы, Брянская обл.
Re: WinCUPL II Обновление среды разработки для SPLD/CPLD логики
Рассмотрим кратко язык описания логических схем CUPL.
Предложенных сведений, думаю, будет достаточно, чтобы реализовать некоторые схемы на CPLD 16V8, 22V10 и других.
CUPL - Compiler Universal for Programmable Logic, инструмент разработки CPLD от компании Logical Devices. Является одним из самых простых языков описания логических схем. Это означает, что разрабатываемое цифровое устройство мы не изображаем в виде графической схемы, а описываем в виде логических формул или соглашений. В этом языке можно описывать триггеры и некоторые аппаратные особенности используемой CPLD. Также имеются конечные автоматы, таблицы истинности. В среде разработки присутствует симулятор, позволяющий проверить правильность синтеза схемы. Преимуществом языка CUPL является его простота и понятность.
Программу на языке CUPL можно разбить на три блока:
1. Описание программы (заголовочная часть), в котором есть один важный пункт - тип используемой ПЛИС.
2. Описание выводов.
3. Описание внутренней логики.
Описание программы, сгенерированной программой WinCUPL II по умолчанию, выглядит вот так:
Поля можно заполнить любой информацией. Анализируется только поле 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, не являются индексными.
Такие переменные удобно использовать для сокращения записи. Пример:
Описание переменных:
компилятор будет "понимать" в следующем виде:
Логические операции в языке 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.
Листинг программы будет такой:
Как видно, особо сложного ничего нет. Остается откомпилировать проект и прошить микросхему.
Предложенных сведений, думаю, будет достаточно, чтобы реализовать некоторые схемы на 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;Описание выводов состоит из набора строк:
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;
You do not have the required permissions to view the files attached to this post.
