Обфускация Verilog/SystemVerilog кода
Если кто не в теме, то это замена всех имен в коде на абракадабру и снос всего форматирования (опционально). Используется при передаче кода третьим лицам как "мягкая" замена шифрованию. Код вроде как открыт, но чтобы разобраться в нём нужно попотеть, особенно если это какой-нибудь нетлист без иерархии на много мегабайт. Защита от честных людей по большому счёту)
Так вот. Раньше пробовал Verilog-Perl - там есть утилита
Тут выше постил про Verible (как форматтер кода от Google). У них оказывается в комплекте есть ещё утлита для обфускации - verible-verilog-obfuscate.
Работает гораздо лучше. На тот же самый нетлист на ~1М имён уходит минут десять. Правда в процессе потребление памяти 10-14ГБ, но это мелочи.
Ну и небольшой gist по результатам, чтобы не забыть как делал.
#verilog #system_veriog #obfuscation
Если кто не в теме, то это замена всех имен в коде на абракадабру и снос всего форматирования (опционально). Используется при передаче кода третьим лицам как "мягкая" замена шифрованию. Код вроде как открыт, но чтобы разобраться в нём нужно попотеть, особенно если это какой-нибудь нетлист без иерархии на много мегабайт. Защита от честных людей по большому счёту)
Так вот. Раньше пробовал Verilog-Perl - там есть утилита
vrename. Работает, но оооочень уж медленно. Чтобы обфусцировать условный нетлист с ~1М уникальных имён уходят не одни сутки (однако, я шибко не профилировал где затык).Тут выше постил про Verible (как форматтер кода от Google). У них оказывается в комплекте есть ещё утлита для обфускации - verible-verilog-obfuscate.
Работает гораздо лучше. На тот же самый нетлист на ~1М имён уходит минут десять. Правда в процессе потребление памяти 10-14ГБ, но это мелочи.
Ну и небольшой gist по результатам, чтобы не забыть как делал.
#verilog #system_veriog #obfuscation
metacpan.org
Verilog-Perl
Verilog language utilities and parsing
Заставляем худеть Vivado/Quartus с помощью жёстких ссылок
https://www.reddit.com/r/FPGA/comments/ellcrr/psa_deduplicate_your_vivadoquartusiseetc_installs/
Папка с кучей версий софта от Xilinx до:
Делаем:
Она же после:
Итого: -260Гб за счёт избавления от дубликатов!
#vivado #quartus
https://www.reddit.com/r/FPGA/comments/ellcrr/psa_deduplicate_your_vivadoquartusiseetc_installs/
Папка с кучей версий софта от Xilinx до:
$ sudo du -hcs /opt/Xilinx/*
21G /opt/Xilinx/14.7
619M /opt/Xilinx/DocNav
255M /opt/Xilinx/Model_Composer
82G /opt/Xilinx/SDK
28G /opt/Xilinx/Vitis
342G /opt/Xilinx/Vivado
7.7G /opt/Xilinx/Vivado_HLS
643M /opt/Xilinx/xic
479G total
Делаем:
rdfind -dryrun false -makehardlinks true /opt/Xilinx/
Она же после:
$ sudo du -hcs /opt/Xilinx/*
18G /opt/Xilinx/14.7
615M /opt/Xilinx/DocNav
192M /opt/Xilinx/Model_Composer
44G /opt/Xilinx/SDK
25G /opt/Xilinx/Vitis
133G /opt/Xilinx/Vivado
1.2G /opt/Xilinx/Vivado_HLS
30M /opt/Xilinx/xic
220G total
Итого: -260Гб за счёт избавления от дубликатов!
#vivado #quartus
Аппаратные SPI и I2C в Lattice ICE40 UltraPlus
Довольно полезный тред по нюансам использования аппаратных SPI и I2C в ICE40UP.
https://github.com/YosysHQ/icestorm/issues/174
Если коротко, то SPI можно относительно легко поднять (есть рабочие примеры), а вот с I2C ситуация "оставь надежду всяк сюда входящий":
#fpga #lattice #spi #i2c #yosys
Довольно полезный тред по нюансам использования аппаратных SPI и I2C в ICE40UP.
https://github.com/YosysHQ/icestorm/issues/174
Если коротко, то SPI можно относительно легко поднять (есть рабочие примеры), а вот с I2C ситуация "оставь надежду всяк сюда входящий":
this block is pretty horrible and fussy, and you should use an RTL IP block if you can. But if you're out of gates -- you're out of gates, and I hope these notes can help you.
#fpga #lattice #spi #i2c #yosys
GitHub
UltraPlus I2C and SPI · Issue #174 · YosysHQ/icestorm
Has anyone tried the hard I2C and SPI modules in the UltraPlus FPGAs and got them working? I have spent the past few days tinkering away using the information in these documents: http://www.lattice...
SystemVerilog цикл foreach: индексы
Банальность, на которую можно легко нарваться, и которая сходу не так очевидна.
Если размерность массива задана числом (только для неупакованных), то перебор индексов будет идти от 0:
Однако, если любая из размерностей задана диапазоном [msb:lsb], то перебор индексов будет идти от msb к lsb, и никак иначе.
Для неупакованных:
Ну и для упакованных и векторов:
И ещё один момент, связанный с многомерностью. Допустим, есть сложносочинённый массив, который надо перебрать в foreach:
Получится 4 вложенных цикла, где будут индексы (от внешнего цикла к внутреннему):
#system_veriog
Банальность, на которую можно легко нарваться, и которая сходу не так очевидна.
Если размерность массива задана числом (только для неупакованных), то перебор индексов будет идти от 0:
logic a [3];
foreach (a[i]) $display(i);
---
0
1
2
Однако, если любая из размерностей задана диапазоном [msb:lsb], то перебор индексов будет идти от msb к lsb, и никак иначе.
Для неупакованных:
logic b [0:2];
foreach (b[i]) $display(i);
---
0
1
2
---
logic c [2:0];
foreach (c[i]) $display(i);
---
2
1
0
Ну и для упакованных и векторов:
logic [2:0] d;
foreach (d[i]) $display(i);
---
2
1
0
И ещё один момент, связанный с многомерностью. Допустим, есть сложносочинённый массив, который надо перебрать в foreach:
logic [7:0][31:0] a [15:0][4];
foreach(a[i, j, k, n]) ...
Получится 4 вложенных цикла, где будут индексы (от внешнего цикла к внутреннему):
i - 15 ... 0
j - 0 ... 3
k - 7 ... 0
n - 31 ... 0
#system_veriog
Electronics etc...
Классный блог от инженера Nvidia
https://tomverbeure.github.io/
Мужик играется со всякими прикольными штуками и пишет посты об этом. Из интересного: PDM микрофоны и CIC/FIR фильтры, RISC V, SpinalHDL, Yosys, формальная верификация и куча другого.
#fpga #blog
Классный блог от инженера Nvidia
https://tomverbeure.github.io/
Мужик играется со всякими прикольными штуками и пишет посты об этом. Из интересного: PDM микрофоны и CIC/FIR фильтры, RISC V, SpinalHDL, Yosys, формальная верификация и куча другого.
#fpga #blog
ADALM2000
Узнал тут о такой прикольной штуке от Analog Devices. По сути, компактная измерительная лаборатория на usb шнурке, затыкающая за пояс всю low-end измериловку с Али.
https://wiki.analog.com/university/tools/m2k
Позиционируется как железо, с помощью которого можно учить людей электронике. Даже лабы есть:
https://wiki.analog.com/university/courses/electronics/labs
Самое крутое, что открыто буквально ВСЁ: схемотехника, исходники линукса, который крутится внутри, исходники софта на пк. Там внутри Zynq-7010, а значит, что можно рассматривать эту плату и как отладку ARM+FPGA с аналоговым фронтэндом, что тоже может быть интересно в определенных ситуациях.
Цена: $150 за океаном, и $250 у дистрибьюторов в РФ.
Ну и основные фичи из коробки:
* Two-channel oscilloscope with differential inputs
* Two-channel arbitrary function generator
* 16-channel digital logic analyzer (3.3V CMOS and 1.8V or 5V tolerant, 100MS/s)
* 16-channel pattern generator (3.3V CMOS, 100MS/s)
* 16-channel virtual digital I/O
* Two input/output digital trigger signals for linking multiple instruments (3.3V CMOS)
* Two-channel voltmeter (AC, DC, ±25V)
* Network analyzer – Bode, Nyquist, Nichols transfer diagrams of a circuit. Range: 1Hz to 10MHz
* Spectrum Analyzer – power spectrum and spectral measurements (noise floor, SFDR, SNR, THD, etc.)
* Digital Bus Analyzers (SPI, I²C, UART, Parallel)
* Two programmable power supplies (0…+5V , 0…-5V)
#logic_analyzer #oscilloscope #lab
Узнал тут о такой прикольной штуке от Analog Devices. По сути, компактная измерительная лаборатория на usb шнурке, затыкающая за пояс всю low-end измериловку с Али.
https://wiki.analog.com/university/tools/m2k
Позиционируется как железо, с помощью которого можно учить людей электронике. Даже лабы есть:
https://wiki.analog.com/university/courses/electronics/labs
Самое крутое, что открыто буквально ВСЁ: схемотехника, исходники линукса, который крутится внутри, исходники софта на пк. Там внутри Zynq-7010, а значит, что можно рассматривать эту плату и как отладку ARM+FPGA с аналоговым фронтэндом, что тоже может быть интересно в определенных ситуациях.
Цена: $150 за океаном, и $250 у дистрибьюторов в РФ.
Ну и основные фичи из коробки:
* Two-channel oscilloscope with differential inputs
* Two-channel arbitrary function generator
* 16-channel digital logic analyzer (3.3V CMOS and 1.8V or 5V tolerant, 100MS/s)
* 16-channel pattern generator (3.3V CMOS, 100MS/s)
* 16-channel virtual digital I/O
* Two input/output digital trigger signals for linking multiple instruments (3.3V CMOS)
* Two-channel voltmeter (AC, DC, ±25V)
* Network analyzer – Bode, Nyquist, Nichols transfer diagrams of a circuit. Range: 1Hz to 10MHz
* Spectrum Analyzer – power spectrum and spectral measurements (noise floor, SFDR, SNR, THD, etc.)
* Digital Bus Analyzers (SPI, I²C, UART, Parallel)
* Two programmable power supplies (0…+5V , 0…-5V)
#logic_analyzer #oscilloscope #lab
Блог positive slack
esynr3z.github.io
Давно хотел себе собственную площадку (сайт/блог), чтобы расшаривать гайды и другие лонгриды, рождённые в приступе графомании и исследовательского азарта. И как оказывается, даже с нулевым знанием веба такое легко поднять без затрат:
* в качестве хоста Github Pages (сайт - это репозиторий)
* Jekyll чтобы сгенерировать статичный сайт с постами из маркдаун файлов
* комменты с помощью utterances - использует issues репозитория для хранения комментов
* GoatCounter легкая и открытая privacy-friendly аналитика, чтобы смотреть просмотры и другие статы
Т.е. в итоге и блог, и комменты хранятся в репозитории на гитхабе, остаётся лишь писать посты в маркдауне и коммитить.
Пока там конечно пустовато (только статьи, побывавшие на хабре), но это дело наживное, было бы время.
#blog
esynr3z.github.io
Давно хотел себе собственную площадку (сайт/блог), чтобы расшаривать гайды и другие лонгриды, рождённые в приступе графомании и исследовательского азарта. И как оказывается, даже с нулевым знанием веба такое легко поднять без затрат:
* в качестве хоста Github Pages (сайт - это репозиторий)
* Jekyll чтобы сгенерировать статичный сайт с постами из маркдаун файлов
* комменты с помощью utterances - использует issues репозитория для хранения комментов
* GoatCounter легкая и открытая privacy-friendly аналитика, чтобы смотреть просмотры и другие статы
Т.е. в итоге и блог, и комменты хранятся в репозитории на гитхабе, остаётся лишь писать посты в маркдауне и коммитить.
Пока там конечно пустовато (только статьи, побывавшие на хабре), но это дело наживное, было бы время.
#blog
Jekyll • Simple, blog-aware, static sites
Transform your plain text into static websites and blogs
Modelsim и самовольное открытие файлов во время симуляции
Эта штука оказывается раздражает не только меня - когда модельсим останавливается по $stop/$finish и открывает исходник, где эта команда была. А так как, это чаще всего файл тестбенча, который активно правится, то он ещё и каждый раз любезно спрашивает что делать после того как этот открытый файл был изменён.
Отключить можно в
#modelsim #tips_and_tricks
Эта штука оказывается раздражает не только меня - когда модельсим останавливается по $stop/$finish и открывает исходник, где эта команда была. А так как, это чаще всего файл тестбенча, который активно правится, то он ещё и каждый раз любезно спрашивает что делать после того как этот открытый файл был изменён.
Отключить можно в
Tools -> Edit Preferences... -> By name -> Source -> OpenOn*#modelsim #tips_and_tricks
Mikroe Fusion for ARM v8
Отладочная плата как искусство.
https://www.mikroe.com/fusion-for-arm
Источник:
https://news.1rj.ru/str/something_interesting_in_EE/61
#arm #devboard #pcbart #aesthetic
Отладочная плата как искусство.
https://www.mikroe.com/fusion-for-arm
Источник:
https://news.1rj.ru/str/something_interesting_in_EE/61
#arm #devboard #pcbart #aesthetic
fpx: easy USB‑C power for all your devices
https://fpx.oxplot.com/
Маленькая платка с USB Type-C и PowerDelivery триггером.
Подключаешь к заряднику с PD - получаешь на выходе: 5В, 9В, 12В, 15В, 20В, в зависимости от конфигурации и параметров зарядника. Как бы ничего такого - таких триггеров на Али вагон, но прикольный способ конфигурации. Связь через фотоэлемент на плате и область на сайте, которая моргает в соответствии с передаваемыми битиками. Можно настроить напряжение и ток с любого устройства с экраном и браузером.
#usb #usb_pd
https://fpx.oxplot.com/
Маленькая платка с USB Type-C и PowerDelivery триггером.
Подключаешь к заряднику с PD - получаешь на выходе: 5В, 9В, 12В, 15В, 20В, в зависимости от конфигурации и параметров зарядника. Как бы ничего такого - таких триггеров на Али вагон, но прикольный способ конфигурации. Связь через фотоэлемент на плате и область на сайте, которая моргает в соответствии с передаваемыми битиками. Можно настроить напряжение и ток с любого устройства с экраном и браузером.
#usb #usb_pd
LCD Wiki
Смотрел тут дисплейчики на али, и в описании к одному лоту увидел такой сайт:
http://www.lcdwiki.com
Документация, заметки и примеры кода ко всем популярным в DIY дисплеям. Сайт живой и обновляется. Должно быть в закладках, я считаю.
#lcd #display
Смотрел тут дисплейчики на али, и в описании к одному лоту увидел такой сайт:
http://www.lcdwiki.com
Документация, заметки и примеры кода ко всем популярным в DIY дисплеям. Сайт живой и обновляется. Должно быть в закладках, я считаю.
#lcd #display
UPduino V3
* Lattice UltraPlus ICE40UP5K FPGA with 5.3K LUTs, 1Mb SPRAM, 120Kb DPRAM, 8 Multipliers
* FTDI FT232H USB to SPI Device
* ALL 32 FPGA GPIO on 0.1” headers
* 4MB SPI Flash
* RGB LED
Tindie, Github
Чудна логистика во время короновируса. Купил одну плату в начале января - заявлена доставка в 4-6 недель. К концу с 7-ой недели написал продавцу мол не пришло (отправка без трека), он предложил отправить ещё раз. В итоге, в 10-ю неделю приходит повторно отправленая плата, а затем на 12-ой её догоняет первая.
¯\_(ツ)_/¯
#devboard #lattice #fpga
* Lattice UltraPlus ICE40UP5K FPGA with 5.3K LUTs, 1Mb SPRAM, 120Kb DPRAM, 8 Multipliers
* FTDI FT232H USB to SPI Device
* ALL 32 FPGA GPIO on 0.1” headers
* 4MB SPI Flash
* RGB LED
Tindie, Github
Чудна логистика во время короновируса. Купил одну плату в начале января - заявлена доставка в 4-6 недель. К концу с 7-ой недели написал продавцу мол не пришло (отправка без трека), он предложил отправить ещё раз. В итоге, в 10-ю неделю приходит повторно отправленая плата, а затем на 12-ой её догоняет первая.
¯\_(ツ)_/¯
#devboard #lattice #fpga
Реверсим паяльную станцию HI-END класса
Занимательное чтиво про DIY индукционную паяльную станцию.
https://habr.com/ru/post/412607/
#soldering #metcal #diy
Занимательное чтиво про DIY индукционную паяльную станцию.
https://habr.com/ru/post/412607/
#soldering #metcal #diy
Хабр
Реверсим паяльную станцию HI-END класса
У нас было несколько фотографий основной печатной платы, видео из YouTube с осциллограммами напряжений на стоках мосфетов, комментарий на форуме с перечислением ёмкостей резонансных...
EE-269.pdf
447.6 KB
EE-269 - A Beginner’s Guide to Ethernet 802.3
Обзорный материал от Analog Devices. Кмк, неплохая отправная точка чтобы начать изучать Ethernet и хоть немножко сориентироваться во всех этих страшных аббревиатурах слоев и протоколов.
#ethernet
Обзорный материал от Analog Devices. Кмк, неплохая отправная точка чтобы начать изучать Ethernet и хоть немножко сориентироваться во всех этих страшных аббревиатурах слоев и протоколов.
#ethernet
Gigabit Ethernet 101: Basics to Implementation
И ещё про эзернет в стиле "from zero to hero". Теперь про гигабитный. От общего описания к конкретным практическим советам по трассировке платы с phy.
Статья:
https://resources.altium.com/p/gigabit-ethernet-101-basics-implementation
Пример дизайна:
https://github.com/issus/Gigabit-Ethernet
#ethernet #pcb
И ещё про эзернет в стиле "from zero to hero". Теперь про гигабитный. От общего описания к конкретным практическим советам по трассировке платы с phy.
Статья:
https://resources.altium.com/p/gigabit-ethernet-101-basics-implementation
Пример дизайна:
https://github.com/issus/Gigabit-Ethernet
#ethernet #pcb
Altium
Gigabit Ethernet 101: Basics to Implementation
This guide is what you are looking for if you’re ready to add ethernet, especially gigabit ethernet, to your electronic circuit design and need to get up to speed.