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

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

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

Автор:

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

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

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

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

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

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



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


Похожие статьи

Метастабильное состояние триггера и способы его устранения

Блок UART_RX осуществляет преобразование в параллельный код и выставляет сигнал готовности ready. Определив готовность модуля приёмника, передатчик загружает данные и осуществляет обратное преобразование в последовательный канал, отправляя данные по...

Программирование двухфазного генератора с синусоидальными...

Программирование двухфазного генератора с синусоидальными напряжениями со сдвигом 90° на микроконтроллере STM32.

Следующим шагом необходимо записать данные функции между фигурными скобками в «main()» (рис. 12).

Программирование прямого и комплементарного ШИМ-сигналов...

3) Инициализация ШИМ с обязательным включением комплементарных каналов

Стойка - это основной элемент силовой схемы, состоящий из двух последовательно

Следующим шагом необходимо записать данные функции между фигурными скобками в «main()» (рис. 16).

Разработка и исследование промышленной сети, создание...

Метод передачи данных аналогичен асинхронному последовательному интерфейсу.

Для электрического согласования линий RS-232 и стандартной цифровой логики UART

Типы данных разобраны в таблице 2. Также, разным операциям соответствуют разные типы доступа.

Оценка параметров каналов и развитие измерительных...

Алгоритмы сигнатурного анализа основаны на математических моделях регистров сдвига с

ИВМ сопрягается с ИК-приемо-передатчиком через асинхронный последовательный

Измерения параметров эхосигналов, возникающих при дуплексной передаче данных по...

Система синхронизации псевдослучайной последовательности...

На основе измерения данных параметров производится оценка таких важных характеристик каналов как чувствительность, информационная полоса

Анализатор достоверности имеет следующие технические характеристики: Типы тестовых последовательностей

Подключение акселерометра, выполненного по MEMS-технологии...

Для чтения информации считываем значения старшего и младшего регистров, после чего производим сдвиг старшего на 8 бит влево и присваиваем младшим битам значения младшего регистра. Адреса регистров данных для осей X и Y приведены на рисунке 5.

Сравнение быстродействия и помехоустойчивости ТТЛ...

Сравнение быстродействия и помехоустойчивости ТТЛ- и КМОП-схем на основе данных моделирования мультиплексора 74x151 в среде PSPICE.

Программирование изменения скважности импульсов ШИМ на...

Кнопка – это устройство, при нажатии на которое происходит замыкание контактов. Для подключения кнопки к микроконтроллеру необходимо сконфигурировать порт микроконтроллера как вход и включить чтение входных данных. Алгоритм набора кода в программе CoIDE...

Похожие статьи

Метастабильное состояние триггера и способы его устранения

Блок UART_RX осуществляет преобразование в параллельный код и выставляет сигнал готовности ready. Определив готовность модуля приёмника, передатчик загружает данные и осуществляет обратное преобразование в последовательный канал, отправляя данные по...

Программирование двухфазного генератора с синусоидальными...

Программирование двухфазного генератора с синусоидальными напряжениями со сдвигом 90° на микроконтроллере STM32.

Следующим шагом необходимо записать данные функции между фигурными скобками в «main()» (рис. 12).

Программирование прямого и комплементарного ШИМ-сигналов...

3) Инициализация ШИМ с обязательным включением комплементарных каналов

Стойка - это основной элемент силовой схемы, состоящий из двух последовательно

Следующим шагом необходимо записать данные функции между фигурными скобками в «main()» (рис. 16).

Разработка и исследование промышленной сети, создание...

Метод передачи данных аналогичен асинхронному последовательному интерфейсу.

Для электрического согласования линий RS-232 и стандартной цифровой логики UART

Типы данных разобраны в таблице 2. Также, разным операциям соответствуют разные типы доступа.

Оценка параметров каналов и развитие измерительных...

Алгоритмы сигнатурного анализа основаны на математических моделях регистров сдвига с

ИВМ сопрягается с ИК-приемо-передатчиком через асинхронный последовательный

Измерения параметров эхосигналов, возникающих при дуплексной передаче данных по...

Система синхронизации псевдослучайной последовательности...

На основе измерения данных параметров производится оценка таких важных характеристик каналов как чувствительность, информационная полоса

Анализатор достоверности имеет следующие технические характеристики: Типы тестовых последовательностей

Подключение акселерометра, выполненного по MEMS-технологии...

Для чтения информации считываем значения старшего и младшего регистров, после чего производим сдвиг старшего на 8 бит влево и присваиваем младшим битам значения младшего регистра. Адреса регистров данных для осей X и Y приведены на рисунке 5.

Сравнение быстродействия и помехоустойчивости ТТЛ...

Сравнение быстродействия и помехоустойчивости ТТЛ- и КМОП-схем на основе данных моделирования мультиплексора 74x151 в среде PSPICE.

Программирование изменения скважности импульсов ШИМ на...

Кнопка – это устройство, при нажатии на которое происходит замыкание контактов. Для подключения кнопки к микроконтроллеру необходимо сконфигурировать порт микроконтроллера как вход и включить чтение входных данных. Алгоритм набора кода в программе CoIDE...

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