-
Постов
774 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Весь контент alexadmin
-
Чтобы сделать порты независимыми надо реализовать их в разных функциях. И запускать их в независимых процессах ;) В данном случае функция при очередном запуске упирается в отсуствие данных по одному из аргументов и ОСТАНАВЛИВАЕТСЯ. Т.е. ждет, пока данные не появятся. Все что при этом происходит по другому порту-аргументу ее сейчас не интересует.
-
Черт, меня раскрыли как я ни шифровался. У меня действительно в цикле назначения происходят. Надо же чего придумали, злодеи... Спасибо!
-
На a(3) как только до a(2) доходят со входа ненулевые значения. Как будто двойной драйвер с разными значениями, но в тексте его не видно, да и синтез идет без проблем.
-
у меня 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);
-
Имеется массив типа (пишу утрированно ибо в оригинальном коде много лишнего): array TAr is array (0 to 3) of std_logic_vector(31 downto 0); signal ar : TAr; далее элементы 0, 1, 2 назначаю внутри одного и того же синхронного процесса, элемент 3 - асинхронно вне процесса В моделсиме вроде как это работало нормально. Синтезируется вивадой тоже без вопросов. Но при попытке прогнать через Vivado Simulator - сыплет X-ами. Кто врет?
-
Когда-то занимался запуском SATA на Kintex7 - были примерно похожие проблемы. SATA2 работал (да и SATA3), SATA1 так и не взлетел. Списал на настройки трансивера /которые можно крутить до бесконечности/, благо что сильной потребности в том режиме не было.
-
Я работал конкретно с синтезатором LMK04828. У него есть возможность формироват sysref однократно (что рекомендуется TI) или периодически. Импульсы порождаемые на sysref являются деленным в определенное число раз (16-32) клоком идущим на АЦП. И там, как мне кажется, формировать этот syref можно по команде через SPI либо аппаратным сигналом от FPGA. В любом случае это является лишь командой для начала формирования, а непосредственно за формирование отвечает LMK.
-
Формально да - берется специальный синтезатор, который порождает sysref в заданной фазе относительно клока. Если рассматривать этот sysref - чисто как путь отступления, то можно нагородить схемку, которая бы работала на базе клока трансивера (порождаемого из клока АЦП) и могла дергать sysref с возможностью, к примеру, изменения задержки в выходном пине. Задержку, если что-то пойдет не так, выбирать экспериментально.
-
Не готов утверждать 100%. Для subclass 0 sysref не нужен. Но в таком режиме я ни разу не пытался работать, так что своим опытом подтведить не могу. Я бы в данном случае не пожалел подключить sysref к самой FPGA, чтобы перестраховаться. Если не понадобится - ну и слава богу.
-
На АЦП в том или ином виде его может быть необходимо подать, иначе АЦП не войдет в рабочий режим (надо индивидуально читать про чип). Можно сформировать однократный импульс, в некоторых китах его попросту от механической кнопки запараллеливают. Со стороны FPGA опять-таки - если свое ядро, то не использовать, если чье-то - надо читать описание, sysref может быть обязательным для входа в режим выдачи данных пользователю.
-
Если только один АЦП и не стоит вопрос строго фиксированной задержки, то по сути вся корка - правильно настроить трансивер (ну почти). Все что там накручено в стандарте в первую очередь обращено на систему с несколькими АЦП работающими синфазно и обеспечение строго фиксированной задержки от момента сэмплирования до получения данных внури FPGA. Хотя если главное время, то, конечно, купить...
-
Как не во всех? ilogic/ologic вроде везде же присутствует?
-
Вопрос чуть в сторону - а регистры в пинах стоят? Это бы значительно упростило жизнь.
-
Для уже скомпилированного проекта можно запустить временой анализ для другого speed grade (в виваде, по окрайней мере). Что навеваем мысли что должно уметь работать. По крайней мере в какие-то давние времена когда ставил неправильный speed grade работало без проблем.
-
Постою послушаю (ц) У меня сложилось ощущение, что у них очень глючная инфраструктура работы отладчика по JTAG. В свое время я попал в полный тупик, когда обнаружил, что Chipscope и дебагер микроблейза вместе не хотят работать - пошаговое исполнение программ намертво повисает в случайный (весьма быстрый) момент времени.
-
Если "из программы", то нужно передать управление на точку входа в вашу программу, т.е. по адресу 0 в памяти программ (для стандартной конфигурации). Но это вряд ли надежно. У библиотечного таймера альтеровского есть специальный watchdog режим, формирующий сигнал сброса для всей системы. Но все равно это будет работать только если программа в памяти не повреждена. Если вследствии неправильной работы она сама себя затирает - не спасет. Хотя правильнее все же найти где баг ;)
-
С платой не работал, но у них там целая тема есть New feature: high speed continuous recording Если там цинк с аппаратным контроллером DDR3, то по производительности вроде как должно хватать. Скорее всего в оригинале поленились это делать, просто сохраняя данные во внутреннюю память FPGA.
-
Есть брутальнее и надежней - вставить явное ядро сигналтапа в код и подключить к нему нужные сигналы.
-
Удивительное дело, у меня тоже как раз открыта дока на этот АЦП (их случайно не камаз целый в обход таможни завезли?). И в инструкции (стр. 43) ясно написано, что в режиме, к примеру 1:4 Demux DES Mode вы будете четыре последовательных отсчета со входа иметь на параллельных выходах в следующей последовательности: DQd, DId, DQ, DI. Т.е. для вашего примера (при условии сэмплирования на 3.6G) на выходе всегда будут присуствовать константы 0 1 0 1. Ну а где какие биты будут переключаться зависит от уровней сигналов.
-
SV task outputs
alexadmin ответил alexadmin тема в Языки проектирования на ПЛИС (FPGA)
О! Я знал что не может быть все так грустно. Спасибо. -
Была подобная фигня, спасся переходом с 64 на 32-битную версию. Причин так и не нашел.
-
SV task outputs
alexadmin опубликовал тема в Языки проектирования на ПЛИС (FPGA)
Коллеги, я тут давеча посмотрел вебинар на тему Common mistakes in SystemVerilog и был удивлен настолько, что сразу побежал проверять в симулятор, вдруг я чего не понял. А как проверил - сразу сюда. Так вот, удивление вызвал факт, что выходы задач обновляются в момент завершения всей задачи. В VHDL я частенько использую процедуры чтобы из них генерировать длительные транзакции на шинах. Дальше подключал процедуру к нужным портам. А тут мне поведали что так нельзя, а нужно (если хочется из задачи) рулить сигналами верхнего уровня, т.е. глобально в обход портов задачи. Собственно вопрос - а как в реальной жизни-то делается, если, скажем, хочется организовать подпрограмму, которая бы могла работать с разными наборами сигналов (3 шины, скажем)? -
[Зеленоград] FPGA-разработчики
alexadmin ответил Aaron тема в Предлагаю работу
Требуют водителя для управления автопоездом и ни слова о том, что надо уметь крутить руль и доставать до педалей! -
В .xdc: set_property IOB TRUE [get_cells {*}]
-
Тут явно речь шла про препоны, ставящиеся нашими таможенниками, а не вражеским экспортным контролем. Так что все эти вопросы, по хорошему, берет на себя дистрибьютер. Если везешь сам и нету экспертов по таможенному оформлению и соответствующей юр. поддержки - придется дать на лапу таможенникам - только совершенно законно, т.е. пойти к таможенному брокеру.
