ezk13
Участник-
Постов
25 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о ezk13
-
Звание
Участник
Посетители профиля
698 просмотров профиля
-
Добрый день! Подскажите, уже голову сломал не могу найти где косяк: Есть плата US+, на PL-части по AXI-Stream передаются пакеты от 16 Б до 96 Б в DataMover (DM настроен на бёрст 16Б, при шине 128 бит) далее, через интерконнект шина идёт на S_AXI_HPC0_FPD и затем на PS-DDR. На baremetal PS-части по прерыванию пытаюсь писать данные из DDR в буфер: for (uint32_t valid_addr = last_addr; valid_addr < next_addr; valid_addr += 8) { payload[it] = Xil_In64(PS_DDR_BASEADDR + valid_addr); it++; } Пытался перед записью в буфер инвалидировать кэш, разными способами: Xil_DCacheInvalidateRange((UINTPTR)cacheline_addr, cacheline_len); Результат один - после N-го количества запросов виснет цинк в Xil_SyncAbortHandler() Но, при этом данные идут корректные, пока не зависнет. Комментировал код выше и оно всё равно зависает т.е. похоже дело в какой-то рассинхронизации. Что делал ещё: Активировал в DataMover кэши (AxCACHE, AxUSER) и пробросил их в цинк: /* Setting up caches for DataMover * AxCACHE[3:0] Attribute * ------------------------------------------------------------------------------------------- * | WA | RA | C | B | Description | Comments * |----|----|---|---|------------------------------------------------------------------------ * | 0 | 0 | 0 | 0 | Non-cacheable, non-bufferable | 0x0 , * | 0 | 0 | 0 | 1 | Bufferable only | 0x1 , * | 0 | 0 | 1 | 0 | Cacheable but do not allocate | 0x2 , * | 0 | 0 | 1 | 1 | Cacheable and bufferable, do not allocate | 0x3 , * | 0 | 1 | 1 | 0 | Cacheable write-through, allocate on read | 0x6 , * | 0 | 1 | 1 | 1 | Cacheable write-back, allocate on read | 0x7 , * | 1 | 0 | 1 | 0 | Cacheable write-through, allocate on write | 0xA , * | 1 | 0 | 1 | 1 | Cacheable write-back, allocate on write | 0xB , * | 1 | 1 | 1 | 0 | Cacheable write-through, allocate on both read and write | 0xE , * | 1 | 1 | 1 | 1 | Cacheable write-back, allocate on both read and write | 0xF , * * AxUSER[1:0] Attribute * 0x0 Non Shareable * 0x1 Inner Shareable * 0x2 Outer Shareable */ Пробовал разные комбинации совместно с тем, что прописано в xil_cache.h. При некоторых комбинациях проц. не зависает, но и данные не пишутся в память. Читал и делал как в AR69446 - Zynq UltraScale+ MPSoC Example Design - Use AXI HPC port to perform coherent transfers Подскажите, как-нибудь можно заставить работать подобную схему? Как правильно настроить кэширование или работать без него, если в нем проблема? Проверял на чипскопе шину S_AXI_HPC0_FPD SLVERR при записи нет.
-
Спасибо, учту!
-
Спасибо, буду копать в этом направлении
-
Подскажите, как убрать мелкие фрагменты кусков трасс при дифференциальной трассировке (и не только)? Вместо того, что бы создать прямые линии под 45 градусов лейаут накручивает кучу ненужных изгибов. Хотелось бы: А так сейчас:
-
А если выделить контактные площадки(КП), создать фаноуты, то между КП и переходным отверстием трасса будет шириной, указанной в пользовательской схеме или по схеме мастера?
-
Никак не могу победить Rule Area заданную в CES. Делаю всё стандартно, по гайдам и мануалам, но что-то не выходит. Задача тривиальная: сделать область правил для BGA. Создаю схему в CES, меняю в ней, скажем, толщину трасс, далее импорт в топологию. Затем рисую область и BGA Fanouts ... В итоге, он всё равно рисует трассу от шарика до переходного отверстия такой толщины, которая задана в Schemes -> Master, а должен Schemes -> Fine_Pitch_BGA_Area Подскажите, где косяк? версия VX.2.1
-
-
fill, подскажите пожалуйста: есть готовая электрическая схема с ПЛИС, хочу распутать цепи приходящие от ПЛИС к шинам ЦАП и АЦП в xDx I/O Designer перед трассировкой. Возможен ли маршрут xDx Designer -> экспорт в xDx I/O Designer -> оптимизация, экспорт обратно xDx Designer -> xPCB и т.д. без использования HDL & XDC файлов, чисто импорт сигналов из дизайнера? Поковырял Import в I/O, ни в какую. Похоже, что он может импортировать путём import -> constraint manager costraints, но пишет в консоле что всё импортировано, но на деле сигналов никаких нет. # importdesign -idx -toplevel 2M-DES_r0 -mapfile 2MDES_r0 -oatfile 2M-DES_r0 -cddbfile 2M-DES_r0 -refdes DD2 -vendor xilinx -tool {vivado 2016.2} -family artix-7 -device 7a200t -package fbg484 -import_only_assignments -wizard путь/проект.prj {{} {} pcb signals_from_nets default_lib} A pin 'A1' is connected to the electrical net 'ADC_DQd_N0' in the Constraint Manager, but has no equivalent signal in the xDX I/O Designer. A pin 'A11' is connected to the electrical net 'GND' in the Constraint Manager, but has no equivalent signal in the xDX I/O Designer. ... The constraints has been successfully imported. При синхронизации пишет, что всё у него Match и никаких изменений. В чём может быть дело и как правильно делать экспорт в IOD из xDxD?
-
Да, в ЦБ. Спасибо, fill!
-
Подскажите пожалуйста, сделал себе рамку A1 для сборочного чертежа путём импорта dxf-файла автокада в cell editor, присвоил пользовательский слой Fab_titleblock1. Но в редакторе топологии моего проекта этой рамки нет, собственно я сделал ради эксперимента импорт рамки из тренинга, но и этой рамки тоже не оказалось в проекте. Что я упускаю? Я помню, что мне это как-то удавалось, но к сожалению я потёр старый файлы с компьютера :twak:
-
Класс! Спасибо!
-
чёрная магия, благодарю Вас!
-
А можно поподробней, чего-то не работает. Пробовал двумя способами: вручную, через Tools > Types Compatibility и через консоль: changetypescompatibilities -set GND AnalogGND и assign_special GND K9. В строке пин K9 нет сигнала GND.
-
Вопрос: а можно ли, в xDX I/O Designer комбинировать сигналы ПЛИС c типом CONFIG, например с питанием. Или питание разных частей ПЛИС между собой, то же самое относится и к земле. Пример 1: мне нужно закоротить конфигурационный пин, скажем M0 на землю (GND). Я могу это сделать через последовательный резистор, и тогда вопросов нет, как эта часть (от ПЛИС к резистору) обзовётся меня не волнует. А вот что бы напрямую подключить пин к земле, мне нужно объявить его сигналом GND. Но я не могу этого сделать из-за конфликта. Или для этого предусмотрен какой-то более простой способ? Пример 2: У меня есть цепи питание ПЛИС, которые мне бы хотелось объединить между собой, например питание трансиверов MGTAVСС и питание ядра ПЛИС VCCINT от +1 В. Но в один сигнал они ну никак не хотят впихиваться. Аналогично земле, зачем создавать разные сигналы для земли, например для встроенного АЦП, если я его не использую и т.д. Я так понимаю для питания надо редактировать настройку PCB Signal Generation? Из чистого любопытства я переименовал землю АЦП AnalogGND в просто GND, но она по прежнему не хочет добавляться в общий сигнал GND
-
Помогло, спасибо!