Tesla

Тестирование Проекта Quartus

8 сообщений в этой теме

Tesla    46

Возник вопрос: создал, допустим, я в Quartus'е проект - модуль, сопрягаемый с внешним микроконтроллером. Перед изготовлением реального устройства хочется как следует потестировать в симуляторе ПЛИСину и микроконтроллер в связке. Но вот беда - Proteus ничего не знает про ПЛИС, а Quartus - про её периферию. Есть ли какая-нибудь возможность получить из проекта квартуса модель, подцепляемую протеусом или другим симулятором, или специализированный софт для симуляции ПЛИС и периферии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    990

Я задавался подобным вопросом, но, похоже, что такой возможности нет.

В Quartus и MaxPlus есть возможность подключить файл вектора входных сигналов (*.vec). Внутри файла возможно описание любых входных сигналов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Tesla    46

А нельзя ли к Quartus'у подключиться через какой-либо API, чтобы, грубо говоря, программно рассчитывать входные сигналы для ПЛИС на следующем шаге исходя из выходных сигналов предыдущего шага, т. е. создать обратную связь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    990

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

Что у Вас за проект, если не секрет? Может, получится обойтись одной ПЛИС (без МК). Мне их пришлось совмещать только один раз - когда потребовалось формирование длительных задержек (секунда и более) при основном такте около 30 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Tesla    46

Серьёзного проекта пока нет, хочется просто разобраться на будущее. Но однажды была необходимость разработать недорогое устройство с пятью последовательными портами (для объединения 4 потоков NMEA в один). Тогда я кое-как выкрутился, реализовав 4 UART'а программно (тем более, от них требовался только приём), но это, ИМХО, было некоторым извращением, так как занимало большую часть процессорного времени atmega8 (на 11.0592 мгц), плюс для стабильности работы пришлось отключить все прерывания, кроме таймера. А сейчас я бы попробовал реализовать UART'ы аппаратно, на ПЛИС, оставив основную задачу (буферизация, определение границ пакетов, проверка контрольной суммы) на микроконтроллере. Мне кажется, что такое комбинированное решение обошлось бы дешевле, чем микроконтроллер с 5 UART, или жирная ПЛИС, которая потянет задачу полностью.

P. S. Кстати, ещё не разобрался - для чего в ПЛИС нужна основная тактовая частота? Это ведь не микроконтроллер, где все операции должны происходить синхронно. Или она применяется только для вспомогательных целей (формирование временных интервалов)?

Изменено пользователем Tesla

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    990
А сейчас я бы попробовал реализовать UART'ы аппаратно, на ПЛИС, оставив основную задачу (буферизация, определение границ пакетов, проверка контрольной суммы) на микроконтроллере.

Разумно. Я вообще плохо представляю себе ПЛИС в качестве АЛУ. Хоть большие кристаллы с этим и справятся, логичнее использовать ПЛИС в оптимальной для нее среде, то есть ЦОС, а всю арифметику оставить МК.

Кстати, ещё не разобрался - для чего в ПЛИС нужна основная тактовая частота? Это ведь не микроконтроллер, где все операции должны происходить синхронно. Или она применяется только для вспомогательных целей (формирование временных интервалов)?

Основной такт не обязателен. Вам же никто не запрещает сделать на ПЛИС элемент NAND. :) Просто это является расточительством ресурсов. Да и ПЛИС сами по себе очень "гибкие" изделия. То, что можно оформить даже в маленький кристалл EPM7032, едва ли получится заставить работать на дискретной логике при аналогичных требованиях к быстродействию.

В МК работает синхронно только внутренняя переферия и порты I/O, сами же операции несинхронны. Это основной недостаток МК, которого можно избежать только отключением прерываний и полным контролем последовательности выполнения команд, что возможно только при листинге на ассемблере. В ПЛИС этого недостатка нет. Языки описания конфигурации являются параллельными. Более того, моделирование ПЛИС архитектуры CPLD позволяет практически со 100% гарантией вычислить все задержки внутри кристалла. Для архитектуры FPGA несколько сложнее, так как многое зависит от умения разработчика трассировать модули внутри кристалла. Я, например, с FPGA еще не работал и практики в этом нет.

Говоря об обратной связи в цифровой технике, я всегда подразумеваю наличие синхронизации, так как в асинхронных проектах ОЧЕНЬ велика вероятность получить метастабильные состояния. В Вашем случае можно использовать тактовую частоту для ПЛИС 22.1184 MHz и все внутренние операции выполнять синхронно с этим тактом. А для синхронизации с портами МК, внутри ПЛИС поделить mclk на 2 и тактировать МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Tesla    46

Спасибо за ответ!

Если я правильно понял, то тактовый вход ПЛИС отличается от остальных только оптимизированной разводкой внутри кристалла?

Изменено пользователем Tesla

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    990
Если я правильно понял, то тактовый вход ПЛИС отличается от остальных только оптимизированной разводкой внутри кристалла?

Да. Это так называемые глобальные входы. Их, как минимум, три - тактовый, сброс и разрешение. Но совсем не обязательно их использовать по назначению. Можно не использовать вообще. Главное преимущество глобальных линий - это малое время распространения по кристаллу даже у "тормознутых" грейдов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас