Jump to content

    

Vadim_nsk

Участник
  • Content Count

    78
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Vadim_nsk

  • Rank
    Частый гость
  • Birthday 10/01/1978

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1805 profile views
  1. Похоже, это то, что я искал (SpinalHDL). Я и не думал, что их так много...
  2. Здравствуйте. Поиск по форуму и по гуглу ничего не дает потому, что я даже примерно не помню как это называется. В общем, есть два языка высокого уровня, один транслируется в VERILOG, второй в VHDL. Оба алгоритмические вроде С++ (не языки описания схемы/архитектуры). Очень хочется пощупать эти две вещи, но хоть убей, не помню как они называются. Может кто узнал этих товарищей по моему скудному описанию? Есть варианты? Оба языка дают именно синтезируемые языковые конструкции, поэтому System-C не предлагать.
  3. Вот с этим у меня как раз проблема. Я не знаю как перевести в КИХ-эквивалент. Пока я это делаю "на глазок", примерно подбираю окно скользящего среднего так, чтобы результат был максимально похожим и беру размер окна скользящего среднего за репер. Но хотелось бы автоматизировать этот процесс в Octav.
  4. Здравствуйте Подскажите пожалуйста, какой это фильтр и как вычислить величину его групповой задержки: Yi = (k/m) * Yi-1 + Xi * (1 - (k/m)) где Yi - текущее выходное значение фильтра Yi-1 - предыдущее выходное значение фильтра Xi - текущее входное значение фильтра k,m - весовые коэффициенты фильтра Этот фильтр очень похож на аналоговый RC-фильтр. В цифровом эквиваленте он на мой взгляд похож на CIC-фильтр. Проблема в том, что я не знаю как вычислить величину групповой задержки этого фильтра.
  5. Вот это поворот... Вы абсолютно правы. Постоянно генерируя разные варианты, создал еще один дизайн и не заметил, что не переключился на него. Спасибо. Теперь у меня есть хоть какая-то рабочая отправная точка, откуда можно двигаться к первоначальному варианту. А не подскажете еще одну вещь? В настройках AXI_Interconnect есть настройки слоя регистров: равносильно ли это добавлению отдельного компонента axi_register_slice, как у меня в последнем дезайне? Или лучше не трогать эту настройку, а вставлять внешний регистр? Согласен. Но АЦП использует порт HPC FMC, а на оценочной плате Zynq лишь LPC FMC, поэтому SPI там уже не поместился. Пришлось городить мосты IICtoSPI. Второй момент, что купить несколько плат с двумя FMC это дорого, для программистов верхнего уровня купили простые платы, где грубо говоря только Zynq и память :-( и нужно будет меняя только прошивку FPGA заставить работать Linux в разных условиях одинаково. В дальнейшем будет итоговая плата, а не зоопарк оценочных, где все еще раз поменяется. Вот чтобы этот зоопарк не плодить наверху, я и планировал реализовать это внизу, на MB. Иначе, придется наверху проверять состав железа и ее конфигурацию. Может я и не прав, но мне это показалось более сложным в реализации. Но я еще раз пересмотрю вариант с реализацией нижнего уровня в драйверах Linux.
  6. Дизайн сейчас выглядит вот так: Как видно MB в нем нет. Клоки мне пришлось пропустить через wiz_clk, иначе он ругался, также пришлось поступить и с ресетами. Напрямую из цинка он их не хочет использовать. Специально вставил ряды регистров в шину AXI, но на времянку это не сильно сказалось. Маршруты просто огромные. Может у кого-нибудь есть туториал, где бы шина HP использовалась и где можно посмотреть как это правильно делать. Человек вот тут вроде все доходчиво объясняет, но исходников я его не нашел: https://www.youtube.com/watch?v=TtzZ0_V9ZH0 Проект находится тут: https://drive.google.com/open?id=1bl1fjn8TvNMMumgUC5R_o5WMfoh32Too Представленный выше дизайн: "design_1"
  7. Помогите мне пожалуйста в этом немного. У меня есть файл: timing_1.rpx, но к сожалению я в нем не могу найти вот это:
  8. Я вас услышал, учел, выбросил MB, собрал систему без него, но ситуация осталась без изменения. Тайминг 16 нс, и я не могу его снизить до нормального уровня и не понимаю что для этого нужно сделать.
  9. Необходимо к плате EK-Z7-ZC702-G через разъем FMC подключить модуль АЦП SFM-4A250. Несовместимость разъемов FMC в данном случае можно считать задачей уже решенной. Модуль АЦП SFM-4A250 содержит в своем составе два двухканальных АЦП ADS62P49 разрядностью 14 бит с рабочей частотой 250 МГц. Также в составе модуля имеется программируемый генератор и программируемый раздатчик тактового сигнала. Но прежде чем бросаться на амбразуру и писать компонент захвата данных с шины АЦП, решил набросать часть схемы до Zynq. Компонент захвата данных АЦП оформил в виде кастомного, т.к. в дальнейшем туда потребуется дописать код, относящийся уже собственно к разрабатываемому прибору. Но пока достаточно и просто оцифровки данных с АЦП и их передачу в память DDR Zynq. DMA в проект добавляется автоматически, я бы его не добавлял и формировал запись собственными средствами в нужную область памяти. Но при создании порта AXI_Full его не удается подключить к Zynq_HP, а при создании AXI_Stream и подключении его к Zynq_HP, он автоматом добавляет туда еще DMA и AXI_Interconnect. Ну, добавляет и добавляет. Вот только по частоте этот слоеный пирог не проходит... :-( Упрощенный вариант
  10. Меня одного пугают времена в 24 нс? У кого-то может есть рабочий "пустой" проект, который можно было бы посмотреть и взять за основу. Просто кастомный AXI-stream компонент прикрутить к порту HP Zynq. Если не ошибаюсь, без DMA и AXI_Interconnect он это не позволит сделать. Т.е. получится что-то вроде моего, только у меня 2 HP порта задействовано.
  11. Да тут как раз все просто. На ARM в дальнейшем будет поднят Linux. На отладочной плате ввиду дефицита свободных пинов реализован SPI до генераторов плат АЦП и ЦАП через мост IICtoSPI, да еще и сам IIC через разветвитель на отладочной плате сделан. На реальном железе потом все будет отдельно, но сейчас вот так монструозно. А программист ARM это программист высокого уровня и объяснять ему как настроить генератор для компенсации фаз в разных АЦП, есть там еще какой-то раздатчик клоков (сам еще не изучал что это за зверь), да еще и чтобы все это протолкнуть через 2-3 моста, а потом еще мне же и искать в обнимку с осциллографом, почему же не работает "железо" с написанным этим программистом драйвером. Тут я как раз в большей степени с вами согласен, поэтому отделил мух от котлет и откусил эту часть от ARM, поместив в MB. Но сохранил возможность доступа к этой периферии со стороны ARM. Хотя на данном этапе можно и удалить всю эту часть. Просто она особняком стоит, в сообщениях не фигурирует, а вся проблема как раз в связке АЦП -> AXI_FIFO -> AXI_DMA_ -> AXI_Interconnect -> Zynq_HP. Но если тяжело воспринимать это отдельно от остального, в понедельник откушу все лишнее и попробую снова, но думаю, проблема останется.
  12. Общая структура проекта. Тут понатыкано всяких VIP клоков просто уже от безысходности, понимаю, что они работают лишь на этапе симуляции, но думал, может выдадут сообщение об ошибке. Но, нет. Часть микроблейза: Часть Zynq: Смущающее меня сообщение: Отчет тайминг-аналайзера: И вот эти пути пугают больше всего: И почему-то с добавлением регистров или FIFO в интерконнекторы или отдельных FIFO ситуацию не улучшают, а порой ухудшают. Кто как делает свои компоненты и сажает их на пор HP?
  13. В двух словах. Во-первых, это мой первый опыт с Zynq, во-вторых, не могу уловить суть работы с потоковой шиной AXI-Stream. Или не понимаю сообщений от тайминг-аналайзера. Теперь подробней... Перед собственно запуском АЦП, наслушавшись как в Zynq все быстро и удобно, посмотрев несколько видео, и почитав несколько статей, создал простой проект, где Microblaze для конфигурирования в будущем АЦП и ЦАП, а ARM уже для работы с данными. Есть общая память между Zynq и Microblaze, есть общая периферия. Частота работа с периферией 50 Мгц. Раньше делал со стороны ARM 100 МГц, сейчас сделал поменьше. Не уверен, что выходную частоту процессорного ядра можно использовать в FPGA безболезненно, поэтому пропустил на всякий случай клок через Clock-wizard. Создал пару кастомных компонентов куда в дальнейшем перекочует работа с АЦП и ЦАП соответственно. И для проверки "скелета" все соединил и собрал. Сообщения про времянки уверяют меня, что ничего не работает. Пробовал вставлять регистры, вставил двухклоковую FIFO, опустил частоту работы с портом HP до смешных значений. Увеличил разрядность с 32 до 64 разрядов, завел два выхода в компоненте и использовал сразу два порта HP, помня рекомендацию Xilinx, что подключать нужно к портам через один, т.е. к 0 и 2 или к 1 и 3. Можно услышать от опытных людей критику по структуре проекта в целом и рекомендации по констрейнам? Я так понял, что как и для спартан-6 констрейны нужно прописывать только ко входной частоте, а производные клоки просчитываются автоматически. Тут также? Проект размещу по ссылке, т.к. его размер превышает ограничение в 5 Мб: EK-Z7-ZC702-G_Zynq_MB
  14. В данный момент это ISE14.7 и AXI Interconnect 1.06.a Т.к. в ISE генерирование slave компонента делает убого и через шину IPIF (кажется так называется), я сделал иначе, запустил VIVADO 2016.4, сгенерировал пример slave-компонента в нем и перетащил исходники в ISE. Все работает, но вопросы остались открытыми. Нарыл вот такой документ: https://www.xilinx.com/support/documentatio...rence_guide.pdf все замечательно описано, но вопросы никуда не делись :-)