Эмбеддерская валентинка

Вот такую валентинку подготовил на завтра. Заняло макс 15мин.

 

Чип с платы принтера выпаян феном, ноги срезаны скальпелем. Остальное гравером с алмазной насадочкой. 

Подход к автоматизации разработки HDL проектов

Добрый день уважаемые коллеги!!

Часто начинающие плисоводы, начав изучать какой либо из HDL языков, задаются вопросом почему в них громоздко и не оптимально описываются соединения блоков между собой. Рассмотрим это на примере языка Verilog.

Действительно, при создании любого компонента, нужно объявить его интерфейс, т.е. описать его порты(имена, типы, направления). Для синтеза, только эти порты и будут видны компонентам более высокого уровня. Дальше этих интерфейсов прыгнуть нельзя. Почему так?

TimeQuest для чайников. Приложение 2 (Хак для System Synchronus Ouput на cycloneIII)

Решал недавно одну непростую задачу, танцевал с бубном достаточно долго. Итак имеем 3 асинхронных потока данных на частоте 180 МГц и нужно было выдать их на внешний DAC включенный в режиме System Synchronus Ouput.

Что сложного скажет кто-то, берем еще один клок на PLL, немного двигаем его по фазе и вуаля. Но в том-то и дело что PLL у меня не было. А не было ее потому, что два клока шли с других PLL, а еще один клок шел с обычного порта. ПЛИС cycloneIII, как известно не поддерживает подачу на PLL абы какого сигнала, поэтому пришлось выкручиваться без нее.

Обработка прерываний в MIPS-процессорах

Сегодня, дорогие мои, я расскажу вам про обработку исключений в процессорах MIPS-архитектуры. Но вначале - предисловие:

  1. Если вы считаете, что "только идиот будет рассказывать такие элементарные вещи" - что ж, простите, что не угодил вашему притязательному вкусу. Имею надежду, что это хоть как-то кому-то поможет.
  2. Все описанное - из личного опыта. Но из MIPS-архитектур довелось поработать только с процессорами серии "Мультикор". Это российские процы, подробнее - на http://multicore.ru/index.php?id=43 (не реклама!). Вообще-то они DSP, но управляющее ядро у них как раз MIPS32. К чему это я? Ах да, к тому, что все рассказанное ниже было испробовано только с этими процами и возможно, при работе с другими MIPS-совместимыми архитектурами надо будет что-то менять.
  3. Могу иногда быть некорректен, например в терминологии. В этом случае - с удовольствием принимаю поправки и предложения.

TimeQuest для чайников. Приложение 1 (Внешняя обратная связь по клоку).

Вопрос возник на форуме electronix.ru и его правильное решение предложили пользователи des333 и SM. Я в этом вопросе целиком и полностью опростоволосился %).

Задача такая, как правильно описать констрены для такой системы

TimeQuest для чайников. Часть 5 (Заключение)

Мы рассмотрели основные вопросы по заданию констрейнов для различных проектов.

За границами рассмотрения остались такие виды задания ограничений как : мультицикловые пути в проекте (мы рассмотрели их использование только в интерфейсах), интерфейсы с работой по обеим фронтам.

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

TimeQuest для чайников. Часть 4 (Как много интерфейсов разных)

Вот мы и подошли к основному таинству TimeQuesta. Это таинство задания временных ограничений для интерфейсов ввода/вывода. Интерфейсов существует великое множество, но относительно методов их обработки и задания констрейнов их можно разделить на 2 основные группы : асинхронные и синхронные интерфейсы.

Под синхронностью я понимаю метод обработки интерфейса в ПЛИС. Если для обработки потока данных используется логика, тактируемая от частоты этого интерфейса, то такой интерфейс я называю синхронным. В противном случае интерфейс асинхронный.

Асинхронные я делю на истинно асинхронные (т.е. обрабатываемые полностью на  комбинационной логике) и асинхронные с обработкой на системном клоке. Синхронные же в свою очередь делятся по признаку местоположения источника тактовой частоты на system-synchonus и source-synchronus интерфейсы.

Есть еще самосинхронные интерфейсы работающие с Clock Data Recovery (CDR), но их мы рассматривать не будем. Также не будем рассматривать подробно вопросы реализации интерфейсов, нас интересует только задание временных ограничений в TimeQuest. 

TimeQuest для чайников. Часть 3 (Клоки как вас много)

Продолжаем наше погружение в мир TimeQuest-а. Как вы уже поняли, эта часть посвящена проектам, в которых клоков больше чем один. Задание ограничений для таких проектов не намного сложнее, чем для рассмотренного нами ранее одночастотного проекта. Рассмотрим основные случаи многочастотных проектов.

Внимание  рассматриваем только вопросы задания частот. Задание констрейнов ввода/вывода будем рассматривать в следующих частях.

TimeQuest для чайников. Часть 2 (TimeQuest лицом к лицу)

В предыдущей части мы рассмотрели самый простой проект для  ПЛИС, который только может быть. Перед тем как перейти к более сложным проектам надо освоить инструмент, о котором идет речь. Эта часть посвящена основам временного анализа с помощью TimeQuest.

TimeQuest это программа для проверки выполнения временных ограничений, заданных в sdc файле констрейнов. Вот тут возникает первое правило TimeQuest а:

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

Совместное моделирование проектов в Modelsim (Qusestasim) и Simulink

Некоторое время назад мне пришлось много заниматся разработкой систем ЦОС на ПЛИС. В часности разроботкой и отладкой модемов. Хорошим инструментов для "обкатки" алгоритмов, и самое главное динамической визуализации поведения, является Simulink, который входит в состав Matlab. Simulink позволяет создать модель системы высокого уровня и настроить ее параметры согласно предпологаемым режимам работы. После переноса системы на какойнибуть из языков HDL, встает вопрос соответствия эталонной модели. И вот сдесь очень удобным является совместное моделирование системы реализованой в Simulink и в ПЛИС. В данной заметке я раскажу как это можно сделать.

Итак эксперементы будем проводить над такими версиями ПО:

RSS-материал