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

alexadmin

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    1

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


  1. Чтобы сделать порты независимыми надо реализовать их в разных функциях. И запускать их в независимых процессах ;) В данном случае функция при очередном запуске упирается в отсуствие данных по одному из аргументов и ОСТАНАВЛИВАЕТСЯ. Т.е. ждет, пока данные не появятся. Все что при этом происходит по другому порту-аргументу ее сейчас не интересует.
  2. Черт, меня раскрыли как я ни шифровался. У меня действительно в цикле назначения происходят. Надо же чего придумали, злодеи... Спасибо!
  3. На a(3) как только до a(2) доходят со входа ненулевые значения. Как будто двойной драйвер с разными значениями, но в тексте его не видно, да и синтез идет без проблем.
  4. у меня process(clk) if rising_edge(clk) then ar(0) <= inp; ar(1) <= ar(0); ar(2) <= ar(1); end if; end process; ar(3) <= ar(2);
  5. Имеется массив типа (пишу утрированно ибо в оригинальном коде много лишнего): array TAr is array (0 to 3) of std_logic_vector(31 downto 0); signal ar : TAr; далее элементы 0, 1, 2 назначаю внутри одного и того же синхронного процесса, элемент 3 - асинхронно вне процесса В моделсиме вроде как это работало нормально. Синтезируется вивадой тоже без вопросов. Но при попытке прогнать через Vivado Simulator - сыплет X-ами. Кто врет?
  6. Когда-то занимался запуском SATA на Kintex7 - были примерно похожие проблемы. SATA2 работал (да и SATA3), SATA1 так и не взлетел. Списал на настройки трансивера /которые можно крутить до бесконечности/, благо что сильной потребности в том режиме не было.
  7. Я работал конкретно с синтезатором LMK04828. У него есть возможность формироват sysref однократно (что рекомендуется TI) или периодически. Импульсы порождаемые на sysref являются деленным в определенное число раз (16-32) клоком идущим на АЦП. И там, как мне кажется, формировать этот syref можно по команде через SPI либо аппаратным сигналом от FPGA. В любом случае это является лишь командой для начала формирования, а непосредственно за формирование отвечает LMK.
  8. Формально да - берется специальный синтезатор, который порождает sysref в заданной фазе относительно клока. Если рассматривать этот sysref - чисто как путь отступления, то можно нагородить схемку, которая бы работала на базе клока трансивера (порождаемого из клока АЦП) и могла дергать sysref с возможностью, к примеру, изменения задержки в выходном пине. Задержку, если что-то пойдет не так, выбирать экспериментально.
  9. Не готов утверждать 100%. Для subclass 0 sysref не нужен. Но в таком режиме я ни разу не пытался работать, так что своим опытом подтведить не могу. Я бы в данном случае не пожалел подключить sysref к самой FPGA, чтобы перестраховаться. Если не понадобится - ну и слава богу.
  10. На АЦП в том или ином виде его может быть необходимо подать, иначе АЦП не войдет в рабочий режим (надо индивидуально читать про чип). Можно сформировать однократный импульс, в некоторых китах его попросту от механической кнопки запараллеливают. Со стороны FPGA опять-таки - если свое ядро, то не использовать, если чье-то - надо читать описание, sysref может быть обязательным для входа в режим выдачи данных пользователю.
  11. Если только один АЦП и не стоит вопрос строго фиксированной задержки, то по сути вся корка - правильно настроить трансивер (ну почти). Все что там накручено в стандарте в первую очередь обращено на систему с несколькими АЦП работающими синфазно и обеспечение строго фиксированной задержки от момента сэмплирования до получения данных внури FPGA. Хотя если главное время, то, конечно, купить...
  12. Вопрос чуть в сторону - а регистры в пинах стоят? Это бы значительно упростило жизнь.
  13. Для уже скомпилированного проекта можно запустить временой анализ для другого speed grade (в виваде, по окрайней мере). Что навеваем мысли что должно уметь работать. По крайней мере в какие-то давние времена когда ставил неправильный speed grade работало без проблем.
  14. Постою послушаю (ц) У меня сложилось ощущение, что у них очень глючная инфраструктура работы отладчика по JTAG. В свое время я попал в полный тупик, когда обнаружил, что Chipscope и дебагер микроблейза вместе не хотят работать - пошаговое исполнение программ намертво повисает в случайный (весьма быстрый) момент времени.
  15. Если "из программы", то нужно передать управление на точку входа в вашу программу, т.е. по адресу 0 в памяти программ (для стандартной конфигурации). Но это вряд ли надежно. У библиотечного таймера альтеровского есть специальный watchdog режим, формирующий сигнал сброса для всей системы. Но все равно это будет работать только если программа в памяти не повреждена. Если вследствии неправильной работы она сама себя затирает - не спасет. Хотя правильнее все же найти где баг ;)
  16. С платой не работал, но у них там целая тема есть New feature: high speed continuous recording Если там цинк с аппаратным контроллером DDR3, то по производительности вроде как должно хватать. Скорее всего в оригинале поленились это делать, просто сохраняя данные во внутреннюю память FPGA.
  17. Есть брутальнее и надежней - вставить явное ядро сигналтапа в код и подключить к нему нужные сигналы.
  18. Удивительное дело, у меня тоже как раз открыта дока на этот АЦП (их случайно не камаз целый в обход таможни завезли?). И в инструкции (стр. 43) ясно написано, что в режиме, к примеру 1:4 Demux DES Mode вы будете четыре последовательных отсчета со входа иметь на параллельных выходах в следующей последовательности: DQd, DId, DQ, DI. Т.е. для вашего примера (при условии сэмплирования на 3.6G) на выходе всегда будут присуствовать константы 0 1 0 1. Ну а где какие биты будут переключаться зависит от уровней сигналов.
  19. О! Я знал что не может быть все так грустно. Спасибо.
  20. Была подобная фигня, спасся переходом с 64 на 32-битную версию. Причин так и не нашел.
  21. Коллеги, я тут давеча посмотрел вебинар на тему Common mistakes in SystemVerilog и был удивлен настолько, что сразу побежал проверять в симулятор, вдруг я чего не понял. А как проверил - сразу сюда. Так вот, удивление вызвал факт, что выходы задач обновляются в момент завершения всей задачи. В VHDL я частенько использую процедуры чтобы из них генерировать длительные транзакции на шинах. Дальше подключал процедуру к нужным портам. А тут мне поведали что так нельзя, а нужно (если хочется из задачи) рулить сигналами верхнего уровня, т.е. глобально в обход портов задачи. Собственно вопрос - а как в реальной жизни-то делается, если, скажем, хочется организовать подпрограмму, которая бы могла работать с разными наборами сигналов (3 шины, скажем)?
  22. Требуют водителя для управления автопоездом и ни слова о том, что надо уметь крутить руль и доставать до педалей!
  23. Тут явно речь шла про препоны, ставящиеся нашими таможенниками, а не вражеским экспортным контролем. Так что все эти вопросы, по хорошему, берет на себя дистрибьютер. Если везешь сам и нету экспертов по таможенному оформлению и соответствующей юр. поддержки - придется дать на лапу таможенникам - только совершенно законно, т.е. пойти к таможенному брокеру.
×
×
  • Создать...