Перейти к содержанию
    

Chuh

Участник
  • Постов

    28
  • Зарегистрирован

  • Посещение

Весь контент Chuh


  1. Куплю kit для WiFi чипа Cypress CYW43907 CYW943907AEVAL1F или QUICKSILVER-EVL. Рассмотрю возможность взять в аренду. Из-за короновируса не удается привезти ни один кит в Россию. Алексей
  2. a) Chuh/ Романов Алексей Михайлович B) Область разработки: Робототехника/Системы управления на базе ПЛИС c) Опыт работы: 7 лет e) Курс на выбор: Методология проектирования на FPGA f) Контактные данные: [email protected]
  3. Вопрос не столько по ПЛИС, сколько вообще по микроэлектронике: где можно найти графики (или любые численные данные) по зависимости максимальной частоты переключения транзисторов от используемой в технологии микросхемы. То же самое интересует по тепловыделению. На пальцах все понятно: чем меньше нм технология, тем быстрее может быть чип и тем меньше он потребляет/выделяет. Но нигде не могу найти конкретных данных типа: для 180 нм предельная частота 1 ГГц, а для 90 нм 2 ГГц. Опять же может кто знает какие-нибудь статьи/книжки посвященные сравнению микросхем на различных тех. процессах между собой.
  4. Про внутреннего осциллятор у Spartan 3E я ни разу не слышал (что ни как не означает, что его там нет). На всякий случай перечитаю мануал. Киты Digilent Nexys 2.
  5. Буду думать откуда брать. Так не хочется ничего допаивать на студенческие kit'ы... Это тоже пробывал. Засунул туда без регистров умножитель 32x32... Тоже как-то не показательно получилось... Есть еще вариант поставить спиртовку под микросхему. Поидее частота глюков должна повыситься, да и общий антураж лабораторной работы придаст
  6. Это какой-то закон подлости. Помню, когда только начинал проектировать под ПЛИС, то не очень заботился о синхронизации доменов и в итоге (правда в куда более сложном дезайне) у меня все глючило куда бодрее, чем 1 глюк в час:( А как надо показать, то фиг покажешь Лабу очень хотелось бы сделать на реальной ПЛИС, потому как симулятор - это хорошо, но надо в том числе показать, что симуляция соотвествует реальному процессу. ЗЫ: Может линию задержки сделать...
  7. Окружение - реальная ПЛИС Spartan 3E. Клоки делаются из базового при помощи DCM, причем я их делаю не кратными. Т.е. например clk_in=clk*3/7. Я делал ровно такой код, только с 32 битным счетчиком. И он не глючит:( Вся проблема ИМХО в том, что дезайн слишком прост и мал. Но если он будет большим, для лабораторки - это плохо, т.к. студент теряет понимание, того что происходит и почему. Физически разные клоки я пока не придумал откуда взять.
  8. Здравствуйте, делаю лабораторку для студентов на тем синхронизаторов и перехода между различными клоковыми доменами. На первом этапе лабораторки надо показать, что переходить между клоковыми доменами без синхронизаторов или фифо нельзя. Структура дезайна такова: есть вычислительная часть работающая на частоте clk_in , где генерируется сигнал. Есть RS232 интерфейс, который работает на частоте clk и передает результаты вычислительной части без каких либо синхронизаторов. Хотелось бы показать, что при clk=clk_in все работает, а при clk~=clk_in все глючит. Да вот только уже который час бьюсь, а у меня ничего не глючит. Пробывал делать и большие счетчики и умножители и т.д. Все прекрасно проходит между клоковыми доменами. Вообщем, нужен гарантированно глючный код на Verilog, который бы начал бы сбоить в случае, если clk~=сlk_in.
  9. Тогда остается такой вопрос: Если у меня есть сигналы ERR_O или RTY_O, то все вроде понятно. SLAVE не поднимает ACK_O, вместо этого он в зависимости от ситуации поднимает ERR_O или RTY_O. Правильно ли я понял, что если этих сигналов в шине нет, то в случае отсутствия адреса SLAVE держит все свои выходы в низком уровне. Если это так, то для случая когда у всех SLAVE не пересекаются адресные зоны можно их выходы объеденять просто через ИЛИ, а и соответственно на их выходы CYC подавать CYC_O от MASTER без какой-либо логики, т.к. те кому данный адрес не соответсвует будут по всем выходным шинам держать низкий уровень. Так ли это? Это вроде понятно. Но вопрос такой. Пытаясь занять шину MASTER поднимает сигнал CYC_O, далее арбитр шины по какому-то алгоритму определяет разрешить ли мастеру занять шину. Если разрешить, то сигнал MASTER'a CYC_O транслируется нужному SLAVE'у. Вопрос как арбитр может показать MASTER'у, что шину занимать нельзя? Или, что пора передать доступ к шине более преоритеному MASTER'у?
  10. Здравствуйте, решил плотно разобраться с тем, как работает шина Wishbone, но после прочтения стандарта многое осталось не ясным. Начну по порядку и опишу, что я понял. Насколько я понял обязательный сигналов шине 10: CLK_I, RST_I, ADR_O, DAT_I, DAT_O, WE_O, SEL_O, STB_O, ACK_I, CYC_O (здесь и далее названия сигналов со стороны мастера). С CLK_I и RST_I вроде все просто — это клок (по переднему фронту) и синхронный ресет. Кстате, насколько важно, чтобы ресет был именно синхронный? Сигнал ADR_O — адрес, который должен быть валиден на момент, когда SLAVE увидит высокий уровень STB_O. Сигнал WE_O — флаг операции (низкий уровень - чтение, высокий — запись), должен быть валиден на момент, когда SLAVE увидит высокий уровень STB_O. Сигнал SEL_O — обязателен, только когда разрядность DAT_I, DAT_O меньше разрядности передаваемых переменных и определяет какой именно байт (при шине 8 бит), слов (при шине 16 бит). Фактически это можно считать младшими битами адреса. Должен быть валиден на момент, когда SLAVE увидит высокий уровень STB_O. DAT_O — данные, которые необходимо записать по данному адресу. ,Должен быть валиден на момент, когда SLAVE увидит высокий уровень STB_O. ACK_I — флаг того, SLAVE успешно принял команду от MASTERа и сформировал валидный ответ или произвел валидную запись. Это первый сигнал, с которым возникли вопросу. 1) Правильно ли я понимаю, что Standart и Pipelinded — это два разных режима работы шины, и в каком режиме шина будет работать фактически определяет разряботчик. 2) Правильно ли я понимаю, что в Standart режиме максимальная частота передачи данных не более 1 слова за 2 такта CLK_I? 3) Допустим в Pipelined режиме MASTER решил передать 3 слова. Он выставляет STB_O и судя по временным диаграммам, если SLAVE работает с той же частотой, то на следующем (втором) такте он выставит ACK_I в высокий уровень. Но вот вопрос, если все синхронно, то MASTER увидит ACK_I только на третьем такте. При этом ему надо уже на втором такте поменять адрес и данные, а он еще не получил сигнал ACK_I. Или в этом случае ACK_I должен быть асинхронно приравнен STB_O и CYC_O? 4) Аналогичная ситуация Pipelined режим и надо прочитать 3 слова. MASTER выставляет STB_O, ADR_O и WE_O=0. На следующем такте SLAVE видит эти сигналы и выставляет ACK_I и DAT_I мастеру. MASTER получит эти значения еще через такт. Вопрос может ли он менять ADR_O при сохранении STB_O=1 или он должен ждать ACK_I . И если должен ждать, то как обеспечивается частота передачи 1 слово за 1 CLK_I? DAT_I — данные, переданные SLAVE при операции чтения. Валидны в момент, когда ACK_I=1. STB_O — строб выполнения операции. Второй сигнал по которому вопрос: В Standart режиме STB_O держится до тех пор пока не увидится ACK_I , а в Pipelined режиме столько тактов CLK_I, сколько надо передать? STALL_I — необязательный сигнал, как я понял при его получении мастер должен оставлять данные ADR_O, WE_O, DAT_O постоянными до ближайшего сигнала ACK, а после хотя бы на 1 такт сделать STB_O=0. CYC_O — сигнал захвата шины. Пока CYC_O=1 MASTER собирается занимать шину. Не понятно, где сигнал от INTERCONNECT, который сообщает мастеру, что он имеет право занять шину. Т.е. во всех примерах CYC_O и STB_O поднимаются одновременно, а что делать, если MASTER решил передать, а другой MASTER в этот момент уже занимает шину? Вообще, вопрос объединения более 2 устройств по шине Wishbone для меня до сих пор остается не ясен. Допустим у нас один MASTER и 4 SLAVE. Мы подали выходы мастера на всех SLAVE и объединив выходы SLAVE через ИЛИ подали их на вход MASTER? Как мастер определяет с каким SLAVE ему сейчас общаться. Видимо по адресу. Т.е. INTERCONNECT должен разбирать какую-то часть адреса из которой выбирать какому из SLAVE устройств передать CYC_O от мастера? Есть ли другие способы? Кстате, не смог найти в стандарте описания, что должно делать устройство, если у него нет такого адреса, который запрашивает мастер. Должно ли оно в этом случае выдавать мастеру ACK_I? Второй пример: 2 MASTER и 2 SLAVE. Как их объеденять? Тоже через ИЛИ? Как MASTERы узнают, что шина занята и они не имеют права выставлять CYC_O? Может ли INTERCONNECT вежливо попросить MASTERа освободить шину, если тот слишком долго ее занимает (чтобы обеспечить равные права по доступу к шине)? Правильно ли я понимаю, что сигнал MASTER LOCK_O нужен, чтобы показать INTERCONNECT, что CYC_O он будет держать до конца и шину не отдаст? Зачем тогда у SLAVE есть LOCK_I, когда по-идее этот сигнал нужен только INTERCONNECT? На некоторые из поставленных вопросов я нашел частичные ответы в стандарте, но я до конце не уверен, что правильно все понял, поэтому решил их задать людям, которые имеют опыт разработки на основе шины Wishbone. Заранее спасибо, тем кто осилит это прочитать и помочь мне ответить на возникшие вопросы. Также прошу меня поправить, если где то выше я что-то понял или изложил не верно?
  11. Можно ли использовать PLI при синтезе в XST для инициализации памяти константами, вычисленными на основе параметров модуля?
  12. Это похоже на правду(и даже хорошо), но тогда не понятно почему они пишут, что он занимает 4500 тайлов и работает на частотах до 60 МГц. Не очень похоже на характеристики аппаратного ядра:( (ну ладно 60 МГц, но зачем ему столько тайлов логики?)
  13. Я тоже так думал, но на радиционно-защищенный ProAsic3 версий с ARM нет. Получается, что с ними лецензию продавать религия не позволяет:)
  14. Возник дурацкий вопрос: у ПЛИС Acyel у каких-то есть поддержка софт ядра Cortex-M1, а у каких-то нет. Так ПЛИС с поддержкой ARM идут с отдельной буквой в номере. Вопрос: на ПЛИС без поддержки ARM это ядро не запуститься вообще, или будет работать менее оптимально, чем на ПЛИС с поддержкой ARM? И если не будет работать, то почему?
  15. Сегодня залили на svn update, который должен решить проблемы с работой под windows
  16. Да, здесь вы правы. Verilator поддерживает только двухуровневые сигналы.
  17. После того, как вы получили ваш матлаб/симулинк модуль вы можете писать тестбенчи на матлаб и проводить моделирование непосредственно в матлаб
  18. Есть средство основанное на симуляторе verilator: vmodel Оно целиком и полностью направлено на написание тестбенчей на Matlab
  19. Можете попробывать vmodel. Он имеет существенный выигрыш в скорости по сравнению с косимуляцией
  20. По сравнению с Icarus значительно быстрее. На сайте verilator дается сравнение, что он в 100 раз быстрее икаруса, и это похоже на правду. С точки зрения удобства: Писать тест-бенчи на матлабе для математических блоков несаизмеримо удобнее, чем на любом другом языке(писал на Verilog и C++). Есть большой встроенный функционал для обработки информации, построения графиков, гистограм и т.д. Моделинг совместо с Simulink позволяет моделировать прошивку ПЛИС совместно с аналоговым железом. Я моделю так прошивку для частотного преобразователя совместно с моделями двигателей. Раньше приходилось отлаживать прямо на железе, т.к. хорошую модель двигателя в виде тестбенча на Veriloge написать очень сложно, если не сказать не возможно. Вообщем, если есть навыки работы с матлаб, то удобство верификации возрастает в несколько раз (она даже начинает доставлять удовольствие:)
  21. Пол года назад я писал здесь о разработанной нами программе, позволяющей моделировать HDL модули написанные на Verilog непосредственно в Matlab. С тех пор исходный код был существенно переработан, исправлены многие недоработки и главное, добавлена возможность моделирования в Simulink. Вкратце напомню основную идею проекта: Процесс моделирования начинается с компиляции модели. Она включает в себя следующие этапы: - HDL модули при помощи Verilator синтезируются в поведенческую модель на C++ - На основе этой поведенческой модели собираются MEX функция для моделирования при помощи M-языка и S-функция для моделирования в Simulink - Формируются обертки для функции, делающие моделирование более удобным Все этапы осуществляются автоматически. Полученная скомпилированная модель может использовать на компьютере без Verilator'а и HDL исходников. Единственное, что требуется для работы - сам MATLAB. Процесс моделирования в MATLAB выглядит следующим образом. При помощи конструктора создается объект тестирования, содержащий поля входов HDL модуля. При помощи M-языка пользователь присваивает входам необходимые значения и запускает на выбор одну из двух функции: 1)Моделировать N-тактов 2)Моделировать до заданного при компиляции условия (например до тех пор, пока выход rdy не станет равным 1). Процесс моделирования в Simulink выглядит еще проще. vmodel генерирует полностью готовый к работе модуль, у которого всего два параметра. Первый параметр Sample time задает период расчет модуля средой Simulink. Второй параметр FPGA frequency определяет частоту ПЛИС. Исходя из этой частоты рассчитывается сколько тактов тактового генератора моделируется на каждом такте расчета Simulink модели. Мы надеемся, что разработанная нами программа облегчит ваш повседневный труд. Проект распространяется под лицензией LGPL и доступен по адресу http://code.google.com/p/vmodel/
×
×
  • Создать...