Pull to refresh
1
0
Ron Swanson @Almighty_Goose

Burt Makclin, FBI

Send message

Взгляд на 10G Ethernet со стороны FPGA разработчика

Reading time8 min
Views99K
Всем привет!

Многие специалисты знают, что топовое сетевое оборудование использует специальные чипы для обработки трафика. Я принимаю участие в разработке таких молотилок и хочу поделиться своим опытом в создании таких высокопроизводительных девайсов (со интерфейсами 10/40/100G Ethernet).

Для создания нового канала сетевики чаще всего берут оптику, пару SFP+ модулей, втыкают их в девайсы: лампочки радостно загораются, пакеты начинают приходить: чип начинает их передавать получателям. Но как чип получает пакеты из среды передачи? Если интересно, то добро пожаловать под кат.
Читать дальше →
Total votes 149: ↑148 and ↓1+147
Comments47

Ошибки в макетных платах и методы их устранения

Reading time5 min
Views13K

Приветствую, Хабр!

Иногда на меня находит меланхолия. Копаюсь в архивных фотографиях, вспоминаю старые проекты. Недавно из большой коробки с барахлом достал несколько макетов, где исправлялись различные (в основном, конечно, глупые) ошибки. Это будет пост о том «как не нужно было делать» или «учимся на своих ошибках».

Читать далее
Total votes 116: ↑116 and ↓0+116
Comments58

HyperRAM: использование микросхемы с интерфейсом памяти HyperBus

Reading time7 min
Views9.8K


Продолжаем знакомить читателей Хабра с «нестандартными» типами памяти для разработки электроники. В прошлый раз мы рассказывали о гибридном кубе памяти (HMC) и его подключении к FPGA, а в этой статье сфокусируемся на микросхемах памяти с интерфейсом HyperBus от Cypress, которые появились на рынке относительно недавно, в 2014 году.

Сейчас доступно две разновидности устройств: HyperRAM и HyperFLASH. HyperRAM — это псевдо-статическая память (DRAM + схема перезаряда в одном чипе), а HyperFLASH — это NOR-флэш-память с интерфейсом HyperBUS. Также доступны комбинированные чипы 2 в 1: HyperFLASH 512Mb + HyperRAM 64Mb. Ценность современных решений заключается в малом числе сигналов, мелком футпринте, достаточно большой скорости работы и адекватной цене.
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments3

Малоизвестные и интересные особенности C и C++

Level of difficultyMedium
Reading time43 min
Views46K

В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.

Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее
Total votes 127: ↑126 and ↓1+159
Comments61

Личный прокси для чайников: универсальный обход цензуры с помощью VPS, 3X-UI, Reality/CDN и Warp

Level of difficultyMedium
Reading time27 min
Views119K

> С 10 апреля 2024, 3 месяца спустя,
> данная статья заблокирована РКН на территории РФ,
> но доступна с IP других стран, а также через веб-архив.

На фоне прошлогоднего обострения цензуры в РФ, статьи автора MiraclePTR стали глотком свободы для многих русскоязычных айтишников. Я же хочу приоткрыть дверь к свободной информации чуть шире и пригласить «не‑технарей» («чайников»), желающих поднять личный прокси‑сервер для обхода цензуры, но дезориентированных обилием информации или остановленных непонятной технической ошибкой.

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

Статья рассчитана на «чайников», не знакомых с предметной областью. Однако и люди «в теме» могут найти нечто полезное (например, чуть более простую настройку проксирования через CloudFlare без необходимости поднимать nginx на VPS).

Если у вас ещё нет личного прокси для обхода цензуры — это знак.

Читать далее
Total votes 102: ↑100 and ↓2+109
Comments284

Реализация кодека 66b/64b на языке VHDL

Level of difficultyEasy
Reading time4 min
Views2.8K

В протоколах передачи данных для стабильной работы используются кодеки, выбранные разработчиками с учётом следующих требований:

равномерное распределение 0 и 1 в канале

простота кодирования/декодирования

иметь небольшую избыточность

Один из самых распространённых протоколов, о которых думаю, если не каждый человек, то уж каждый инженер точно слышал, является Ethernet, который имеет большое количество стандартов. Он так же использует кодек, а именно 66b/64b, который широко известен в инженерных кругах. Вот небольшой список популярных протоколов, использующих этот кодек:

Ethernet (10,40,100G)

Common Public Radio Interface

Fibre Channel (10G, 16G)

Infiniband (FDR, EDR)

Thunderbolt

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments4

Симулятор электронных схем Qucs-S: обзор новшеств версии 2.1.0

Reading time6 min
Views13K

Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux и Windows) и написан на С++ с использованием набора библиотек Qt. Для работы Qucs рекомендуется использовать также открытый движок моделирования Ngspice. Первый релиз Qucs, на котором основан Qucs-S, состоялся в 2003 году. В декабре этого года программе исполняется 20 лет. Актуальным релизом Qucs-S на текущий момент является версия 2.1.0. Далее будет рассказано о функциях, добавленных в релизах, вышедших в этом году.

Осторожно! Далее имеются анимированные GIF.

Читать далее
Total votes 42: ↑42 and ↓0+42
Comments20

Как хакнуть себе голову? Эффективно переключаем состояния на примере IT-специалистов

Level of difficultyMedium
Reading time23 min
Views49K

Разработчик Вася не смог включиться в работу утром. Потом еще был эмоциональный митинг с заказчиком, после которого снова активировалась прокрастинация. В итоге вместо восьми запланированных часов работы — три. Вася понимает, что дома придется доделывать рабочие задачи, и потому он снова забьет на свое (постоянно откладываемое) обучение.

Тут появляются авторы статьи, которую вы читаете, и предлагают попробовать пару интересных штук для эффективного включения. Мы пробуем замедлиться в два раза и еще пощелкать с десяток примеров устного счета. После митинга – вынести всю рефлексию на бумагу и «шлифануть» это активной прогулкой. Простые решения, которые в совокупности позволяют не терять время на «тупняк в монитор». 

Как мы подобрали эти решения и почему именно они? В целом, подобных приемов есть около четырех десятков, а конкретных техник – и того больше. Чтобы выйти на конкретные действия, которые нужны именно вам, мы создали простой инструмент, описанный далее в статье.

Читать далее
Total votes 20: ↑11 and ↓9+3
Comments13

Starting Electronics: руководство по веб-серверам на Arduino. Часть 8. Веб-сервер с SD картой и ссылки на страницы

Level of difficultyMedium
Reading time6 min
Views3.3K


От переводчика. Всё интереснее и интереснее. В этом уроке рассматривается хранение двух файлов на SD карте памяти веб-сервера и создание ссылок в HTML коде веб-страниц на эти файлы, а также загрузка этих страниц при нажатии на ссылки. Фактически мини-прототип сайта, который вы можете самостоятельно развивать и модернизировать.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments2

KVM: Что такое Kernel-based Virtual Machine?

Level of difficultyMedium
Reading time17 min
Views47K

Начнем с простого вопроса:

Что означает QEMU/KVM или QEMU-KVM?

Можно ответить - это QEMU + KVM или qemu-system, запущенный с kvm в качестве ускорителя. Но в какой-то степени это еще и анахронизм, так как с появлением KVM его разработчики для интеграции с QEMU поддерживали отдельный форк qemu-kvm, но начиная с QEMU версии 1.3 (декабрь 2012) все основные изменения из qemu-kvm были перенесены в главную ветку QEMU, а qemu-kvm объявлен устаревшим.

В разных дистрибутивах до сих пор еще можно встретить исполняемый файл qemu-kvm или просто kvm, но это лишь обертки над qemu-system:

exec qemu-system-x86_64 -enable-kvm "$@"

или симлинки:

/usr/bin/kvm -> qemu-system-x86_64

А в самом qemu существует проверка:

Читать далее
Total votes 81: ↑81 and ↓0+81
Comments9

Меньше точно не бывает! Делаем вольтметр на ATTINY10

Reading time4 min
Views18K

В продолжение к прошлой статье решил пощупать и Attiny10. Ну меньше уже точно ничего нет. Если и есть такое извращение с 4 ногами, я о нем не знаю, точнее не нашел.

Тут у нас полноценный МК, в корпусе SOT-23! И задачи на нем решать можно вполне серьезные. Собрав схему на макетке, с МК на адаптере и модулем дисплея я было обрадовался, но готовая плата работать отказалась...

Читать далее
Total votes 60: ↑58 and ↓2+79
Comments75

Сам себе сотовый оператор

Reading time14 min
Views89K
… Кроме типовых для журнала статей, там была статья за авторством некоего «DI HALT» про то, как из двух телефонов и микроконтроллера извлечь кучу лулзов. «Прикольный ник» — подумал мальчик Андрей и перелистнул страницу, ибо ниасилил. А за ней была статья того же автора про то, как скрестить флешку с мышкой. «А вот это нам под силу» — подумал мальчик и убил уже знакомую вам флешку банальной переполюсовкой. Но зато он понял, что электроника — это весело и почти безопасно. — с просторов



Приветствую всех!

Многие из вас наверняка слышали про OsmocomBB. Однако каких-то исчерпывающих мануалов по запуску почему-то крайне мало. Итак, в ходе данной статьи постараемся максимально простым образом запустить собственную базовую станцию из доступных комплектующих. Постараемся разобраться, как сделать так, чтобы оно точно заработало.
Читать дальше →
Total votes 342: ↑342 and ↓0+342
Comments135

Интеллектуальный Ethernet-коммутатор для планеты Земля

Reading time9 min
Views32K

«Создать решение (решить проблему) можно несколькими способами, но, не всегда самый дорогой или/и популярный способ — самый эффективный!»

Преамбула


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

-> Введение. Теоретическая часть. Интеллектуальный Ethernet-коммутатор для планеты Земля
-> Практическое руководство по строительству виртуальных сетей. Часть 1
-> Практическое руководство по строительству виртуальных сетей. Часть 2
Читать дальше →
Total votes 22: ↑21 and ↓1+36
Comments9

Отладка интерфейса I2S

Level of difficultyEasy
Reading time6 min
Views9.9K

В этом тексте я написал про особенности интерфейса I2S и про то как можно тестировать и отлаживать интерфейс I2S.

Читать далее
Total votes 12: ↑11 and ↓1+13
Comments4

SWUpdate, Yoctо(ерный) театр и paperina

Reading time15 min
Views3.7K

SWUpdate — это агент обновлений Linux, целью которого является эффективный и безопасный способ обновления встроенной системы. SWUpdate поддерживает локальные и удаленные обновления, включает несколько стратегий обновления, и его можно легко интегрировать в систему сборки Yocto, подключив слой meta-swupdate.

В статье описывается как можно настроить режим обновление в Yocto наиболее простым способом для платы Orange Pi R1, таким же образом вы можете настроить и обновление для самой распространенной платы Raspberry Pi.

Дистрибутив Yocto для которого будет подготовлено обновление наследуется от образа core-image-minimal и выполняет функцию простого маршрутизатора, используя DHCP и Shorewall.

Статья из серии: если хочешь что то обновить, сделай это сам.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments1

Бюджет потерь USB 3.2

Reading time17 min
Views29K

Откуда столько названий стандартов USB? Какие допустимые потери сигнала в кабеле по спецификации, и почему почти никто ей не следует? Как измерить потери в дифференциальной линии и не продать почку?

Статья будет наиболее полезна для hardware-инженеров, разрабатывающих системы с высокоскоростными интерфейсами, но рассчитана на базовый уровень знаний в электронике. Узнаем о истории стандарта, понятии потерь, способах оценки и измерений.

Страх и ненависть в спецификации USB
Total votes 122: ↑121 and ↓1+154
Comments60

PCI Express в ПЛИС V-й серии Intel: основы интерфейса и особенности аппаратных ядер

Reading time16 min
Views16K

Введение


Знакомый многим интерфейс PCI Express или PCIe был доступен разработчикам систем на ПЛИС уже тогда, когда он только начинал распространяться в цифровой технике. В это время существовало решение, в котором программное ядро подключалось ко внешней микросхеме физического уровня [5]. Это позволяло создавать одноканальную линию PCIe со скоростью 2,5 гигатранзакций в секунду. В дальнейшем, благодаря развитию технологий, физический уровень интерфейса перекочевал в аппаратные блоки PCIe внутри самих ПЛИС; количество возможных каналов увеличилось до 8, а в ряде новых микросхем — и до 16; вслед за современными стандартами выросли возможные скорости передачи данных.

В то же время, в русскоязычных источниках по-прежнему затруднительно найти вспомогательные материалы по работе с аппаратными ядрами современных ПЛИС, не так и много информации доступно по самому интерфейсу PCIe. Руководство к аппаратным ядрам PCI Express подразумевает, что разработчик уже ознакомился со стандартом и понимает основы передачи данных между устройством и персональным компьютером (ПК). Однако обилие информации в самом стандарте PCIe не дает сразу же разобраться в том, какие шаги необходимо предпринять, чтобы успешно передать данные от устройства в память ПК или обратно. Чтобы получить более полную картину, немалую часть сведений приходится собирать по крупицам из разных источников. Для разработчиков систем на ПЛИС фирмы Intel сложность также заключается в том, что большинство доступных материалов и статей описывают работу с аппаратными ядрами ПЛИС фирмы Xilinx.

В данной статье автор постарается рассказать о том, что необходимо знать разработчику систем на ПЛИС для работы с интерфейсом PCI Express; рассмотрит особенности работы с аппаратными ядрами PCI Express ПЛИС V-й серии фирмы Intel в варианте Avalon-ST.
К основной части
Total votes 33: ↑33 and ↓0+33
Comments20

Делаем блок SPI to AVALON_MM для USB-устройства на базе FX3

Reading time18 min
Views2.4K
В предыдущей статье мы научились подавать Vendor команды в устройство USB3.0 на базе контроллера FX3 и реализовали программную шину SPI. Сегодня мы продолжим начатое и сделаем компонент SPI to Avalon_MM. Может возникнуть вопрос: мы же уже умеем работать с шиной Avalon_MM через JTAG средствами TCL-скриптов, зачем нам что-то ещё?

Дело в том, что когда мы работаем на чистом TCL, как делали это здесь и здесь, всё замечательно. Но для задач, гоняющих десятки или даже сотни мегабайт, этот вариант слишком медленный. Поэтому мы вынуждены добавить программу на С++, работающую через USB 3.0.

Вариант с TCL-сервером, к которому обращается плюсовая программа, рассмотренный в этой статье, требует сложной ручной подготовки при каждом запуске. Надо обязательно запустить среду исполнения (для Windows и Linux они разные), запустить серверный скрипт, а затем – в программе синхронизировать работу с данными по USB и с командами через TCP. Не люблю такие сложности. Оставим те варианты под случаи, когда они не создают трудностей. Здесь же у нас есть USB-устройство, мы всё равно с ним работаем, вот и будем обращаться к шине AVALON_MM через него. Приступаем.


Читать дальше →
Total votes 5: ↑4 and ↓1+5
Comments9

Генерация клока в ПЛИС на примитивах

Reading time5 min
Views6.7K
Читая даташиты на ПЛИС, можно находить таблички об их рабочих частотах…

Хотя нет, история начинается еще с 2015 года, когда я познакомился с ПЛИС. В своих первых простеньких работах я формировал нужный мне клок из счетчика и запитывал от него всю логику(естественно при условии что клок мне нужен медленнее чем подавался на ПЛИС, например UART и SPI). Естественно за такое меня гоняли, но у меня была простая отмазка «но ведь работает же!», и действительно все работало. С тех пор у меня в голове закралась мысль «а откуда вообще можно взять тактирующий сигнал?».

Вариантов источников взять клок не много. Либо взять из некого ClockWizard основанный на PLL или MMCM, либо сформировать из счетчика, либо сразу с ножки так сказать single ended. А что, если взять тактовый сигнал сформированный примитивом ПЛИС?
Читать дальше →
Total votes 8: ↑6 and ↓2+8
Comments39

Шлюз Modbus RTU с поддержкой Ethernet

Reading time5 min
Views11K

Существует большое разнообразие WI-FI модулей на основе чипа ESP32. Как правило, основной канал передачи и получения данных  WI-FI, реже Bluetooth, т.е. беспроводные технологии, не требующие дополнительного «обвеса».  Достаточно создать web страницу и используя браузер управлять всеми настройками.  Используя эту концепцию мне удалось создать серию интерфейсных плат в разном форм-факторе, от встраиваемых  до внешних универсальных  с дополнительными функциями.   Пришло время добавить и проверить работу  проводного интерфейса Ethernet.

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments5

Information

Rating
4,452-nd
Location
Россия
Registered
Activity