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

    

Lutovid

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость
  • День рождения 17.05.1992

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Москва

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

944 просмотра профиля
  1. Спасибо, это я уже на форуме ксайлинкса нашел - это решило другую проблемы
  2. Совпадают, я уже заметил такой момент - если добавить чипскоуп на emc в новой версии, то все начинает работать, с времянкой все ок... что-то видимо в примере недоконстрейнчено или оптимизируется без скоупа
  3. Нашел вот такой крутой пример http://www.xilinx.com/support/documentation/application_notes/xapp1282-us-post-cnfg-nor-axi-emp-ip.pdf Хочется с ним досконально разобраться, но возникла проблема - на вивадо 16.1(на которой написан пример) все работает, а при переходе к 17.1(на которой я работаю в основном) стандартная библиотечная функция XFlash_Initialize возвращает ошибку XFLASH_CFI_QUERY_ERROR. Я попробовал залить софт из sdk 17.1 в хард старой версии - все работает - то есть дело не в обновлении библиотек, как я понимаю. Апгрейд лог вроде ничего критичного не выдает по части emc(прикрепил файл). Адреса после апгрейда все сохранились старые. Поискал на форуме ксайлинкса проблему - не нашел. Подскажите пожалуйста, сталкивался кто с такой проблемой? ip_upgrade.log
  4. я имел в виду совпадает ли dst UDP пакета и src pause frame. Если да, то пока идей нет
  5. Я решил освоить emc, в качестве примера взял экзампл дизайн на это ядро и пробую его развести для своей платы. И тут сразу возникла проблема - Vivado не может разместить ноги dq0,1,2,3, clk и cen. Судя по раскладке это Config пины - их нельзя использовать внутри прошивки? Как тогда эту флешку использовать кроме как для выгрузки прошивки в ПЛИС?
  6. А значения в полях мак адреса верные(для udp и для pause frame)? По идее на стороне ПЛИС это можно не детектировать - вайршарк позволяет видеть тайминг пакетов - достаточно проследить< что после дросселирующего фрейма выдержана пауза - если я правильно понял задачу.
  7. Всем привет, с наступающим! У меня возникла необходимость общения с флешкой Micron MT28GU01GAAA1EGC-0SIT на плате vcu108. Раньше с bpi флешками не работал поэтому глупый вопрос. Для spi флешек все понятно - там стандартный spi и есть уже готовое решение от тех же ксайлинкс. Для работы с bpi flash я так понимаю нужно использовать axi emc в качестве готового решения? Или как вообще это делается? Поверхностный гуглеж дает много информации о прошивке флешки через джтаг, но пока не нашел информации как общаются с флешкой из ПЛИС внутри прошивки. P.S. Задача - в адресном пространстве под прошивкой хранить свои данные для микроблейза.
  8. Да видимо это самый удачный метод, спасибо,
  9. Можно и в 1 строку набить, если без табуляции и переноса строки. Я попробовал так как мне было проще, не получилось, буду по другому)
  10. Да реализация не самая удачная - при чем задача простая - на входе 32 сэмпла по 16 бит, а на выходе эти данные должны выдаться с задержкой до 448 сэмплов. В принципе есть еще 2 варианта реализации: 1) написать блоки module signal_delayer_tmp #( parameter integer MAX_DELAY_VAL = 448,//in 16bit samples parameter integer DELAY_VAL = 0//in 16bit samples )( input [MAX_DELAY_VAL*16-1 : 0] big_shift_reg, input [15:0] delay_val_i; output [511:0] out_delayed ); assign out_delayed = (delay_val_i==DELAY_VAL) ? big_shift_reg[DELAY_VAL*16+:512] : '0; генерэйтом набить из 448 штук, а выходы побитово просуммировать - но возможно будет слабое место в побитовом суммировании - их там 448 проводов все же 2)вставить память с циклическими параллельными записью и чтением со смещением адреса - но этот вариант подольше писать, так что я пока его не рассматривал Про ваш пример - я сначала так и написал, но по констрейнтам не сошлось и я решил, что возможно мне помогут директивы распараллеливания
  11. Привет всем! Возникла следующая проблема - есть сдвиговый регистр большой длины, есть управляющий сигнал, по управляющему сигналу должна выбраться часть этого большого регистра и выдаться на выход Написал такой код module signal_delayer_behav #( parameter integer MAX_DELAY_VAL = 448//in 16bit samples )( input axis_aclk, input axis_aresetn, (*keep = "true"*)input [15:0] delay_val, (*keep = "true"*)input [511:0] axis_s_tdata, (*keep = "true"*)input axis_s_tvalid, output axis_s_tready, (*keep = "true"*)output reg [511:0] axis_m_tdata, (*keep = "true"*)output reg axis_m_tvalid, input axis_m_tready ); assign axis_s_tready = axis_m_tready; (*keep = "true"*) reg [MAX_DELAY_VAL*16-1 : 0] delay_tdata_shift_reg; (*keep = "true"*) reg [MAX_DELAY_VAL-1 : 0] delay_tvalid_shift_reg; (*keep = "true"*) wire srstn; xpm_cdc_async_rst #( //Common module parameters .DEST_SYNC_FF (4), // integer; range: 2-10 .RST_ACTIVE_HIGH (0) // integer; 0=active low reset, 1=active high reset ) xpm_cdc_async_rst_inst ( .src_arst (axis_aresetn), .dest_clk (axis_aclk), .dest_arst (srstn) ); always @(posedge axis_aclk)begin if(!srstn) delay_tvalid_shift_reg <= 'b0; else begin delay_tvalid_shift_reg <= {delay_tvalid_shift_reg[MAX_DELAY_VAL-1-32 : 0], {32{axis_s_tvalid}}}; delay_tdata_shift_reg <= {delay_tdata_shift_reg[512*(MAX_DELAY_VAL/32-1)-1 : 0], axis_s_tdata}; end end integer i; always @(posedge axis_aclk)begin for (i=0; i <= MAX_DELAY_VAL-32; i=i+1) begin: output_delayed if(delay_val==i)begin axis_m_tdata <= delay_tdata_shift_reg[16*i+:512]; axis_m_tvalid <= delay_tvalid_shift_reg[i]; end end end endmodule Вопрос по последнему блоку always - в таком формате он не будет аналогом case и не выстроит все в параллель - так показал результат синтеза на 17.1 вивадо. Попробовал unique но это не работает корректно когда нет else if. Есть какие-то грамотные решения такой проблемы? Мне бы вообще последний блок сделать в асинхронке always (*), ну то есть не асинхонке а без задержки на такт. Но если сделать так то синтезатор ругнется на логикал луп, Забыл дописать - управляющий сигнал условно константный - меняется очень редко - его изменение обрабатывается нормально
  12. Я пытался решить проблемы с констрейнтами сменой стратегии разводки на оптимизацию по быстродействию - как правило величина слэка не менялась.
  13. Привет всем! У меня глупый вопрос, но поверхностное гугление не дало особых результатов. Перехожу вынужденно с 2017.2 на 2018.2.1. Там я так понял они ввели новую библиотеку lwip202 с которой у меня благополучно мой код не заработал. Разбираться в чем проблема времени нет пока, поэтому хотел пока старой библиотекой обойтись, при чем вроде она есть в комплекте 2018.2, судя по тому, что в установочной папке лежит. Но вот проблема - в гуе bsp settings нет этих старых библиотек(lwip141), а если вписать в .mss насильно то что я хочу: BEGIN LIBRARY PARAMETER LIBRARY_NAME = lwip141 PARAMETER LIBRARY_VER = 1.8 PARAMETER PROC_INSTANCE = microblaze_0 PARAMETER phy_link_speed = CONFIG_LINKSPEED1000 END То эта библиотека не подключается нормально. Подскажите, как это делается пожалуйста.
  14. С трансиверами встречал разные проблемы - возможно стоит копнуть в сторону эквалайзеров dfe/lpm? Убедитесь что эквализация включена