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

ezk13

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

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

  • Посещение

Репутация

0 Обычный

Информация о ezk13

  • Звание
    Участник
    Участник

Посетители профиля

681 просмотр профиля
  • KiV

  1. Добрый день! Подскажите, уже голову сломал не могу найти где косяк: Есть плата 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 при записи нет.
  2. Спасибо, буду копать в этом направлении
  3. Подскажите, как убрать мелкие фрагменты кусков трасс при дифференциальной трассировке (и не только)? Вместо того, что бы создать прямые линии под 45 градусов лейаут накручивает кучу ненужных изгибов. Хотелось бы: А так сейчас:
  4. А если выделить контактные площадки(КП), создать фаноуты, то между КП и переходным отверстием трасса будет шириной, указанной в пользовательской схеме или по схеме мастера?
  5. Никак не могу победить Rule Area заданную в CES. Делаю всё стандартно, по гайдам и мануалам, но что-то не выходит. Задача тривиальная: сделать область правил для BGA. Создаю схему в CES, меняю в ней, скажем, толщину трасс, далее импорт в топологию. Затем рисую область и BGA Fanouts ... В итоге, он всё равно рисует трассу от шарика до переходного отверстия такой толщины, которая задана в Schemes -> Master, а должен Schemes -> Fine_Pitch_BGA_Area Подскажите, где косяк? версия VX.2.1
  6. Благодарю! Я жмакал основную строчку в иерархии :twak:
  7. 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?
  8. Подскажите пожалуйста, сделал себе рамку A1 для сборочного чертежа путём импорта dxf-файла автокада в cell editor, присвоил пользовательский слой Fab_titleblock1. Но в редакторе топологии моего проекта этой рамки нет, собственно я сделал ради эксперимента импорт рамки из тренинга, но и этой рамки тоже не оказалось в проекте. Что я упускаю? Я помню, что мне это как-то удавалось, но к сожалению я потёр старый файлы с компьютера :twak:
  9. А можно поподробней, чего-то не работает. Пробовал двумя способами: вручную, через Tools > Types Compatibility и через консоль: changetypescompatibilities -set GND AnalogGND и assign_special GND K9. В строке пин K9 нет сигнала GND.
  10. Вопрос: а можно ли, в xDX I/O Designer комбинировать сигналы ПЛИС c типом CONFIG, например с питанием. Или питание разных частей ПЛИС между собой, то же самое относится и к земле. Пример 1: мне нужно закоротить конфигурационный пин, скажем M0 на землю (GND). Я могу это сделать через последовательный резистор, и тогда вопросов нет, как эта часть (от ПЛИС к резистору) обзовётся меня не волнует. А вот что бы напрямую подключить пин к земле, мне нужно объявить его сигналом GND. Но я не могу этого сделать из-за конфликта. Или для этого предусмотрен какой-то более простой способ? Пример 2: У меня есть цепи питание ПЛИС, которые мне бы хотелось объединить между собой, например питание трансиверов MGTAVСС и питание ядра ПЛИС VCCINT от +1 В. Но в один сигнал они ну никак не хотят впихиваться. Аналогично земле, зачем создавать разные сигналы для земли, например для встроенного АЦП, если я его не использую и т.д. Я так понимаю для питания надо редактировать настройку PCB Signal Generation? Из чистого любопытства я переименовал землю АЦП AnalogGND в просто GND, но она по прежнему не хочет добавляться в общий сигнал GND
×
×
  • Создать...