Шины данных в примиве SB_RAM40_4K ICE40
И еще кое-что про память.
Yosys не всегда корректно инферрит BRAM, поэтому иногда приходится создавать инстанс SB_RAM40_4K руками. И тут есть неочевидная особенность, связанная с битами данных в разных режимах: последняя таблица вот здесь http://www.clifford.at/icestorm/ram_tile.html.
Ну и как водится, официальный документ LATTICE ICE Technology Library молчит на этот счёт.
На текущий момент по теме граблей ICE40 пока всё. Продолжаю наблюдение.
#lattice #fpga #bram #yosys
И еще кое-что про память.
Yosys не всегда корректно инферрит BRAM, поэтому иногда приходится создавать инстанс SB_RAM40_4K руками. И тут есть неочевидная особенность, связанная с битами данных в разных режимах: последняя таблица вот здесь http://www.clifford.at/icestorm/ram_tile.html.
Ну и как водится, официальный документ LATTICE ICE Technology Library молчит на этот счёт.
На текущий момент по теме граблей ICE40 пока всё. Продолжаю наблюдение.
#lattice #fpga #bram #yosys
USB-UART на максималках
https://habr.com/ru/post/530060/
https://github.com/r2axz/bluepill-serial-monster
#stm32 #usb
https://habr.com/ru/post/530060/
https://github.com/r2axz/bluepill-serial-monster
#stm32 #usb
Хабр
Полноценный трехпортовый USB-Serial адаптер на STM32 Blue Pill (STM32F103C8T6)
Некоторое время назад мне в очередной раз потребовался USB-Serial адаптер. И не просто адаптер c RX/TX, а чтобы еще присутствовали управляющие сигналы. И не один...
Awesome Lattice FPGA boards
В последнее время стал замечать, что многие вдруг стали каталогизировать свои знания в формат Awesome Lists. И как ни странно, это бывает полезным и находятся порой очень крутые списки. Вот например самый полный список Lattice отладок, что я видел.
https://github.com/kelu124/awesome-latticeFPGAs
#fpga #lattice #devboard #awesome
В последнее время стал замечать, что многие вдруг стали каталогизировать свои знания в формат Awesome Lists. И как ни странно, это бывает полезным и находятся порой очень крутые списки. Вот например самый полный список Lattice отладок, что я видел.
https://github.com/kelu124/awesome-latticeFPGAs
#fpga #lattice #devboard #awesome
GitHub
GitHub - kelu124/awesome-latticeFPGAs: :book: List of FPGA Lattice boards using open tools
:book: List of FPGA Lattice boards using open tools - kelu124/awesome-latticeFPGAs
Colorlight Lattice ECP5 boards
Так-то пару десятков баксов (а то и меньше) за 24к ячеек довольно неплохая сделка. В оригинале эти платы позиционируются как контроллеры светодиодных панелей, однако, никто не сможет запретить использовать такую плату как отладку для всякого =)
Кстати, полностью поддерживаются опенсорсным тулчейном (yosys & prjtrellis & nextpnr).
Репозиторий с информацией:
https://github.com/wuxx/Colorlight-FPGA-Projects
Colorlight i5 (из двух плат):
https://aliexpress.ru/item/1005001686186007.html
Colorlight 5A-75B:
https://aliexpress.ru/item/1005001686175194.html
#fpga #lattice #devboard
Так-то пару десятков баксов (а то и меньше) за 24к ячеек довольно неплохая сделка. В оригинале эти платы позиционируются как контроллеры светодиодных панелей, однако, никто не сможет запретить использовать такую плату как отладку для всякого =)
Кстати, полностью поддерживаются опенсорсным тулчейном (yosys & prjtrellis & nextpnr).
Репозиторий с информацией:
https://github.com/wuxx/Colorlight-FPGA-Projects
Colorlight i5 (из двух плат):
https://aliexpress.ru/item/1005001686186007.html
Colorlight 5A-75B:
https://aliexpress.ru/item/1005001686175194.html
#fpga #lattice #devboard
EBAZ4205 - отладка с Zynq почти даром
В продолжение темы бюджетных отладок.
Баян конечно, но поюзанные контроллеры от майнеров на XC7Z010CLG400 (Dual Core Cortex A9 @ 666.66MHz, Artix-7 FPGA 28k LEs) можно купить на Али/Авито за 500-1000р. Что одному хайтэк мусор, другому - крутая отладка.
Репозиторий с информацией:
https://github.com/xjtuecho/EBAZ4205
Али:
https://aliexpress.ru/item/1005001679188068.html
#fpga #xilinx #zynq #devboard
В продолжение темы бюджетных отладок.
Баян конечно, но поюзанные контроллеры от майнеров на XC7Z010CLG400 (Dual Core Cortex A9 @ 666.66MHz, Artix-7 FPGA 28k LEs) можно купить на Али/Авито за 500-1000р. Что одному хайтэк мусор, другому - крутая отладка.
Репозиторий с информацией:
https://github.com/xjtuecho/EBAZ4205
Али:
https://aliexpress.ru/item/1005001679188068.html
#fpga #xilinx #zynq #devboard
ECPIX-5, the modern ECP5 development board
Информация о плате пошла по чатам. Тоже схороню здесь на всякий, т.к. выглядит вкусно.
Относительно доступная (€99 и €149 за 45к и 85к лутов, соответственно), куча IO, быстрые интерфейсы, полная поддержка в опенсорс тулах.
http://docs.lambdaconcept.com/ecpix-5/
https://shop.lambdaconcept.com/home/46-1-ecpix-5.html
Features:
ECPIX-5 comes in two FPGA variants: LFE5UM5G-45F (45K LUTs) or the larger LFE5UM5G-85F (85K LUTs).
* Lattice ECP5-5G FPGA with 5Gbit/s SERDES.
* 4Gb (256MB) of DDR3L RAM
* 256Mb (32MB) Quad-SPI Flash
* Built-in JTAG and serial USB interface
* USB-C port for USB 2 and USB 3 operation
* HDMI 1.4b transmitter
* Gigabit Ethernet
* Full size SATA port
* microSD (UHS-II capable)
* Four RGB LEDs
* Eight industry standard PMOD connectors
Applications:
* nMigen/Migen/LiteX programming
* USB 2/USB 3 prototyping
* Game console emulation
* Software Defined Radio
* Customizable RISC-V SoC
#lattice #fpga #devboard
Информация о плате пошла по чатам. Тоже схороню здесь на всякий, т.к. выглядит вкусно.
Относительно доступная (€99 и €149 за 45к и 85к лутов, соответственно), куча IO, быстрые интерфейсы, полная поддержка в опенсорс тулах.
http://docs.lambdaconcept.com/ecpix-5/
https://shop.lambdaconcept.com/home/46-1-ecpix-5.html
Features:
ECPIX-5 comes in two FPGA variants: LFE5UM5G-45F (45K LUTs) or the larger LFE5UM5G-85F (85K LUTs).
* Lattice ECP5-5G FPGA with 5Gbit/s SERDES.
* 4Gb (256MB) of DDR3L RAM
* 256Mb (32MB) Quad-SPI Flash
* Built-in JTAG and serial USB interface
* USB-C port for USB 2 and USB 3 operation
* HDMI 1.4b transmitter
* Gigabit Ethernet
* Full size SATA port
* microSD (UHS-II capable)
* Four RGB LEDs
* Eight industry standard PMOD connectors
Applications:
* nMigen/Migen/LiteX programming
* USB 2/USB 3 prototyping
* Game console emulation
* Software Defined Radio
* Customizable RISC-V SoC
#lattice #fpga #devboard
https://habr.com/ru/post/537704/
https://github.com/esynr3z/pyhdlsim
#python #pytest #rtl #modelsim #icarus
https://github.com/esynr3z/pyhdlsim
#python #pytest #rtl #modelsim #icarus
Хабр
Прокачиваем скрипты симуляции HDL с помощью Python и PyTest
Все делают это. Ну ладно, не все, но большинство. Пишут скрипты, чтобы симулировать свои проекты на Verilog, SystemVerilog и VHDL. Однако, написание и поддержка таких скриптов часто бывает довольно...
Конвертер SystemVerilog в Verilog
Вдруг в хозяйстве пригодится...
https://github.com/zachjs/sv2v
#verilog #system_verilog #converter
Вдруг в хозяйстве пригодится...
https://github.com/zachjs/sv2v
#verilog #system_verilog #converter
GitHub
GitHub - zachjs/sv2v: SystemVerilog to Verilog conversion
SystemVerilog to Verilog conversion. Contribute to zachjs/sv2v development by creating an account on GitHub.
Awesome Hardware Denoscription Languages
Добротный список того, на чём можно писать железо. От мужика, подарившего нам
https://wavedrom.com
https://github.com/drom/awesome-hdl
#hdl #hls #awesome
Добротный список того, на чём можно писать железо. От мужика, подарившего нам
https://wavedrom.com
https://github.com/drom/awesome-hdl
#hdl #hls #awesome
GitHub
GitHub - drom/awesome-hdl: Hardware Denoscription Languages
Hardware Denoscription Languages. Contribute to drom/awesome-hdl development by creating an account on GitHub.
verilog_pwl_modeling_mixed_signal.pdf
2.9 MB
SystemVerilog для симуляции аналоговых компонентов
Гуглил тут на тему, как лучше в обычном цифровом тестбенче имитировать RC-цепь, аналоговый компаратор и т.п. Чтобы без всяких Verilog-AMS и прочих mixed-signal наворотов.
Наткнулся на шикарный диссер из Стэнфорда, где показан общий подход к тому, как с помощью SystemVerilog и кусочно-линейных функций создать pin-accurate модель аналогового блока, работающую в любом цифровом симуляторе.
VERILOG PIECEWISE LINEAR BEHAVIORAL MODELING FOR MIXED-SIGNAL VALIDATION
Sabrina Liao
https://purl.stanford.edu/pb381vh2919
#simulation #system_verilog #mixed_signal #analog_design
Гуглил тут на тему, как лучше в обычном цифровом тестбенче имитировать RC-цепь, аналоговый компаратор и т.п. Чтобы без всяких Verilog-AMS и прочих mixed-signal наворотов.
Наткнулся на шикарный диссер из Стэнфорда, где показан общий подход к тому, как с помощью SystemVerilog и кусочно-линейных функций создать pin-accurate модель аналогового блока, работающую в любом цифровом симуляторе.
VERILOG PIECEWISE LINEAR BEHAVIORAL MODELING FOR MIXED-SIGNAL VALIDATION
Sabrina Liao
https://purl.stanford.edu/pb381vh2919
#simulation #system_verilog #mixed_signal #analog_design
Icarus и SystemVerilog
Поддержка SV в Икарусе потихоньку развивается - вот в достаточно свежей 11-ой версии (сентябрь 2020) обнаружил, что уже поддерживаются конструкции always_comb, always_ff и always_latch!
Однако, как сами отмечают авторы
Единственное, 11-ю версию еще не завезли в системные репозитории, поэтому надо собирать самому из исходников.
https://iverilog.fandom.com/wiki/Release_Notes_Icarus_Verilog_11
#icarus #system_verilog
Поддержка SV в Икарусе потихоньку развивается - вот в достаточно свежей 11-ой версии (сентябрь 2020) обнаружил, что уже поддерживаются конструкции always_comb, always_ff и always_latch!
Однако, как сами отмечают авторы
Missing SystemVerilog Language Features
This is still too large a list to enumerate.
Единственное, 11-ю версию еще не завезли в системные репозитории, поэтому надо собирать самому из исходников.
https://iverilog.fandom.com/wiki/Release_Notes_Icarus_Verilog_11
#icarus #system_verilog
Icarus Verilog
Release Notes Icarus Verilog 11 | Icarus Verilog | Fandom
Here are the release notes for Icarus Verilog release branch 11. The 11 release extends support for the Verilog and SystemVerilog languages as well as fixing many bugs. Release notes for later...
Extreme Wiring on the Prototyping Board
Видео от легендарного ELM-ChaN про прототипирование на коленке.
https://www.youtube.com/watch?v=i5MNLTc7YhY&ab_channel=tHaH4x0r
Понравилась идея с податчиком провода. В комбинации с пинцетом можно очень быстро и точно формировать "дорожки". В коментах пишут, что используется медный эмалированый провод 0.2. А сам диспенсер можно сделать из ручки, хотя, как мне кажется, механический карандаш тоже должен зайти.
#pcb #prototype #soldering
Видео от легендарного ELM-ChaN про прототипирование на коленке.
https://www.youtube.com/watch?v=i5MNLTc7YhY&ab_channel=tHaH4x0r
Понравилась идея с податчиком провода. В комбинации с пинцетом можно очень быстро и точно формировать "дорожки". В коментах пишут, что используется медный эмалированый провод 0.2. А сам диспенсер можно сделать из ручки, хотя, как мне кажется, механический карандаш тоже должен зайти.
#pcb #prototype #soldering
YouTube
Extreme prototype board wiring techniques
This is a reupload of an original video made by ELM-ChaN, because the original is uploaded on a japanese video site which needs an account to watch videos. Everybody interested in electronics should watch this video, extremely interesting technique. This…
Последовательности неблокирующих присвоений
Найдете почему счётчик на картинке выше может не считать?
На самом деле проблема в полярности сброса. А несколько последовательных неблокирующих присвоений разрешены стандартом и синтезатор должен всё сделать правильно - применить последнее сработавшее. Однако, такой подход описания часто бывает под запретом в корпоративном стайлгайде, да и многие инженеры стараются умышленно его избегать (как и я ранее).
Пример выше не очень показателен, но если его немного усложнить, то можно увидеть профиты от такого способа описания.
Например, для генерации коротких импульсов. Если набор условий очень ветвист, а запускать импульс нужно только в нескольких случаях, то при обычном подходе придется явно описывать состояние
Единственное, нужно помнить, что использовать переменную (к которой применено несколько неблокирующих присвоений подряд) в списке чувствительности может быть чревато с точки зрения симулятора.
Все присвоения будут исполнены в порядке возникновения, а значит конструкция
Ну и как это часто бывает, первая пара ответов на SO вполне раскрывает тему:
https://stackoverflow.com/questions/15718192/verilog-sequence-of-non-blocking-assignments
#verilog #system_veriog #rtl #digital_design #codestyle
Найдете почему счётчик на картинке выше может не считать?
На самом деле проблема в полярности сброса. А несколько последовательных неблокирующих присвоений разрешены стандартом и синтезатор должен всё сделать правильно - применить последнее сработавшее. Однако, такой подход описания часто бывает под запретом в корпоративном стайлгайде, да и многие инженеры стараются умышленно его избегать (как и я ранее).
Пример выше не очень показателен, но если его немного усложнить, то можно увидеть профиты от такого способа описания.
strb <= 0;
if (bb) begin
strb <= 1;
blabla
end else if (cc) begin
if (dd)
strb <= 1;
else
blabla
end else if (ee)
blabla
Например, для генерации коротких импульсов. Если набор условий очень ветвист, а запускать импульс нужно только в нескольких случаях, то при обычном подходе придется явно описывать состояние
strb для каждой ветки, в том числе и неактивное. А так, мы создаём что-то вроде состояния по умолчанию, которое может быть изменено где-то внутри нужного условия. И когда условие перестанет действовать - состояние вернётся к исходному.Единственное, нужно помнить, что использовать переменную (к которой применено несколько неблокирующих присвоений подряд) в списке чувствительности может быть чревато с точки зрения симулятора.
Все присвоения будут исполнены в порядке возникновения, а значит конструкция
@() с такой переменной внутри может сработать несколько раз.Ну и как это часто бывает, первая пара ответов на SO вполне раскрывает тему:
https://stackoverflow.com/questions/15718192/verilog-sequence-of-non-blocking-assignments
#verilog #system_veriog #rtl #digital_design #codestyle
Stack Overflow
Verilog sequence of non blocking assignments
Say the following code section (same block):
A <= 1
A <= 2
Will variable A always be assigned 2? or will there be a race condition and 1 or 2 will be assigned ?
My understanding of non blo...
A <= 1
A <= 2
Will variable A always be assigned 2? or will there be a race condition and 1 or 2 will be assigned ?
My understanding of non blo...
starc_verilog_guide.pdf
5.9 MB
STARC Design Style Guide
Когда-то давным давно (в 1995 году) основные японские полупроводниковые компании Fujitsu, Hitachi, NEC, Sony, Toshiba и др. собралисьв огромного робота и основали иследовательский центр Semiconductor Technology Academic Research Center - STARC. И одной из задач, которую этот исследовательский центр пытался решить - стандартизовать процесс разработки чипов в Японии, т.к. хотя все и писали на одинаковых Verilog/VHDL, но кто во что горазд - никакого порядка. Ну и где-то в начале 2000х необходимый документ опубликовали.
Мне когда-то давно удалось найти 3 главы этого гайда, и я их склеил в одну pdf. Также существует аналогичный документ для VHDL, который мне найти не удалось (не особо и старался, если честно).
Гайд пытается покрыть все процессы разработки, начиная от имен регистров и организации иерархии модулей, до принципов организации структуры папок проекта. По некоторым источникам существует ещё 4-ая глава про верификацию, но к сожалению она не нашлась.
#verilog #codestyle
Когда-то давным давно (в 1995 году) основные японские полупроводниковые компании Fujitsu, Hitachi, NEC, Sony, Toshiba и др. собрались
Мне когда-то давно удалось найти 3 главы этого гайда, и я их склеил в одну pdf. Также существует аналогичный документ для VHDL, который мне найти не удалось (не особо и старался, если честно).
Гайд пытается покрыть все процессы разработки, начиная от имен регистров и организации иерархии модулей, до принципов организации структуры папок проекта. По некоторым источникам существует ещё 4-ая глава про верификацию, но к сожалению она не нашлась.
#verilog #codestyle
Можно найти как вполне актуальные рекомендации (сбросы, клоки, триггеры и другие компоненты дизайна не особо то и изменились за 20 лет), так и устаревшие и теперь забавные (например, не использовать пока Verilog-2001, т.к. не всеми тулами поддерживается в достаточном объёме).
1 Basic Design Constraints
1.1 Naming conventions
1.2 Synchronous design
1.3 Initial reset
1.4 Clocks
1.5 Handling of asynchronous circuits
1.6 Hierarchical design
2 RTL Denoscription Techniques
2.1 Combinational logic
2.2 always construct denoscription in combinational logic
2.3 FF inference
2.4 Latch inference
2.5 Tri-state buffer
2.6 always construct denoscription that takes circuit structure into account
2.7 if statements
2.8 case statements
2.9 for statements
2.10 Operator denoscriptions
2.11 State machine denoscriptions
3 RTL Design Methodology
3.1 Create function libraries
3.2 Using function libraries
3.3 Design for Test (DFT)
3.4 Low Power-Consumption Design
3.5 Source codes and design data management
1 Basic Design Constraints
1.1 Naming conventions
1.2 Synchronous design
1.3 Initial reset
1.4 Clocks
1.5 Handling of asynchronous circuits
1.6 Hierarchical design
2 RTL Denoscription Techniques
2.1 Combinational logic
2.2 always construct denoscription in combinational logic
2.3 FF inference
2.4 Latch inference
2.5 Tri-state buffer
2.6 always construct denoscription that takes circuit structure into account
2.7 if statements
2.8 case statements
2.9 for statements
2.10 Operator denoscriptions
2.11 State machine denoscriptions
3 RTL Design Methodology
3.1 Create function libraries
3.2 Using function libraries
3.3 Design for Test (DFT)
3.4 Low Power-Consumption Design
3.5 Source codes and design data management
Астрологи объявили неделю codestyle. Количество постов с правилами кодирования на Verilog увеличено вдвое.
FreescaleVerilog.pdf
344.7 KB
Freescale Verilog HDL Coding
* Naming Conventions
* Comments
* Code Style
* Module Partioning and Reusability
* Modeling Practices
* General Coding Techniques
* Standards for Structured Test Techniques
* General Standarts fot Synthesis
#verilog #codestyle
* Naming Conventions
* Comments
* Code Style
* Module Partioning and Reusability
* Modeling Practices
* General Coding Techniques
* Standards for Structured Test Techniques
* General Standarts fot Synthesis
#verilog #codestyle
И ещё немного гайдов
Ну и чтобы закрыть уже тему, ещё тройка стоящих внимания гайдов.
https://www.systemverilog.io/styleguide
https://github.com/johan92/verilog-coding-style
https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md
#verilog #codestyle
Ну и чтобы закрыть уже тему, ещё тройка стоящих внимания гайдов.
https://www.systemverilog.io/styleguide
https://github.com/johan92/verilog-coding-style
https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md
#verilog #codestyle
www.systemverilog.io
SystemVerilog Style Guide - systemverilog.io
Inspired by Python's PEP8, this is a StyleGuide for SystemVerilog.