Jump to content
    

aabmail

Свой
  • Posts

    210
  • Joined

  • Last visited

Reputation

0 Обычный

About aabmail

  • Rank
    Местный
    Местный
  • Birthday 04/30/1979

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

2,181 profile views
  1. Да. Адреса памяти, по которым будут поступать данные, определяется программистами на стороне PS. По поводу tready. Как я понимаю, у вас сравнительно небольшой поток данных. Вы можете между источником данных и axi_dma поставить буфер fifo (кажется axi_stream_data_fifo он называется), выбрать подходящий размер (допустим, 2 килобайта). Если fifo не переполняется, то он всегда будет готов принимать данные, и гркбо говоря вам не надо проверять его готовность. Когда пишете, поднимаете tvalid. Не пишете - опускаете. В буфер будут записано то, что находится на линии данных к те такты, когда tvalid=1. Передача через DMA происходит порциями. Вы со своим программистом должны договориться о размере порции. Передача порции инициируется в PS. Там же при старте указывается объем данных, которые будут передаваться. Потом вы передаете данные. В конце вместе с последним передаваемым слвоом надо выставить tlast. Это фактически команда на закрытие передачи. Если не поднять tlast, будет косяк. Пропадет часть данных, ну или еще что-то...
  2. Возможна при использовании axi_dma. При данной конфигурации axi_dma имеет на входе AXI4stream slave, на выходе AXI4MM master. Выходной интерфейс источника данных должен быть AXI4stream master.
  3. А вот хотелось бы все-таки узнать, если ли возможность изнутри прошивки узнать part-номер ПЛИС, на котором данная прошивка крутится. Кто-нибудь знает?
  4. Коллеги, Вопрос к тем, кто перешел на 2016.4.2. Появились ли там новые баги? Что стабильнее: 2016.2, 2016.3 или 2016.4.2 ?
  5. Если важно не потерять ни одного пакета, нужно проверить вашу систему связи на более низком аппаратном уровне. Для этого используются измерители BER. Например http://metrotek.spb.ru/en/b3et.html У меня было такое, что терялись пакеты по неизвестной причине, правда на 10G. Решение оказалось до безобразия простым - перезагрузить Windows. Через некоторое время после перезагрузки компьютера пакеты вновь начинали теряться.
  6. Номер старшего разряда - это округленный вниз логарифм по основанию 2. Iosifk, Спасибо. В принципе если делать вручную, то это так наверное и надо (коллеги то же самое предложили). Все же пока думаю над более простым решением.
  7. Да возможно, только это займет 48 клоков. Я где-то раньше видел алгоритм, как это сделать быстрее и более оптимальным способом (Xilinx Fixed2Float это делает за 7 клоков).
  8. Я имею ввиду номер старшего значащего разряда. Извините за неполную формулировку Пришла в голову мысль взять XilinxIPCore fixed to float.
  9. Здравствуйте, уважаемые форумчане! Нужно сделать модуль, который имеет на входе беззнаковый std_logic_vector(47 downto 0), на выходе - номер старшего разряда. Варианты, которые уже пришли в голову, но не нравятся: 1. Комбинаторно перебрать все 48 бит (т.е. if, elsif, elsif, ...) 48 раз. Плохой вариант с точки зрения тайминга. 2. Последовательно на 48 клоках перебрать все 48 бит () 48 раз. Хороший вариант с точки зрения тайминга, но слишком большой latency. 3. Разбить 48 битное слово пополам, определить, какая половина целиком равна нулю, и для другой половины рекурсивно применить этот же метод. Когда рекурсия дойдет до 3-битной шины, перебрать через elsif. Слишком замудрённо. 4. ... Помогите плз с этой задачей. Заранее благодарен.
  10. На эти грабли уже наступал. Во всех Xilinx IP-cores, включенных в дочерние проекты VIVADO (т.е. в user-cores), у меня выставлено Global synthesis. Спасибо. Констрейны заданы. Откуда эта ошибка ошибка выскакивает, постепенно проясняется. Отключил свою user-кору от AXI-interconnect, и ошибка пропала. Но другая беда - почему-то незначительно (на 20%) уменьшилась частота UART, в результате чего в терминале вместо текста - абра-кадабра. Кроме это, перестал работать XMD. Как впрочем, наверное, и все остальное.
  11. Действительно, если взять любой простейший проект, то он будет синтезироваться минуту. Я думал, что это касается только маленьких проектов. А оказалось, что и больших - тоже.
  12. Здравствуйте, форумчане. Работаю над большим проектом. Перехожу с EDK14.7 на Vivado. Рассказывают, что продолжительность синтеза и имплементации в Vivado якобы значительно меньше, чем в EDK. В моем случае оказалось ровно наоборот. В EDK проект разводился 1 час, - в Vivado - 3 часа. Из них 2 с лишним часа уходит на синтез. Проект включает в себя microBlaze с обвязкой, фурье-преобразование, цепочку цифровых фильтров, элементы мат.обработки. В общей сложности более сотни экземляров Ip-ядер. Начал искать пути, как уменьшить время синтеза. Попробовал включить out of context per IP. В результате на оптимизации была выдана ошибка: ERROR: [Opt 31-67] Problem: A LUT6 cell in the design is missing a connection on input pin I1, which is used by the LUT equation. This pin has either been left unconnected in the design or the connection was removed due to the trimming of unused logic. The LUT cell name is: system_i/microblaze_0_axi_periph/xbar/inst/gen_sasd.crossbar_sasd_0/reg_slice_r/skid_buffer[28]_i_1. Кто с этим сталкивался, подскажите. Или вообще пока нет смысла переходить на VIVADO?
×
×
  • Create New...