Применение концепции модельно-ориентированного проектирования в разработке ПЛИС | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Автор:

Рубрика: Технические науки

Опубликовано в Молодой учёный №11 (145) март 2017 г.

Дата публикации: 19.03.2017

Статья просмотрена: 388 раз

Библиографическое описание:

Роженко, Д. Н. Применение концепции модельно-ориентированного проектирования в разработке ПЛИС / Д. Н. Роженко. — Текст : непосредственный // Молодой ученый. — 2017. — № 11 (145). — С. 102-108. — URL: https://moluch.ru/archive/145/40623/ (дата обращения: 16.11.2024).



В данной статье рассматривается модельно-ориентированное проектирование (МОП). На примере достаточно простых и типичных задач, которые встают каждый день у разработчиков ПЛИС будет показано, как можно упростить те или иные этапы разработки. Рассмотрим задачу проектирования интерфейса UART от этапа построения базовой модели в симуляторе и до тестирования работоспособности в ПЛИС.

В данной статье используется:

− Nios Development Board (Cyclone II, EP2C35F672C6)

− Преобразователь USB-to-UART

− САПР Altera Quartus II

− Matlab Simulink (+HDL-coder)

Рис. 1. Nios Development Board

Концепция модельно-ориентированного проектирования.

Любая современная разработка — результат деятельности многих специалистов из разных областей: схемотехники, конструктора, программисты и тестировщики.

Зачастую возникает ситуация, когда инженеры говорят «на разных языках», т. е. используют внутреннюю терминологию, которая может быть понятна одним специалистам, но не понятна специалистам другой области. В связи с этим возникает недопонимание и, как следствие, задержки при разработке.

Существует 2 очевидных решения подобных проблем:

  1. Выучить «все языки»: заставить математиков изучать схемотехнику, а программистов топологию. Очевидно, что подобное решение нерационально и затратно.
  2. Сформировать единую междисциплинарную систему представления проектов и решений, которая была бы понятна всем. Иными словами, сформировать модель, которая была бы интуитивно понятна всем.

Заставить инженеров общаться на одном «стандартном» языке — это и есть концепция МОП.

Перечислим основные достоинства МОП:

− Позволяет нескольким инженерным командам эффективнее взаимодействовать друг с другом.

− Помогает избежать ошибки на ранних стадиях разработки.

− Позволяет обосновать дополнения и изменения системы заказчику.

− Является важным компонентом для валидации и верификации производительности системы.

В дальнейшем система МОП рассматривается на примере графической среды имитационного моделирования Simulink.

Задача: Разработать блок приёма данных UART_RX с последовательного канала.

Будем использовать следующий формат посылки:

По умолчанию шина находится в состоянии логической 1.

Двоичное представление числа 14510=(1001 0001)2

Младшие разряды идут первыми, меняем последовательность битов

(1001 0001=1000 1001) и добавляем старт и стоп бит: 0_1000 1001_1.

Итоговый вид посылки представлен на рисунке

C:\Users\Admin\Desktop\статья\Снимок.PNG

Рис. 2. Посылка на экране осциллографа

Построим модель в среде Simulink (рисунок 4) и поясним ключевые её моменты и принцип работы:

InTX-вход в модуль с последовательного канала.

Spad (детектор фронта) — получает на вход данные InTX и выдает на выход 1 каждый раз, когда происходит перепад из 1 в 0 (необходимо для того, чтобы вычислить start-бит).

StateRX — машина состояний (рисунок 3), которая работает следующим образом:

− На входе в блок поступает сигнал Spad.

− Пока сигнал spad равен 0, автомат находится в состоянии ожидания (IDLE).

− Как только сигнал spad становится равным 1 — происходит переход из состояния ожидания в состояние работы (WORK).

− Стартует счетчик i=0, увеличивающий свое значение с каждым тактом. Как только i=7, происходит переход в состояние IDLE. Это происходит по причине того, что были переданы все данные (от 0 бита и до 7). После этого автомат считает, что пришел стоп-бит, а затем и ожидание старта следующих данных. При этом выходному сигналу receive присваивается значение 1, а внутренний счетчик i обнуляется.

Receive — внутренний сигнал конца посылки, по которому необходимо защелкнуть выходные данные из сдвигового регистра

Data Type Conversion — преобразует тип данных.

Ready — функция конкатенации сдвигового регистра.

Extract Bits — функция извлечения битов.

OutRX — выходное значение приёмника.

Рис. 3. Машина состояний


Рис. 4. Модель UART_RX в Simulink


Проведем моделирование схемы в Simulink и посмотрим результат работы блока:

Рис. 5. Результат моделирования в Simulink

Значение сформировалось при выставлении сигнала ready. Видим, что это 145, т. е. наша исходная посылка.

Итак, имеется готовая модель, которую можно просмотреть, отладить, протестировать и даже модернизировать. Модель интуитивно понятна всем инженерам, которые вовлечены в работу над задачей. Здесь нет в явном виде вещей из программирования или принципиальных электрических схем. Простота и гибкость — залог успеха в МОП.

Теперь используем эту модель и произведем генерацию аппаратного кода при помощи внутреннего пакета Matlab (HDL-coder).

Важно помнить, что HDL кодер не воспринимает такие типы данных, как char, double и т. д. Поэтому, если встретит подобные типы данных в модели, то известит нас об этом, выдав ошибку кодера.

Стоит сразу позаботиться и преобразовать типы данных в uint или Boolean.

После генерации кода, если все прошло успешно-вам выдадут сообщение о том, что код сгенерирован и в папке с размещением проекта вы получите файлы с синтезируемым аппаратным кодом. В нашем случае, имеем дело с Verilog-описанием.

Если же есть какие-то ошибки-выйдет предупреждение с указанием модулей и блоков внутри него, которые нужно заменить или исправить.

Фрагмент кода, сгенерированного HDL-кодером.

Произведем встраивание полученного кода в проект Altera Quartus(рисунок 6).

Опустим процесс создания проекта, т. к. в зависимости от модели ПЛИС различаются настройки.

В нашем случае на рисунке изображен готовый BDF-файл, который является файлом верхнего уровня для Quartus-проекта.

UART_TX-спроектированный наш модуль. Можно заметить, что помимо оговоренных ранее InTX добавились ряд выходов, которые объявил кодер по умолчанию, а именно:

Clk — вход тактирования модуля.

Reset — сигнал сброса (в нашем случае заведен на GND)

Enb — разрешение работы модуля (в нашем случае заведен на VCC)

Количество выходных пинов же не изменилось.

Universal prescaller — готовый модуль, который делит входную частоту по 2 параметрам:

In_Prescaller — Частота работы кварца (в нашем случае 50МГц) на него приходит входной сигнал clk_in

Speed — скорость работы UART в нашем случае (115200 бод)

Clk — выход сигнала. От него тактируется вся остальная схема.

DFFE — триггер, защелкивающий данные OutRX по управляющему сигналу recv.

Модули Crtch+hex_decoder+набор pinout — система выдачи информации на 7-сегментный дисплей.

Рис. 6. Модель UART_RX в Quartus

Вся модель в целом работает следующим образом:

  1. С терминала через преобразователь USB to UART (Input pin proto2_io38) приходит последовательный код.
  2. Последовательный код заходит в модуль Uart_RX.
  3. Модуль забирает данные.
  4. Uart_RX передает данные в систему ввода/вывода, которая выводит данные на дисплей.

Скомпилируем проект.

Загружаем скомпилированный файл в ПЛИС. И проверяем работоспособность.

Для отправки данных используется терминал на компьютере:

Рис. 7. Внешний вид терминала

Рис. 8. Таблица ASCII-кодов

Работает она следующий образом:

В самой таблице находится число(буква) — которая является посылкой (в нашем случае 5).

Смотрим по таблице соответствия по столбцу (0..7),а затем по строкам (0..F).

В нашем случае, число 58=35ASCII

Значит, если мы отправим посылку 5, то на выход приемника придет число 35.

Проверяем:

https://pp.vk.me/c638124/v638124700/4e75/-G3m4VlqJHw.jpg

Рис. 9. Результат работы UART_RX

По рисунку видно, что значение, отправленное с терминала, соответствует тому, что выдал на выход UART_RX.

Принципы МОП существенно отличаются от традиционной методологии проектирования.

Вместо создания сложных программных кодов разработчики могут применять МОП для улучшения характеристик модели, используя стандартные функциональные блоки. Построенные таким образом модели вместе с использованием инструментов для моделирования могут быстро привести к созданию прототипа системы управления, тестированию и верификации программного обеспечения.

В некоторых случаях аппаратно-программное моделирование может быть использовано в качестве инструмента проектирования для более быстрого и эффективного тестирования динамических воздействий на систему, в отличие от традиционного метода проектирования.

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

Основные термины (генерируются автоматически): UART, IDLE, данные, модель, тип данных, DFFE, GND, последовательный канал, последовательный код, сдвиговый регистр.


Задать вопрос