|
Как отлаживаете свои проекты?, Сбор возможных вариантов |
|
|
|
Jan 18 2011, 06:48
|

Местный
  
Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382

|
Утро доброе
Задумался я тут вот над каким вопросом. Долго ли коротко ли, на VHDL-ли на Verilog-ли, проект написан и даже синтезировался, и даже прошился в ПЛИС и даже кажется работает как надо.
И тут появляется лично у меня вопрос, который очень бледно освещен в книгах, ну разве что кроме "Курса молодого бойца" Максфилда
Какими средствами вы отлаживаете свои проекты?
Я для себя пока опробовал несколько путей
1) Простой проект. Отладка по аналогии с отладкой на уровне разработки. Пишется TestBench модуль, который может выдавать ряд простейших воздействий, затем модуль присовокупляется к проекту, запускается. Управление кнопками, просмотр реакции на осциллографе. Плюсы подхода - Каждый сигнал можно просмотреть хоть в цифровом, хоть в аналоговом виде, отловить все задержки. Минус такого подхода - Ограниченность вариантов входных воздействий - На экране осциллографа больше 16 сигналов не разглядишь.
2) Отладка в цифре. Метод, который я сейчас пытаюсь применить к своему проекту. Большинство современных DevKit'ов имееют встроенный RS232 модуль или того лучше - преобразрователь USB->RS232, а на PC устанавливается драйвер виртуального КОМ-порта. Тогда физически RS232 нигде не появляется, ограничение на скорость повышаются до уровня USB, а мы имеем возможность работать с железкой через старый добрый UART. Далее пишется, или скачивается с OpenCores, модуль RS232, дописывается модуль хранения и выдачи этих данных, а так же приема данных с ПЛИС. Следующий этап - программная часть комплекса. Тут можно использовать объектно-ориентированный язык, на вроде С++ или среды DELPHI, можно попробовать писать из среды мат.моделирования Matlab,чем я сейчас как раз и занимаюсь. Плюсы метода - объем входных последовательностей для тестирования ничем не ограничен, полностью управляется с PC, на нем же просмотр полученных результатов. Минусы если что можно компенсировать добавлением осциллографа.
А какие пути используете вы? Многообещающе выглядит решение от компании Mathworks и Xilinx, по включению ПЛИС в качестве модуля в среды Simulink через JTAG с отслеживанием состояния всех ножек сразу. Пробовали ли вы другие какие то интерфейсы? Можно ли включить ПЛИС в среду ModelSim и отслеживать состояния выходов так же, как при моделировании?
В общем предлагаю всем поделиться частью своего опыта
--------------------
Because it's there
|
|
|
|
|
Jan 18 2011, 07:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Muscat @ Jan 18 2011, 09:48)  Какими средствами вы отлаживаете свои проекты? ИМХО, все зависит от конкретного проекта. В любом случае, основное средство для отлавливания ошибок - электронный осциллограф (для Xilinx, как уже писали - chipscop). Иногда нет вообще возможности подрубиться к ногам плисины, пример: данные передаются на частоте 1ГГц, стандарт lvds. Был проект - закачка изображения в zbt ram (из pc_power), далее передача с некоей скоростью его с одной плисины на другую и запись опять же в zbt_ram. Проверялось сначала путем сличения картинок визуально, затем было программно автоматизировано (на приемнике хранились исходные изображения). Самый сложный проект для отладки, с которым приходилось работать - цифровой модем (при этом в ТЗ естественно и высокий уровень шума и доплер). Отладка - связка передатчик+приемник. На передатчике помимо основного проекта зашиты: 1. на передатчике - эмулятор канала AWGN и модуляция с возможностю изменения моделирующей частоты (задавались некие коэффициенты значения уровня шума и смещения тактовой посредством xmd и встроенного программного процессора). 2. на передатчике и приемнике - некий одинаковый генератор ПСП. 3. два счетчика на приемнике - для счета общего числа пакетов (в моем случае была преамбула), и счетчик на принятые пакеты. 4. Простейшая логика для подсчета вероятности и вывод ее текущего значения посредством xmd. Так вот снималась эта вероятность в различных точках и строился график, график сравнивался с графиком матлабовской модели и графиком вероятности, рассчитанной в теоретии. Далее шло обоснование потерь в дБ (за счет ограничения разрядности в коэффициентах фильтров, к примеру).
|
|
|
|
|
Jan 18 2011, 08:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Muscat @ Jan 18 2011, 11:03)  bogaev_roman вот как раз к описанному вами я и хочу прийти. Отлаживаю декодер Витерби, строю графики. Имеется теоретический график, имеется модель повторяющая работу ПЛИС со всеми ограничениями. Заключительный этап - подавать на ПЛИС те же данные, что и в модель, смотреть на вероятность ошибки и ставить эксперементальные точки на график BER. В вашем случае: 1. Создается модель, полностью идентичная описанию(разрядность и все задержки, с учетом того, что simulink, по умолчанию по срезу работает)!!! 2. Ставится в параллель в simulink модель и HDL описание (не помню как блок называется для вставки HDL), эти модели имеют одинаковые входные воздействия, оба выхода поступают на блок сравнения и результат работы их должен быть одинаковым. Ставите моделирование на ночь, скажем, и убеждаетесь, что модели идентичные (и убрать все осциллографы, они систему вешают серьезно). 3. При необходимости можно вместо HDL модели RTL уровня, подсунуть gate level (читайте документацию, но это сильно вешает систему). 4. Есть возможность, как Вы уже описывали с помощью Mathworks и Xilinx реально отследить поведение в плис (я этим не занимался) либо самому написать ber тестер и генератор входных воздействий. 5. Отладка Ваша упрощается тем, что если произошел какой-то существенный сбой, то Ваш декодер накроется медным тазом и приведет скажем к возникновению групповых ошибок. Вот это условие и можете сформировать посредством простейшей логики, как останов работы (событие) chipscop и просмотреть все то, что было до этого события в системе, а дельше найти причину сбоя. PS 1. Генератор шума и многие блоки simulink можно сгенерировать автоматически в HDL код (если соответствующая утилита поставлена), если модель полностью идентична описанию и Ваш проект влазит по временным ограничениям, то 99% что в ПЛИС все будет работать правильно.
|
|
|
|
|
Jan 18 2011, 08:45
|

Местный
  
Группа: Свой
Сообщений: 277
Регистрация: 8-04-09
Из: Москва
Пользователь №: 47 382

|
bogaev_roman , Спасибо огромное за информацию. Да, такой путь был бы идеальным, мне его уже рекомендовали. Но проблема в том, что моя модель написана на языке Matlab и я не представляю даже, как собрать мой декодер в Симулинке. Я собирал в Симулинке модели со встроенными декодерами, генераторами сигналов и канала. Но как описать сам декодер - автоматы управления, блоки памяти, поиска минимума, сумматоры, не представляю.
--------------------
Because it's there
|
|
|
|
|
Jan 18 2011, 10:51
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Muscat @ Jan 18 2011, 13:08)  DmitryR, был бы премного благодарен, если вы показали мне мануал по использованию этой системы, руководство - вот код, вот сюда вставляем, вот этими блоками стимулируем, вот тут смотрим. У меня разобраться не получилось. От себя добавлю немного, хотя тоже самое http://embedders.org/content/sovmestnoe-mo...asim-i-simulinkКлючевое слово HDL Cosimulation, сам когда-то руководство целое писал, но затерялось где-то...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|