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

RobFPGA

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Профессионал

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

9 418 просмотров профиля
  1. Приветствую! Да это немного заметно :) Успехов! Rob.
  2. Приветствую! {time_pulse, time_cnt} работает это как один счетчик разрядностью 1+CNT_WH. {time_pulse, time_cnt} <= (1<<CNT_WH)-CNT_DIV+1; - задает начальное значение от которого идет счет. При этом time_pulse будет установлен в 0. Через CNT_DIV-1 тактов счетчик до тикает до переноса 1 в time_pulse, а еще через такт опять установится (сбросится) в (1<<CNT_WH)-CNT_DIV+1; В комментах в коде все тоже самое только более классически. Удачи! Rob.
  3. Приветствую! Тогда CNT_DIV надо как минимум в 50_000_000 ставить чтобы 1 сек на смену цифры было. Или вы успеваете 500 Гц увидеть? :) Удачи! Rob.
  4. Приветствую! А на чем проверяете ? И какая частота для clk? Удачи! Rob.
  5. Приветствую! Можно разными вариантами - общее будет одно - изменяете счетчик - сравниваете с порогом - сбрасываете по достижению порога Вот вам пара вариантов - разберетесь что и как ? localparam MAX_DIGIT_N = 10 ; localparam CNT_DIV = 100_000 ; localparam CNT_WH = $clog2(CNT_DIV); reg [$clog2(MAX_DIGIT_N)-1:0] digit_cnt ; reg [ CNT_WH-1:0] time_cnt ; reg time_pulse; always @(posedge clk) begin if (reset) begin digit_cnt <= 0; // time_pulse <= 0; // time_cnt <= 0; {time_pulse, time_cnt} <= (1<<CNT_WH)-CNT_DIV+1; end else begin // time_cnt <= time_pulse ? 0 : (time_pulse + 1); // time_pulse <= (time_cnt==(CNT_DIV-2)); {time_pulse, time_cnt} <= {time_pulse, time_cnt} + 1; if (time_pulse) begin {time_pulse, time_cnt} <= (1<<CNT_WH)-CNT_DIV+1; digit_cnt <= digit_cnt + 1; if (digit_cnt==MAX_DIGIT_N) begin digit_cnt <= 0; end end end end Успехов! Rob.
  6. Приветствую! Первый вариант не будет работать - так как препроцессор ни чего не знает о подстановке параметров. В этом случае нужен глобальный define задающий тип вендора либо в общем include файле, либо в опциях компилятора/синтезатора. Вариант с generate более уместный. Но как по мне так вариант с враппером наиболее достоин использования! Нужно только один раз написать свой враппер для FIFO покрывающий ваши основные запросы к интерфейсу и параметрам FIFO. И везде использовать его. А уж весь зоопарк реализаций разводить внутри этого враппера. Приводя интерфейс вендоровских корок к своему любимому. Ну а там недалеко и до своей реализации FIFO. Удачи! Rob.
  7. Приветствую! Проекты с PCIe это ref-design или ваши? Какие режимы для PCIe в проекте, а на каких реально поднимается линк? Неплохо для сделать убедится что чипы на плате одинакового speed-grade. Так же надо сделать диагностику для MGT с глазковой диаграммой - что бы посмотреть что там с аналоговым трактом приема-передачи, а не просто internal loop-back. Может подпалили статикой порты? Удачи! Rob.
  8. Приветствую! Фэншуй маловат :( и не позволяет сделать на одной плате размером 3U и слот для FMC модуля ADC/DAC и поставить пару штук QSFP+ туда же. Удачи! Rob.
  9. Приветствую! Нет не отказались - это просто другая система - но по сравнению с 4-6 параллельными 10G потоками она еще и проще в реализации (в части передачи данных на комп). Успехов! Rob.
  10. Приветствую! А смысл вас пугать " ... что это ужасно сложно.. что ничего у вас не получиться (без меня ;) )" Конечно когда этот проект свалился мне пришлось поломать голову как вывести из FPGA эти 4 GByte/s. На чем систему записи построить. Увидеть много удивленных лиц когда говорил что мне нужна система для записи гарантированно 4 GByte/s непрерывно как минимум в течении часа. И делать еще более удивленное лицо когда мне выкатывали возможный состав железа и прайс на него. 8-() . А сейчас конечно все тривиально :) Вот новая система - в комп fiber-optic PCIe extender x8 gen3 , в FPGA PCIe подключенный к модулю FireFly - и по одному 100 m кабелю у вас по 6GByte/s в обе стороны. Что тут сложного? :) Успехов! Rob.
  11. Приветствую! Конечно тут все зависит от конфигурации сети. Если точка - точка или через хороший коммутатор и сетевые карты - то для радикального уменьшения потерь надо настраивать сетевухи для работа в режиме lostless - это типа xon|xoff - когда сетевуха видит что место в приемном буфере заканчивается то тормозит удаленный передатчик и тот ждет разрешения . Пакеты не теряются но естественно и скорость падает. Соответственно и на стороне FPGA это надо поддерживать. Отлаживалась кстати это сначала как раз на Win7. Если же сеть на noname мыльницах - то тут увы ничего не поможет. Так я и не говорил что без настройки - естественно пошаманили и с настройками стека и c прерываниями. Но все крутилось на стандартном стеке linux без новомодных DPDK и тому подобного. Даже 6 потоков в 10g принимали с трех 2-портовых 10G сетевух. Делалось это уже лет 5 назад. С тех времен это все еще проще стало. Успехов! Rob.
  12. Приветствую! Да нормально справляется, 2x 4-ядерных Хeon принимают и синхронизирует потоки, пишут на SSD raid, да еще и кой-какую обработку и статистику по потоку считают - для нынешнего железа это не проблема. По UDP бегают jumbo с payload 4-8K. Но это уже старая система - медленная ;) Удачи! Rob.
  13. Приветствую! Нет не путаю - 4 штуки 10G по UDP льют из FPGA общий поток параллельно. На приемной стороне все собирается опять в один поток. Успехов! Rob.
  14. Приветствую! Хотелось бы конкретики - что значит маловато, какая пропускная MB/s получается, сколько % теоретической пропускной. Какой у вас цикл чтения/записи на шине? Как адресация формируется? Все это влияет на пропускную и без должной оценки гнать частоту памяти смысла нет. Удачи! Rob.
  15. Приветствую! Понятное дело для UDP вообще все просто тем более если для собственного использования. У меня несколько таких систем работает с потоком 4-8 GByte/s. В ручную статически сконфигурил и льешь в сеть дер.данные, положив на всех большой и толстый 10G ;). Но для удобства все же нужен полный ICMP и DHCP. Либо полностью в железе, либо замыкать соответствующие пакеты через bypass софт стек. Чтобы вовремя реагировать если заказчик вдруг поменяв конфигурацию сети не удивлялся что за хренов трафик идет север по старому IP :) Удачи! Rob.