Jump to content

    

des00

Модераторы
  • Content Count

    8471
  • Joined

Community Reputation

0 Обычный

3 Followers

About des00

  • Rank
    Вечный ламер
  • Birthday 01/14/1980

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

32941 profile views
  1. так, давайте сначала по записи. Судя по коду address и wr_data у вас выставляются одновременно с wrn с мк. При этом вы делаете задержку строба в 2 такта, для работы с асинхронным сигналом. Сходу 3 варианта: 1.Код не менять, но назначить мультициклы или false-path с ограничением пути на пути от address/wr_data 2. Просто хлопнуть code/wr_data в регистрах. 3. декодировать адрес на частоте проца, пропустив его потом через регистр и дождавшись wr_strobe. По чтению, если у вас времянка прописано верно и укладывается с запасом, то откуда тогда там проблемы? Если она не прописана или не правильно учтена, тогда надо смотреть как у вас там сделан стык. Судя по коду, счетчик 3 числа, 4 счечтика 12 чисел, мультиплексор на 12, даже на латтис должен работать на частотах под 200МГц, что не должно быть проблемой для интерфейса на 25МГц. Тут надо внимательно посмотреть на вейвформы интерфейсов и вашу реализованную схему.
  2. Эмм, 21 слой логики по сигналу записи? У вас там синхронная с точностью до такта процессора запись? Если нет, то зачем тянуть всю комбинаторику записи и декодирования адреса до счетчика в лоб, что бы его сбросить или загрузить? Я думал у вас со чтением проблема, а вам надо просто декодировать сигналы записи по месту и раздать на ваши счетчики. Судя по рисункам у вас там что-то вроде cnt_load = write & ena & (addr == PIPA); .. cnt <= cnt_load ? data : (cnt + POPA). хлопните cnt_load и data в регистры и проблема значительно облегчится
  3. не из того же. про автомат мура я уже писал. ну блин, в тетрадке порисуйте различные схемы, как оно там будет работать.
  4. на вопрос вы не ответили, задержка у вас в выходном мультиплексоре или нет? Если ваш ответ "Да", то я вам предлагаю избавиться от этого мультиплексора. Один из вариантов сделать просто аналог "индексной адресации" и вычитывать данные о всей вашей системе пакетом. Реализуется через сдвиговый регистр, который загружает данные всей вашей системы (4-х счетчиков), при чтении базового адреса, после этого каждая следующая транзакция чтения по адресу в окне читает следующие данные. в памяти сей "мультиплексор" присутствует аппаратно, надо только ее забить корректными данными. Один из вариантов "зеркало" - теневая память хранящая копию ваших регистров. В таком случае вы работает с выходом блока памяти, а не кучкой регистров, разбросанных по чипу и собираемых в мультиплексор.
  5. Асинхронной она будет только при дробном масштабировании. В целочисленном случае будет просто сдвиг по фазе, который учитывается временным анализатором. А по поводу проекта, как я понял проблема - основной выходной мультиплексор шины, куда сводится вся информация из регистровых файлов, выполненных на DFF? Если верно, ну так уберите такую кучку регистровых файлов) сделайте пакетную обработку на сдвиговом регистре, сделайте зеркало на блочной/распределенной памяти)
  6. тогда что у вы назваете конвейером? Сколько видел AXIS блоков, это функционально законченные модули. Если back-pressure/handshake отсутствует, там всегда 1ца, только valid передается по цепочке или вообще на все заходит, используясь как clkena. При этом в доке делается оговорка, что есть отход от AXI спецификации. Если же требуется back-pressure/handshake, то он реализуется на памяти/фифо, с таким расчетом, чтобы торможение на выходе, привело к торможению входа и записи к фифо без переполнения. Т.е. акси кухня вешается снаружи вашего вычислительного модуля. А вот этот регистр, используется для других задач. Он нужен в больших акси подсистемах, где количество слоев логики на ready не позволяет достичь высокой тактовой.
  7. странно, ковырял корку XDMA от хилых, как я понял TLP транзакция там может быть переменного размера, от 4-х до 512 байт. Правда это внутри самой корки. Как это реализовано со стороны CPU я не изучал
  8. да нет там проблемы, я уже несколько раз писал, что не надо теоретизировать об автомате в вакууме, речь про конкретный случай, конкретного применения. Вы код ТС и суть его вопросов вообще читали? он ловит тупо один такт с проца, длительностью в 1 такт частоты до 162МГц. Ловит скорее всего на частотах порядка 200-300МГц. Автомат, перейдя в любое состояние от текушего уже выполнит свою программу, а именно сигнализирует о том, что факт события был. А зависший автомат, у него падает в то самое ожидание, где этот импульс, который длится порядка 1.5-2 тактов частоты его автомата, будет уже нормальным импульсом и автомат тем более выполнит свою задачу. В том то и дело, что следуя докам о современных чипах, эта частота уже составляет величины до 300МГц и более того, олдскульная рекомендация 2-3 триггера уже не актуальна. Ссылку не дам, но читал пару лет назад wp на сайте хилых, про седьмое семейство. Там уже шли выводы в разрез Кена Чапмена и Ко по CDC. ЗЫ. Зачем именно так делает ТС, мне не ведомо, но решение имеет место быть. Да оно не каноническое, но все же предлагаю закончить дискус сей
  9. Сомнения в чем: в коде axis_register.v, в вашем понимании стандарта или в чем то еще? ИМХО стандарт на AXI крайне желательно прочитать пару раз, там подробно разобраны эти моменты.
  10. ок, ну значит не может он по другому, в данном случае. А может быть делает специально, например тактовая с трансивера у вас идет на глобальную линию. А зайти она может туда только через CLKCTRL блок, которые ЕМНП стоят по углам ПЛИС, вон он и тащит тактовую через гремучий лес, а что бы ваши данные к ней подровнять(предположим), он вынужен их также тянуть через гремучий лес. Проверьте этот момент. У хилых для такого есть кучка локальных тактовых буферов, расставляемых в ручную. Позволяют быстро закинуть данные в логику, как у алтеры уже не помню)
  11. Это просто цифры используемые для рассчета slack. Как они образуются смотреть используя команду Report Path с меткой Full Path или Detailed path. Там будет указано все через что проходит сигнал и каково требуемое время прихода сигнала.
  12. Это не общий случай. зачем предсказывать, я же не даром указал условия "самосинхронный автомат", т.е. автомат, который попадая в любое состояние после события, выполнит свою "программу", автомат мура: т.е автомат, на выходе которого только регистровые сигналы, зависящие от состояния. И даже если они попадут в метастабильное состояния, то, как я тоже подчеркнул, на современных плис и разумных частотах, дальше этого регистра это состояние не пройдет. Но дабы прекратить, как я понимаю пустую дискуссию, давайте положим что вы бесусловно правы, а я "вечный ламер" люблю заблуждаться и летать в облаках.
  13. угу, также как и ошибка внутренних триггеров CDC это уже ошибка всей системы)) я же специально указал, что КА у ТС это и есть CDC, т.е. устройство специально спроектированное для работы со внутренними ошибками. Это его задача. Не надо сравнивать это с другими управляющими структурами. ну зачем это надо ТС, только ему знать. Он дал пояснения по этому вопросу.
  14. это ошибка, но это ошибка этого автомата, не приводящего к ошибке в системе, при корректном проектировании. По сути тот же CDC, ошибка же в нем тоже появляется и это его нормальная работа, а вот за CDC она уже не выходит.