FPGA

Подписчиков: 0     Сообщений: 4     Рейтинг постов: 61.6

it реактор образовательный системный администратор программирование Халява доброта позитив реактор благотворительный электроника песочница ...geek FPGA програмист подарочки самообразование 

Пак знаний, учение свет. Книги, справочники и видеокурсы для ИТ

Привет Джой

Вижу, что тут много тех кто хочет двинуть в ИТ и достигнуть новых горизонтов

Я помогу, тем что есть, а именно книгами, журналами, справочниками и видеокурсами



Итак:



Библиотека МЕХМАТА https://mirrors.pdp-11.ru/_books_/lib-meh-mat/

Библиотека ИХТИК https://mirrors.pdp-11.ru/_books_/ИХТИК/



Подборки

https://mirrors.pdp-11.ru/_books/Программирование/



Специалистам будут интересны

https://mirrors.pdp-11.ru/_books/Cheatsheets (шпаргалки)/

как концентрат знаний



Журналы

https://mirrors.pdp-11.ru/_books/Журналы/

много связанного с электроникой





Изучающим ПЛИС будет интересна подборка книг в этом разделе

https://mirrors.pdp-11.ru/_books/Электроника/ПЛИС/



И я думаю внимательные заметят строку поиска, да, поиск работает и можно смело искать - к примеру

https://mirrors.pdp-11.ru/search.php?text=fpga&page=1

Знаю, все любят объемы и тут реально они большие - разделы books ~3ТБ

Поиск интересен тем, что видит всё - в том числе и то что еще не раскидано по разделам



Надеюсь вам будет полезен этот материал, рад был поделится.



PS: если найдутся энтузиасты, которые смогут уделять время сортировке книг - будет очень здорово!
Развернуть

Карательная электроника не делайте так электроника разработка железа DIY geek porn geek сделал сам FPGA Mirn (фотограф) 

Карательная электроника: Как нельзя разрабатывать интерфейс скоростной видеокамеры.

Кратко в статье будет:

Что же не так в первой же картинке: хоть и выглядит вполне аккуратно, или сказ о наводках и СВЧ чёрной цифровой магии и почему так делать нельзя.

Немного об отладочной плате FPGA и особенностях разработки.

О модуле камеры, её сенсоре, MIPI интерфейсе и как его испортить.

Как сделать связь с ПК в сотни мегабит, менее 100мбит/сек, и как в том числе и тут словить кару.


Внимание: в статье несколько хайрез фоток и видео, много тех терминов и лютого DIY, возможен взрыв мозга! 


Начнём с пациента:

Etí 99¿S 097.H »
Q	i
Nj 2610
\¿ZH¿
П
оЛэ
1¿T0
vic/vco Q sjCy** O
V pteiHi l'en™ „ Чгт? гетэихл BQ_ E ir
CDUV
6230
□Ce9Zö COJS 39Ztí
nnpn
ÍÍN'* ФЮО.Ф Оч-к- >o
¿дакоэевюо
Ю NI
ÜIIfiBl
laN093d
■мдидрри|м
88И1ЯВ^^1В
шёШШЁКШВВЯИшё
пимя
Шиши!
шш
ШИИдиДИШ^НИ
МйШЗ^ДДМшДЯ


Что это на фото?

1. Белая плата - мозги: FPGA плата на базе Artix-7 от Xilinx, подключена к ПК по micro USB для прошивки и отладочных логов

2. Мини плата слева сверху - FTDI, обещала "скоростную" связь с компом...

3. Синяя плата справа сверху - сам модуль скоростной камеры с пимпкой "объектива" (извиняюсь за ругательство).

4. Куча проводков от ардуины.


Требовалось:

Захватить видеопоток с камеры и послать на ПК как есть, без сжатия, при этом достичь максимального количества кадров в секунду.


Что за зверь, FPGA плата?


a ül
wA	-'"“AÆ^D\GVVtW\
							
V«^f«fi f’731			L«T \ш	«=.. I«	« ; «> «%» ^ \,Карательная электроника,не делайте так,электроника,разработка железа,DIY,geek porn,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам,


Это процессор или миникомп как "малинка"? 

Нет, но она как процессор может исполнять алгоритм, считать и управлять чем-нибудь. 

По сути FPGA это набор блоков памяти, отдельных битов памяти и простых, проще сложения, логических элементов с управляемыми связями. А связями всего этого набора можно произвольно управлять софтом по своему желанию.


Стоп, а как оно считает, исполняет алгоритм и управляет? 

А тем что специальный софт разбивает алгоритм, написанный на си подобном языке, на отдельные блоки:
массивы размещает в большие блоки памяти, 

переменные разбивает на биты и размещает в отдельные аппаратные биты, 

вычисления, даже такие простые как инкремент разбивает на сотни и тысячи логических функций, для сложных использует готовые аппаратные блоки. 

И потом всё это соединяет вполне реальными физическими связями. И работает всё это на частотах в несколько сотен мегагерц. 

По сути алгоритм превращается в реальную и очень комплексную электрическую схему. Это настолько низкоуровневое программирование, что даже "ниже" не только ассемблера, но и машинных кодов и чёрт побери перфокарт!


100-200 Мгц медленно? и зачем такой дрочь нужен если есть обычная малинка или одноплатные ПК х86 на которых винда крутится? 

Нет, это не медленно и есть задачи, где не возможно обойтись без FPGA физически.


Первая фишка: в том что это не проц, который исполняет алгоритм шаг за шагом. Это куча связанного "железа" которая исполняет весь алгоритм одновременно! Тотальное 100% распараллеливание алгоритма, даже если в нём несколько сотен тысяч строк кода! 

Это даёт возможность такой магии, как сортировка массива за ноль тактов (например, в фильтре шума).

А ещё даёт возможность самому проектировать эмуляторы старых консолей и они будут работать в точности, нет, ТАК В ТАК, так-же как и их аппаратные дедушки, даже даёт возможность сэмулировать баги, и разные аппаратные нестабильности например в звуке чип-тюна ZX-Spectrum. 

А ещё это и чудовищное быстродействие: делать расчёты на 66 Мгц быстрее чем Core i7 на 3700 МГц? запросто! Именно поэтому ASIC (FPGA с предзаказанными, не изменяемыми связями) так полюбились всеми майнерами. 


Вторая принципиально непобедимая фишка: время реакции - раз всё работает параллельно и можно реагировать с нереальной скоростью, в десятки а порой единицы наносекунд. Робототехника, автопрома и оружейка - без FPGA и ASIC (захардкоженный FPGA) никак.


Третья фишка: можно реализовать любую переферию, любой интерфейс самому при помощи исходного кода, и если ты написал сам всё с нуля, включая интерфейсы, то это 100% переносимо, ну не мечта ли? Но с большими оговорками, и можно "отстрелить себе ногу", что я и сделал в интерфейсе камеры.


Модуль камеры:

Карательная электроника,не делайте так,электроника,разработка железа,DIY,geek porn,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам, перевел сам,FPGA,Mirn (фотограф)


Это плата модуля камеры: сверху чёрный цилиндр объектива, под ним чип сенсора который собственно и видит со всей логикой, который установлен на плате, два стабилизатора питания и разъём 40 контактный.

Камера: 

5 мегапикселей.

"Объектив" полное гавно: мылит даже на VGA разрешении, света собирает мало, не настраивается фокус. Но для отладки пойдёт.

Чип сенсора выдаёт RAW формат как в профессиональных фотокамерах, 

Интерфейс параллельный MIPI, он примитивный: каждый такт синхросигнала выдаёт 12 бит данных пикселя, с парой статусных сигналов "конец строки" и "конец кадра".

Для настройки юзает двух проводной I2C.

Коннектор - 40 пиновый, двухрядный с шагом 2.56мм, как в старых жестяках.


Казалось бы всё просто особенно для FPGA...


"Отстрел ноги"


Но чтоб достичь максимальной скорости надо выдать камере максимальную частоту в ~100Мгц (а с гармониками до гигагерца), от которой камера и тактируется, которая в свою очередь даёт обратно FPGA с сырыми данными изображения. 

А это очень быстро, даже слишком быстро и было наивно с моей стороны надеется, что можно отдельными проводками соединить и ничего за это не будет...

Будет!


Во первых: в стародавние времена, когда у жестяков был широченный ParallelATA 40 пиновый коннектор и такой же шлейф, то этот 40 жильный шлейф работал только до частот 30-60МГц, а далее уже нужно было использовать особый магический 80 жильный шлейф. И это не спроста: на таких частотах взаимные наводки очень сильно влияют и портят сигнал. Но в этой связке его использовать нельзя т.к. на основной FPGA плате нет такого же 40пинового разъёма, а мудаки из Xilinx ради маркетинга (ну и чтоб продавать только их доп платки по конской наценке) и несовместимости запилили 4 группы по 12 контактов в два ряда.


Во вторых: длинна ардуино-проводов разная да и на самой плате очень сильно различается длинна дорожек, а это критично на таких скорстях и если даже не из за скорости света то из за разной индуктивности - которая усиливает взимные наводки, разносит их по разным фазам ещё сильнее и превращает сигнал в "кашу".


В третьих: маркетологи посчитали что при помощи платы "всего" за 100 баксов нельзя давать заниматься серьёзными вещами. И поэтому два из четырёх 12 контактных коннекторов GPIO подключили через много килоомные резисторы тем самым зарезав частоту и "завалив форнты" (когда тактовая нарастает не слишком быстро чип камеры, из за шумов может не понять время переключение, это было одно или несколько).


Не делайте так! Не надо пытаться ардуино-проводками подключать такие быстрые (свыше 30 МГц и многобитные интерфейсы)


Попытки профиксить и прочие бесполезные трепыхания 

1. Тактовая пикселей MIPI что выходит из камеры оказалась в разы шумнее: это тактовая из FPGA которая набрала по пути до камеры шумы, а потом вернулась из камеры в FPGA набрав ещё шумов на обратном пути. Пришлось затактироваться внутренней частотой внутри FPGA что генерится и выдаётся наружу. 

Фейл: чип камеры при каждом старте настраивается чуток поразному и поэтому выходящяя из него тактовая тоже на пару наносекунд то отстаёт то опережает. 

Адский Костыль: Нужно вручную подстраивать каждый раз при каждом включении задержку.

2. Фейл: Взаимные шумы: так как лежит на первой картинке (плата связи рядом с платой камеры) не работает! В линке с ПК проскакивают лишние байты или он теряет байты. 

Адский Костыль:  

приходится буквально на пару сантиметров отгибать в сторону камеру вот так:

п
шшш.
ШШшшШШШт
ШШштШШт
ИИИИ^^^ш
ЯЙ1ВШрмШЯЯВУШШ1М
titffn« jmi	Wäwi I ИМWB*w
ШншшаШШшшН
m щ m шщ
SSd frQd . l¿d Z¿ü
¿90
€90
890
V9d


9Ы01
zzzal
b¿za¡

mmi».
^¡м1ашймвя8йшШ|1Ушшшш
ИИДНшИ1Я1ЦИ1Н1НЙМЯИ8МШ1
теШ|ЯШшамаиШиШ^ш
ышишщямшша
iilfleillplilll
шШШШШМЁШШ
ИМмШМ
мин
ни

Чёртов бубновый шаманизм!

3. Мини Фейл: Ардуино проводки - они норовят отскачить при любом неосторожном движении любой платы! Это, просто, очень и очень не удобно, надо ОЧЕНЬ аккуратно всё двигать. 

Костыль: расковырял иголкой разъём чтоб лучше держалось ... помогло мало но вроде помогло.

4. Связь с ПК при помощи модуля FTDI2232H оказалось не настолько крутой как её рекламировала фирма.

Фейл: скорость вместо 480 мегабит оказалась всего в 100 мегабит, т.к. внутри ФТДИхи два канала и они прибиты гвоздями, уже 240мегабит, USB не умеет в 100% пропускной, уже 200Мегабит, а чип не сразу видит такт записи а через пол дополнительного такта: вот тебе и 100 мегабит. Дрочиться собирать из двух каналов один не стал - драйвер фтди перемашивает рандомно. Дрочь.

5. так же производитель камеры обманул: вместо 150 фпс оказалось 128 фпс, сам сенсор оказался очень тёмным на такой скорости.


Дополнительно было сделано

Т.к. камера выдаёт сырой рав-поток как в проф камерах, то его надо обрабатывать как это делают тулзы цифровой проявки такие как Adobe Light room.

Для этого запилил на верилоге свой видеопроц:

в нём и MIPI приёмник, и свой i2c контроллер и такие страшные слова как баланс белого, гамма-коррекция, коррекция дин. диапазона, шумодав (где сортируется за 0 тактов в медианном фильтре), ресайз, усиление и коррекция цветов.

схемка для пущего устрашения (to NN это выход в фтди, и спойлер темы будущей статьи ;):

Карательная электроника,не делайте так,электроника,разработка железа,DIY,geek porn,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам, перевел сам,FPGA,Mirn (фотограф)



Итог и что получилось сделать:

Оно заработало:


слева рендеринг на ПК при помощи OpenCV, 

справа отладочная консоль в формате VT100 с цветами и свистелко-перделками (реализованный аппаратно на FPGA при помощи той же логики и такой-то матери), да я люблю красиво, дорого и богато.


В первую секунду видна первичная инициализация и пуск камеры с логом адресов и значений команд записи.

Далее я ручками, посылаю текстовые команды в FPGA (лексический интерпретатор команд тоже сам сделал, тоже на логике) и настраиваю яркость и чёртову фазу сигналов, видно что после подстройки фазы обильный "розовый снег" исчезает.

После я машу перед камерой древним смартом с настроечной таблицей цветов.


косяки: 

1. т.к. по скорости FTDI подвела то только 64 кадра в сек, в среднем каждый второй пропускается.

2. есть местами мусор в виде снега и цветных кластеров (показаны красными стрелочками)

Карательная электроника,не делайте так,электроника,разработка железа,DIY,geek porn,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам, перевел сам,FPGA,Mirn (фотограф)

3. сам модуль камеры на такой скорости оказалось лютым гавном, мутная, и шумов много т.к. ISO задран к небесам.


Использованные ресурсы чипа:

Utilization
Resource	Utilization
LUT	4855
LUTRAM	22
FF	10275
BRAM	45.50
10	44
BUFG	3
PLL	1
Post-Synthesis I Post-Implementation
Available
Graph	I Table
Utilization %	
20800	23.34
9600	0.23
41600	24.70
50	91.00
210	20.95
32	9.38
5	20.00,Карательная электроника,не делайте

блочной BRAM памяти больше всего ушло на буфер одного кадра.
Ушло примерно 200 часов моего времени на разработку, из них 150 на видео проц (raw --> rgb).


Вывод: 

Не делайте так! Не надо пытаться ардуино-проводками подключать такие быстрые (свыше 30 МГц и многобитные интерфейсы). Именно поэтому профессионалы порой недолюбливают ардуинщиков за такие дикие сопли с ардуино-проводками. 


А отладить камеру и ip-корку (аппаратная либа) видеопроца я всё-таки смог. Благо сам алгоритм разработал и верифицировал формально и математически, а на FPGA только проверил, что оно в принципе работает и понял что надо копать в сторону само синхронных синфазных LVDS гигабитных интерфейсов без тактовой и всего этого дроча с шумами.


На этом всё, вот в завершение фотка с топологией чипа (светлосиним заюзанные аппаратные ячейки), зачем? незнай, просто красивый город как из сим-сити вышел.

□□□□ □□□□□□□ □ □
■■■■И”
■ ■■
В ■ В ■	•■!■ » » °|BD В ■ ■ IB BIB ■»
в в ■ ■ oionna ’ini в в	a
'■ВВВ зшинввва ■■ни17 “ ■ ■ «в ■■■ion вив “ ■ ■ ° *ня *	• валяв■в|в а ■ ав*»
	ВИЕВ»я
	вея > »
■ Ш	■авяв9
a •	■ В *
В	■ В* В
■■■■в в■ЯШ "В ■ ■ "В■ вввавв <■ ■ ■ в в ■ ваш я яви ■■■■ ■ ВШЯ «Я в




Развернуть

FPGA geek geek porn песочница 

Недавно приобрел вот такую замечательную платку
your dreams,,FPGA,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,geek porn,песочница
Развернуть

личное FPGA ПЛИС Dendy geek 

Тем кто близок с плисами и хардовым программированием наверное будет интересно, хотя такие люди явно сами сидят на хабре :) http://habrahabr.ru/post/185872/
личное,FPGA,ПЛИС,Dendy,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор
Развернуть
В этом разделе мы собираем самые смешные приколы (комиксы и картинки) по теме FPGA (+4 картинки, рейтинг 61.6 - FPGA)