Jump to content

    

RobFPGA

Свой
  • Content Count

    1699
  • Joined

  • Last visited

Community Reputation

0 Обычный

1 Follower

About RobFPGA

  • Rank
    Профессионал

Recent Profile Visitors

10578 profile views
  1. Приветствую! Спасибо! Но увы - попробовав их ни какого эффекта не увидел. Что уже странно. Удачи! Rob.
  2. Приветствую! Книжку типа "Искусство написания эффективного DMA" я бы и сам почитал А для вашего случая для начала можете почитать datasheet на AXI Data Mover (на нем кстати, и сделан AXI DMA) который фактически и осуществляет трансфер. Вам надо будет прикрутить к нему простейший FSM который будет запускать Mover несколько раз пока все ваши гигабайты не утекут в память. Управление этим FSM сделать через AXI Lite. При нежелании менять софт можно будет даже повторить структуру регистров управления как в AXI DMA. Ну это уже кому что проще. Удачи! Rob.
  3. Приветствую! А все же чем scatter/gather вас не устраивает? Если же scatter/gather неприемлем вам по идеологическим причинам то нужен свой самобытный DMA с требуемым характеристиками трансфера. Пишется он относительно не сложно. Либо все полностью самому, либо используя AXI Data Mover как ядро. Удачи! Rob.
  4. Приветствую! Имею в qsys несколько модулей который имеют между собой связи различные (и иногда не совсем упорядоченные). Типа из модуля A выходит шина и попадает в модуль B, только вот не все сигналы из этой шины в B используются. Предполагалось что умный Qu увидев эту безалаберность уберет ненужное. А нет, с какого-то перепугу в модуле B он цепляет на неиспользованные линии заглушки типа LOGIC_CELL_COMB добавляя к названию линии *_QIC_DANGLING_PORT0. Цепляет жестко - так что остаются эти заглушки даже после P&R. И да - в дизайне используются design partiton и модули A и B в разных partiton. Пока не нашел чем это лечить - какой опцией можно сие поправить. Может кто знает? Успехов! Rob.
  5. Приветствую! Не заметил что 2 раза чтение делается - тогда да всего получается полоса 240 MB/s Удачи! Rob.
  6. Приветствую! У вас сейчас получается полоса памяти равна 160 MB/s, То есть можно ее заменить любой DDRx c пиковой полосой >200 MB/s НО если в вашем алгоритме доступ к памяти близок к линейному. Если это не так (рандомный доступ) то увы, так просто все не получится. Удачи! Rob.
  7. Приветствую! Вот мои подопытные Поведение и порядок бит/байт одинаковое как для варианта output wire [D_WH/8-1:0][7:0] dou так и для output logic|wire [7:0] dou [D_WH /8-1:0]. Вариант с output reg|logic [D_WH/8-1:0][7:0] dou падает с ошибкой (vsim-8428). И больше ни каких приколов. Удачи! Rob.
  8. Приветствую! Кажется мне что переворачивается оно где-то у вас в другом месте - во всяком случае у меня в сляпанном на скорую руку примерчике все правильно передается. Что касается output reg [..][..] dou, то тут да - засада присутствует Modelsim ругается Error: (vsim-8428) Cannot connect a VHDL array signal to Verilog multi dimensional array port Если объявлять output wire [..][..] dou то все пучком коннектится. Причем такая дискриминация по полу типу порта похоже только для packed массивов - для unpacked варианта порта output reg [..] dou [..], отлично коннектится к 2d массиву в vhdl. Думаю что это глюк из разряда особенностей mixsed simulation Modelsim, как и например глюк с попыткой присвоить значение для generic типа std_logic из SV модуля. Удачи! Rob.
  9. Приветствую! Ох, не вовремя вы! Вечер, сил и манны на телепатию не осталось - ну хоть какой-нибудь набросок вашего кода и капельку лога с ошибкой помогут сообразить что у вас не так. Ну а иначе ждите до утра Удачи! Rob.
  10. Приветствую! Не могли бы пояснить что вы имели в виду? Успехов! Rob.
  11. Приветствую! Всего-то? на фоне установленных у меня 6-ти рабочих версий Vivado +30 гигов мелочь Удачи! Rob.
  12. Приветствую! Какое у вас однако конкретно - расплывчатое желание. Что имели ввиду, это? set_property -name {xsim.compile.xvlog.more_options} -value {строка_текста} -objects [get_filesets sim_1] Удачи! Rob.
  13. Приветствую! Мерить удава в попугаях всегда удобно - можно выбрать сорт попугаев Из вашей таблицы видим что 8K FFT занимает аж 1546983 тактов - при этом мы можем получить 8K-2*261= 7670 отсчетов кореляции. Сколько нужно тактов, чтобы посчитать это же простым MAC? 7670*251 = 2001870 что приблизительно в 1.3 раза больше чем при варианте с FFT. И это если использовать для MAC очень маленьких попугаев - без учета того что их еще надо из клетки памяти доставать. То есть реально MAC будет как минимум в ~2.6 1.3 раза медленнее. Удачи! Rob. P.S. забыл про IFFT.
  14. Приветствую! A(i) будет ieee.std_logic_1164.STD_ULOGIC - угадал? Во всяком случае modelsim так ругается при компиляции. На сколько я понимаю сложить биты в VHDL без явного преобразования типов невозможно Удачи! Rob.
  15. Приветствую! Если логику z как-то фиксировать, например (* keep *) чтобы при синтезе она не оптимизировалась, то тогда можно попробовать задать set_multicycle_path 3 -start -setup -from [get_pins path_name/a_reg|q*] -through [get_cells path_name/z] set_multicycle_path 2 -start -hold -from [get_pins path_name/a_reg|q*] -through [get_cells path_name/z] Ну или нужен такой код, чтобы можно было явно задавать set_multicycle_path конкретно до z assign x = (a == 16'd49000)? 1'b0: 1'b1; always @ (posedge clk) begin a <= ... z <= {...., x, ....}; end set_multicycle_path 3 -end -setup -from [get_pins path_name/a_reg|q*] -to [get_pins path_name/z_reg|d*] set_multicycle_path 2 -end -hold -from [get_pins path_name/a_reg|q*] -to [get_pins path_name/z_reg|d*] Удачи! Rob.