• Реализация целочисленного БПФ на ПЛИС
    0
    Если прошивка не зашифрована, то можно считать конфигурационный бит-файл, однако перевести его в удобный читаемый код — нереально. Максимум, что можно получить — это знания о расположении тех или иных ячеек ПЛИС и их взаимосвязи между собой (netlist).
  • Реализация целочисленного БПФ на ПЛИС
    0
    Если бы все было так, то вариантов full-precision и floating-point вообще бы не появилось. Из теории известно, что при делении входого сигнала уменьшается отношение сигнал-шум, а это значит, что некоторые сигналы просто нереально вытянуть из-под шумов, если производить округление или усечение. В качестве доказательства привел сравнение в реальном железе прохоождение синусоидального сигнала через БПФ на 1024 точки — UNSCALED / SCALED. При плохом отношении сигнал-шум вариант UNSCALED смог «вытянуть» гармонику, в то время как SCALED — не смог (см. update к статье). Под SCALED я понимаю вариант, при котором разрядность на выходе бабочки просто усекается на LSB, без округления.
  • Реализация целочисленного БПФ на ПЛИС
    0
    Не все так просто. По определению БПФ — это интегральное преобразование (из свойств ПФ), следовательно результат накапливается на каждой бабочке. При усечении на каждой стадии — мы теряем точность результата из-за эффектов квантования, и в задачах, где это важно (например: радиолокация) — вариант с усечением не сработает. Не зря БПФ без усечения называется full-precision. Но схемы с усечением имеют право на жизнь и реализованы в ядрах Xilinx / Altera. Там даже сдвиг вправо не требуется, можно просто на выходе бабочки сделать «truncate LSB».

    Не поленюсь и добавлю в ближайшее время в исходники для SCALED TRUNCATED / ROUNDING варианты.
  • Реализация целочисленного БПФ на ПЛИС
    +3
    В FPGA с определенного уровня отсутствует гибкость по выбору предложений по работе, и вилка зарплат существенно ниже, в сравнении теми же программистами в web.
  • Реализация целочисленного БПФ на ПЛИС
    +1
    Это на случай, если работодатель почитает и поймет намёк, что я хочу повышения зарплаты. :)
    Планирую сменить сферу деятельности подальше от железа, но поживем — увидим.
  • Реализация целочисленного БПФ на ПЛИС
    +2
    Так и знал, что кто-нибудь заметит :)
  • Реализация целочисленного БПФ на ПЛИС
    0
    Абсолютно верно. Поэтому я без ущерба для объема занимаемых ресурсов ПЛИС для комплексного умножителя после умножения не сразу усекаю разрядность, а результаты складываю/вычитаю в 48-битной сетке, благо ресурсы DSP48 это позволяют. А уже потом делаю округление до нужного числа бит на выходе бабочки (как правило < 48).
  • Реализация целочисленного БПФ на ПЛИС
    +1
    В бабочке данные разрядностью N умножаются на гармонический сигнал, который нормирован к 1. Поэтому результат умножения можно смело усекать снизу на разрядность M-бит гармонического сигнала.
    Кроме того, если в гармоническом сигнале не используется максимально отрицательное число (wierd number в 2's complement представлении), то разрядность сверху тоже можно усекать на 1 бит.

    Итоговое поле данных в разрядной сетке: [N+M-2: M-1] ( N+M-2 — это MSB, M-1 — это LSB результата умножения).
  • Реализация целочисленного БПФ на ПЛИС
    0
    Вероятно, имелось ввиду — «VHDL»? Использую этот язык по «политическим» принципам. Там, где я сейчас тружусь — это основной язык разработки. Транслировать VHDL > Verilog, в принципе, не составит труда.
  • Реализация целочисленного БПФ на ПЛИС
    0
    Не совсем так. В алгоритме БПФ нет аккумуляторов, только сумматоры — насыщения не происходит. С другой стороны: алгоритм БПФ на каждой бабочке требует увеличить разрядность данных на 1. Это железное правило для Radix-2. Соответственно, если соблюсти это требование, то разрядность на выходе увеличится на Nбабочек, и переполнения не произойдет при любой комбинации входных воздействий.

    В моем проекте разрядность на входе — конфигурируемая, на выходе — зависит от количества бабочек и входной разрядности, то есть не усекается до исходной, => переполнения нет.
  • Women's Day Gift by FPGA
    0
    Переводить нужно не system gates, а logic cells. Вентили — это все, что содержится в SLICE — мультиплексоры цепочки CARRY, LUT-ы, триггеры и т.д. Чтобы сравнить Xilinx и Altera, в даташите первого смотрим на Logic Cells, а для второго Logic Elements (LE). Для микросхемы XC3S500E Logic Cells — 10,476. Но также следует учитывать технологию, по которой эти логические элементы сделаны. Начинка несколько отличается.
  • Women's Day Gift by FPGA
    0
    Это уже расточительство семейного бюджета, супруга такое не одобрит :)
  • Women's Day Gift by FPGA
    0
    Я думал про это. :)
    Но они, к сожалению, завязаны с LED-матрицей. Джампером переключается вывод либо на светодиоды, либо на индикаторы.
  • Реализация узла БПФ с плавающей точкой на ПЛИС
    +2
    Под децимацией понимается принцип разбиения исходной последовательности для обработки на бабочках. Советую почитать статьи с сайта dsplib, либо книгу Айфичера.
  • Реализация узла БПФ с плавающей точкой на ПЛИС
    +2
    Спасибо!
    Да, я только сейчас понял, что забыл указать самые важные параметры — производительность и задержка вычисления от входа до выхода (в тактах). Обязательно дополню этим статью.

    Связку БПФ+ОБПФ 64К удалось запустить на частоте 333МГц на ПЛИС типа Virtex-6 (SX315T). Работала стабильно и без сбоев. Ядра от Xilinx также на запускались на этой частоте, но по ресурсам существенно проигрывали. Выше этой частоты эксперименты не проводились, к сожалению. На Kintex-7 результаты многоканальной схемы аналогичные (но при NFFT = 8K). Другие ПЛИС использовались только для оценки разводки и таймингов, без реальной проверки в железе.
  • Как работает FIFO
    –3
    Изначально — это «светлая идея», которая затем переросла в негласный стандарт компании.

    К сожалению, он не всеми соблюдается, но мы стремимся к единообразию и соблюдению определенных правил написания кода. В свое время я написал такой документ, но сами понимаете — протащить его наверх и сделать это стандартом крайне непросто. Несмотря на то, что многие поддержали эту идею, а коллективные обсуждения по этому вопросу возникали неоднократно. :)
  • Как работает FIFO
    0
    Мы пишем задержки только после синхронных присвоений под CLK, поэтому они не накапливаются. При следующем защелкивании — она снова будет 1нс. Про 1ГГц — верно подмечено, нужно весь код заменить на что-то типа 0.1нс. Поэтому я в своих проектах ввел переменную td, которой присваивается значение этой задержки.
  • Подключение АЦП к ПЛИС. Особенности, сложности, реализация
    0
    Интересная плата. И её для начала будет достаточно, освоить базовые вещи — самое то. К сожалению, микросхемы АЦП и ЦАП не управляются программно, так что с этим здесь не поиграться. а как показывает опыт — сложнее научиться управлять схемой и правильно менять параметры модуля в динамическом режиме, чем, например, обеспечить одинаковую фазу для многоканальных систем (о чем писалось выше в комментариях).
  • Подключение АЦП к ПЛИС. Особенности, сложности, реализация
    0
    Все верно. Мы на своих аналоговых модулях используем генераторы Si570/571, после которых ставится разветвитель. Для 8/16-канальных схем это успешно работает и система запитывается одним когерентным источником тактовой. А в системах, где используется делитель внутри АЦП — все нетривиально, необходимо извращаться уже непосредственно в ПЛИС. К счастью, с такими микросхемами АЦП практически не работаем.
  • Подключение АЦП к ПЛИС. Особенности, сложности, реализация
    0
    Смысл такой, что если АЦП работает в широком диапазоне частот дискретизации (от 10МГц до 500МГц, например), то на некоторых участках значения тактовой частоты начинаются искажения сигнала данных (совпадают фронты, к примеру). Для этого на помощь приходят IODELAY группы и именно они позволяют работать в широком диапазоне тактовых частот.

    Да, в JESD204B все иначе, но там и другие особенности, начиная от интерфейса передачи, заканчивая схемой подключения в ПЛИС и способами синхронизации и управления сигналом запуска многоканальных схем. Если тема JESD204B будет интересна, мог бы написать об этом в следующей статье.
  • Подключение АЦП к ПЛИС. Особенности, сложности, реализация
    0
    Согласен во всём. Недавно проверял проект, где нужно было тактировать АЦП сигналом, прошедшим именно MMCM. На входе MMCM — 60МГц, на выходе 120МГц. И эта частота идет на АЦП. Хорошего мало, но работает, благо каналов всего АЦП всего два.
  • Подключение АЦП к ПЛИС. Особенности, сложности, реализация
    0
    Да, для частот 40-200МГц можно тактироваться внутренним MMCM. Но нужно понимать, что для MMCM тоже нужен источник частоты, пусть и не привязанный к аналоговому модулю. Я с такими устройствами работал. Но практика показывает, что чем проще способ тактирования данных, тем лучше. То есть это способ без использования MMCM. До узла пересинхронизации FIFO частота идет напрямую с аналогового модуля, проходит BUFG/BUFIO и в таком виде тактирует синхронные элементы схемы.

    С высокоскоростными импульсами такого типа не сталкивался, но мне думается, что здесь необходимо иметь высокую разрешающую способность, то есть хорошие аналоговые характеристики узлов АЦП, а со стороны цифровой части — наличие накопителя данных большого объема, в который помещается принимаемый сигнал. А вообще для цифрового устройства совсем нет разницы, какой формы сигнал обрабатывать, если аналоговое устройство способно этот сигнал обнаружить и задетектировать.
  • Подключение АЦП к ПЛИС. Особенности, сложности, реализация
    0
    Спасибо за замечания, поправлюсь! :)
    Про ISERDES согласен, но на практике практически не встречал таких микросхем АЦП. В обратную сторону, т.е. ЦАП — сплошь и рядом такое, а с АЦП либо параллельная шина LVDS, вписывающаяся в частоту обработки ПЛИС, либо сразу JESD204B.

    Все верно. На этот вопрос в рамках статьи я решил не отвечать, но в списке литературы сделал отсылку к документу, с которого можно начинать копать. :)

    Самое примитивное решение — запитать все АЦП одним источником тактовой частоты и попытаться использовать один клок АЦП на глобальном буфере, а не N штук на региональных. Для многоканальных АЦП с частотами дискретизации до 500МГц это спасало.
  • Использование TCL в разработке на FPGA
    0
    Понял! Собственно, мы стараемся делать аналогично, если частоты обработки переваливают за 300 МГц. Как правило, основные проблемы таймингов связаны с длинными путями распространения сигналов. Часто спасает добавление триггеров в цепочку, но есть места, где этого сделать невозможно (узлы с обратными связями, например). Кстати, в этом плане у Vivado есть несомненный плюс — она без всех этих размещений для относительно простых проектов старается сделать максимально «хорошо», и ручное размещение практически не требуется.

    Но! Живой пример (против Vivado): в проекте используется два контроллера PCI-e gen3 x8 и два контроллера памяти DDR3 для Virtex-7. ISE с минимальной расстановкой по кристаллу и ограничениями через pblocks разводит за час, а Vivado либо не разводит вообще, либо разводит в разы дольше, и по таймингам проект у неё свести не получается.
  • Использование TCL в разработке на FPGA
    +1
    Вы говорите о полностью ручной расстановке и трассировке логических вентилей в ПЛИС через FPGA Editor, или вы делали расстановку путём добавления pblock-s на floorplanning? Если первое, то это действительно круто. А второй способ — вроде как типичное средство достижения требуемых тактовых частот. Нам в проектах с рабочей частотой 350МГц хватало расстановки pblocks нужным образом, иначе от разводки к разводке частоты получались всегда разные. Плюс, еще есть такая штука как Promote partitions, когда закрепленные блоки удачно разведены на требуемую частоту, и в дальнейшем эта разводка и размещение используются для уменьшения времени сборки прошивки (при условии, что внутри этих блоков логика не менялась).
  • Использование TCL в разработке на FPGA
    0
    Я сейчас редко пользуюсь Quartus, но в нем вообще никогда не имел проблем, все очень интуитивно. Может быть из-за того, что он мне сейчас для работы нужен раз-два в месяц. Но в нем даже прошивку зашить проще, если в JTAG-цепочке стоит две разные ПЛИС: Altera и Xilinx.
  • Использование TCL в разработке на FPGA
    0
    Понял, спасибо!

    Приму на вооружение ваши советы по поводу скобок, действительно полезно и не даст запутаться. :)

    По поводу скрипта для flow. Зачем подсовывать каждый раз новые исходники и явно это указывать? Я постарался отойти от этой стадии и автоматизировать процесс поиска исходных файлов, чтобы разработчикам по команде не нужно было думать о том, что и как поменять. В том скрипте, на котором построен мой пример, нужно задать в качестве аргумента только кристалл ПЛИС, а проект соберется сам: найдет исходники, добавит ядра, обновит их, если надо, запустит синтез и имплемент. Таким образом, разработчику вообще не надо думать, что там в этом скрипте написано и зачем. Если есть четкие правила по именованию файлов верхнего уровня и расположению исходников, ядер и файлов для моделирования, то сам скрипт получается ещё проще.

    С batch-файлами действительно удобно. Мы как раз сейчас активно занимаемся автоматизацией проектирования (особенно для сложных проектов с объемом ресурсов ПЛИС >80%), чтобы не запускать ручками процессы, а прийти и увидеть картинку по лучшей разводке. :)
  • Использование TCL в разработке на FPGA
    +1
    Добрый день!

    С лицензиями все по-старому. ISE вообще имеет свойство от версии к версии становиться только хуже. Благо, разработка закончилась на версии 14.7. К счастью, со всеми косяками можно совладать и привыкнуть к этим «особенностям» среды. Да, она все ещё глючная, но Vivado не менее глючная, чем ISE.

    Кроме того, на Windows 10 вообще отказываются работать 64-битные приложения от Xilinx. Программирование через Impact вообще не работает. Приходится сидеть в 32-битных ISE, PlanAhead etc. а программировать через 32-bit ChipScope Analyzer. Создать из bit файла mcs можно только через командную строку или TCL скрипт. Загрузить mcs во флешку — средствами ISE вообще не получилось. Моделирование в ISim частенько отваливается и вылетает. Такие вот пироги.

    Если вы про FPGA Editor под Linux, то ответа не знаю, не пробовал.
  • Подарок на 1 сентября всем поклонникам цифровой схемотехники и архитектуры компьютера
    +1
    Спасибо за слайды! Очень часто ко мне обращаются студенты и начинающие разработчики в области цифровой микроэлектроники и радиотехники с вопросами «что читать, куда копать?». Всем без исключения я рекомендую определенный список литературы, и книга «Цифровая схемотехника и архитектура компьютера» стоит в первых рядах. :)
  • Использование TCL в разработке на FPGA
    0
    Спасибо!
    Задам несколько вопросов, если не против.
    — Это дело привычки или есть какая-то особенность брать в фигурные скобки переменные?
    — Этим активно пользуюсь, не только в TCL :)
    — С процедурами — верно подмечено, я стараюсь так делать, если скрип разрастается до больших размеров. Вызов вложений тоже удобная штука (использую для стадий synthesis / implement). А вот дефайнами не пользовался. Можете пример привести?
  • Junior FPGA Design Engineer: как стать?
    +1
    По поводу литературы и дополнительных навыков, которые могут потребоваться в той или иной степени разработчику на ПЛИС:

    Сфера ЦОС:
    — Эммануил С. Айфичер, Барри У. Джервис. Digital Signal Processing: A Practical Approach
    — Рабинер и Голд. Теория и практика цифровой обработки сигналов.

    Также при углублении в область ЦОС на ПЛИС очень полезно будет на начальном этапе ознакомиться с даташитами на IP-ядра от тех вендоров, с которыми будете работать. В даташитах подробно описаны основные моменты, без сильного углубления в теорию. Дополнительный плюс таких IP-ядер — легкость моделирования и отладки.

    High Speed Trancsivers:
    — High-Speed Serial I/O Made Simple от Xilinx.

    Книга позволяет получить первичное представление о гигабитных трансиверах и их начинке, дает основные определения и описывает проблемы, возникающие при разработке интерфейсов передачи.
  • Junior FPGA Design Engineer: как стать?
    +2
    Тоже верно, требования везде разные. Даже на hh по вакансии можно заблаговременно предположить, где с железкой будешь иметь дело напрямую, а где хватит встроенных анализаторов (типа ChipScope для Xilinx).

    Кстати, насчет схемотехники. В нашем отделе давно сложилось правило, что опытный разработчик на ПЛИС должен не только прошивки делать и исключительно с ПЛИС работать на уровне написания/верификации кода для поставленной задачи, но еще и схемы рисовать с обоснованным выбором тех или иных компонентов. К счастью, без разводки платы, для этого есть отдел конструкторов. Такие вот дела. :)
  • Junior FPGA Design Engineer: как стать?
    +2
    Иван, спасибо за статью!

    Добавлю, что далеко не каждый Junior (и даже Middle) может похвастаться всем тем, что требуется из списка «Необходимо». Особенно, если после нескольких лет работы у человека начинается специализация в то или иное направление (реализация высокоскоростных интерфейсов или углубление в ЦОС, например). Получается, что существенную область разработки человек попросту игнорирует из-за специфики конкретно его работы.

    Меня часто спрашивают начинающие разработчики на ПЛИС (зачастую студенты старших курсов), что почитать, какие книжки нужно держать под рукой, что нужно уметь, знать, применять и куда расти. Когда я им вываливаю полный список того, что прочитал я или мои коллеги (и что ещё предстоит прочесть), то энтузиазм несколько угасает. Теперь в список для чтения ещё и вашу статью добавлю! :)

    Забавно, но у тех, кто ко мне обращается, тажке зачастую возникает вопрос: "FPGA vs WEB"? И практически всегда люди делают выбор в сторону того, что проще и в конечном счете позволяет иметь бОльшую гибкость. И это правильно.

    P.S. кстати, а где в требованиях умение пользоваться осциллографом? (с железками ведь работаем, как-никак) :)
  • Чтобы быть здоровым к пенсии, нужно постоянно заниматься спортом
    0
    Потому что у тестостерона (например, пропионата или энантата) андрогенная активность 100%, в этом вся причина.
  • Чтобы быть здоровым к пенсии, нужно постоянно заниматься спортом
    0
    Если не забивать на ПКТ и делать все по уму — импотенция будет волновать в последнюю очередь. В большинстве случаев достаточно поднять ЛГ и сделать так, чтобы яички откликались на его уровень, вырабатывая собственный тестостерон.
    А облысение, как правило, происходит при частом приеме андрогенных препаратов, на более мягких с низкой андрогенной активностью этого не случится.
  • Чтобы быть здоровым к пенсии, нужно постоянно заниматься спортом
    0
    Кокляев тоже интересный тип. Проводить мост для выхода с курса на метане — даже не знаю, что и сказать. Но я рад, что у него все хорошо и восстановление идет полным ходом.

    У меня есть две истории, как ААС привели в смерти. Причем у одного от чрезмерного употребления оралок и злоупотребление алкоголем отказала и так больная печень. Но тут даже нет вопросов о разуме персонажа. У второго был опыт гораздо больше и звания МС в разных весовых, но его в один миг подвело сердце. Хоть и непрямым способом, но как сказали знакомые — к этому привели ААС.
  • Чтобы быть здоровым к пенсии, нужно постоянно заниматься спортом
    +2
    Живы те, кого мы видим. Остальные (а их большинство) после пары таких убойных курсов ААС полностью убивают выработку собственного тестостерона и навсегда прекращают свои тренировки, либо садятся на ГЗТ и с ними тоже ничего хорошего не происходит. Превратиться в амебу и очистить генофонд — удел таких личностей. К сожалению, в современном тяжелом спорте у молодых и неокрепших умов главное правило заключается во вливании в себя всего и побольше, а не в изучении собственного тела и улучшения здоровья.
  • Чтобы быть здоровым к пенсии, нужно постоянно заниматься спортом
    +1
    Надеюсь, эти молодые парни алкоголь на курсах не попивают? Одно из первых правил приёма ААС — полностью убрать вредные привычки, включая алкоголь, вплоть до окончания ПКТ.
  • Чтобы быть здоровым к пенсии, нужно постоянно заниматься спортом
    0
    Вы же понимаете, что мы сейчас не на научном собрании, где учеными-медиками обсуждается важность той или иной физической деятельности и активности. Я делюсь своим опытом, вы — своим. В результате мы делаем какие-то выводы для себя. В предыдущем сообщении я сделал для себя определенные выводы по статье и комментариям пользователей, ваше право с ними соглашаться или нет.

    По поводу стариков. Из личных наблюдений могу сказать, что знаю несколько человек пенсионного и предпенсионного возраста, которые с детства занимаются тяжелым спортом и имеют звания мастера спорта, а некоторые и МСМК в тяжелой атлетике и пауэрлифтинге. По их словам — серьезных проблем с суставами у них не наблюдается. Опять же это мои знания и мой опыт, который не стоит воспринимать как: "раз с этой группой людей всё в порядке, значит и мы справимся!".

    Плюс у меня нет информации, сколько из этих старичков закончили "карьеру" раньше в связи с различными проблемами, в частности, не только с суставами и связками, а, например, с сердцем.
  • Чтобы быть здоровым к пенсии, нужно постоянно заниматься спортом
    0
    Поэтому вывод можно сделать такой: не следует из крайности в крайность переходить, то есть, минимально подвижный образ жизни равно как и убийственные тренировки в зале в результате к хорошему в старости не приведут.