Статьи..


WinCupl. SPLD.

Речь пойдет WinCupl и использовании микросхем программируемой логики малой степени интеграции (SPLD). К плюсам программы можно отнести ее бесплатность, малый размер и поддержку многих устаревших микросхем SPLD. WinCupl позволяет создать описание проекта в текстовом виде на языке Cupl, произвести его компиляцию, а также проверить работу в симуляторе.

В качестве примера рассмотрим создание прошивки для преобразователя 4-х битного двоичного кода в код управления семисегментным индикатором. Запустим программу и в меню ”File”-> ”New” выберем ”Project”. Заполним в открывшемся диалоговом окне поля ”Name” и ”Device” и нажмем ”Ok”.

WinCupl - New Project

После этого последовательно откроются 3 окна, в которых будет предложено ввести количество линий ввода, вывода и узлов проекта. Можно не заполнять эти поля (по умолчанию там 0), а просто трижды нажать ”Ok”. И так пустой проект создан. В WinCupl поддерживается многострочный комментарий, аналогичный тому, что используется в языке С, т.е все , что находится между ( /* */ ) – игнорируется компилятором.

Создадим описание входных линий.

/* Input pins */
Pin 2 = in0;
Pin 3 = in1;
Pin 4 = in2;
Pin 5 = in3;

Далее опишем выходные линии.

/* Output pins */
Pin 19 = ledA;
Pin 18 = ledB;
Pin 17 = ledC;
Pin 16 = ledD;
Pin 15 = ledE;
Pin 14 = ledF;
Pin 13 = ledG;

Для удобства использования создадим константы, описывающие комбинации входных сигналов…

/* Define constants */
Dg0 = !in0 & !in1 & !in2 & !in3;
Dg1 = in0 & !in1 & !in2 & !in3;
Dg2 = !in0 & in1 & !in2 & !in3;
Dg3 = in0 & in1 & !in2 & !in3;
Dg4 = !in0 & !in1 & in2 & !in3;
Dg5 = in0 & !in1 & in2 & !in3;
Dg6 = !in0 & in1 & in2 & !in3;
Dg7 = in0 & in1 & in2 & !in3;
Dg8 = !in0 & !in1 & !in2 & in3;
Dg9 = in0 & !in1 & !in2 & in3;
DgA = !in0 & in1 & !in2 & in3;
DgB = in0 & in1 & !in2 & in3;
DgC = !in0 & !in1 & in2 & in3;
DgD = in0 & !in1 & in2 & in3;
DgE = !in0 & in1 & in2 & in3;
DgF = in0 & in1 & in2 & in3;

… и наконец создаем логические уравнения, описывающие работу.

/* Logical equations */
ledA = Dg0 # Dg2 # Dg3 # Dg5 # Dg6 # Dg7 # Dg8 # Dg9 # DgA # DgC # DgE # DgF;
ledB = Dg0 # Dg1 # Dg2 # Dg3 # Dg4 # Dg7 # Dg8 # Dg9 # DgA # DgD;
ledC = Dg0 # Dg1 # Dg3 # Dg4 # Dg5 # Dg6 # Dg7 # Dg8 # Dg9 # DgA # DgB # DgD;
ledD = Dg0 # Dg2 # Dg3 # Dg5 # Dg6 # Dg8 # Dg9 # DgB # DgC # DgD # DgE;
ledE = Dg0 # Dg2 # Dg6 # Dg8 # DgA # DgB # DgC # DgD # DgE # DgF;
ledF = Dg0 # Dg4 # Dg4 # Dg5 # Dg6 # Dg8 # Dg9 # DgA # DgB # DgC # DgE # DgF;
ledG = Dg2 # Dg3 # Dg4 # Dg5 # Dg6 # Dg8 # Dg9 # DgA # DgB # DgD # DgE # DgF;

Все готово к компиляции. Выбираем в меню ”Run”-> ”Device Dependent Compile ”. После компиляции в окне проекта появится *.jed – файл, который можно ”залить” в чип.

WinCupl - Source

Перед прошивкой убедимся, что получили именно то, что нужно – проверим проект в симуляторе.

Исходый код проекта.

На главную страницу...