Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
実践的!FPGA開発セミナー vol.19 LT
Search
windy
February 25, 2023
Technology
0
580
実践的!FPGA開発セミナー vol.19 LT
Latticeの小規模・低消費電力FPGA iCE40でハマった話
windy
February 25, 2023
Tweet
Share
More Decks by windy
See All by windy
LT:組込み屋さんのオシロが壊れた!
windy_pon
0
920
Other Decks in Technology
See All in Technology
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
490
フィッシュボウルのやり方 / How to do a fishbowl
pauli
2
380
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
1
400
AI with TiDD
shiraji
1
270
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
3.8k
202512_AIoT.pdf
iotcomjpadmin
0
140
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
5
2k
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
180
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.1k
【開発を止めるな】機能追加と並行して進めるアーキテクチャ改善/Keep Shipping: Architecture Improvements Without Pausing Dev
bitkey
PRO
1
130
Microsoft Agent Frameworkの可観測性
tomokusaba
1
110
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
170
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
34
ラッコキーワード サービス紹介資料
rakko
0
1.8M
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
850
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
32
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
WCS-LA-2024
lcolladotor
0
390
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
290
Side Projects
sachag
455
43k
Transcript
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) 実践的!FPGA開発セミナー vol.19 LT Latticeの小規模・低消費電力 FPGA
iCE40でハマった話 システムアイ 伊藤慎治 1
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • 伊藤 慎治 システムアイ 代表
(個人事業主) – 2004年独立開業 – 2007年 名古屋市の大須に事務所開設 – 組込システムの受託開発が主な業務 • FPGA歴 – 2004年 FPGAに初めて触れる • AlteraのStratix、Verilog-HDLを使用 – 2005年 Xilinxと出会う • Virtex-Ⅱ Pro (PPC405×2個内蔵)、VHDLを使用 • 当時のツール(EDK)のIPがVHDLのため、以降はVHDL派 – 使ってきたFPGA • Xilinx :Spartan-3,6・Virtex-II Pro・Virtex-4 FX, Artix-7, Zynq-7000 • Intel :Stratix, Cyclone-3, 4, 5 • Lattice :MACH-XO2・iCE40Ultra ←今日の主役 • GOWIN :GW1Nシリーズ(Tang Nano) • 伝統的な組込用途のFPGAのみ – アプリ寄り・AI等は全然、HLSも使ったこと無い 2 自己紹介 Twitter: @windy_pon
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • 手組み基板 – 低周波治療器の原理試作 –
アナログ部分は客先提示 – マイコンにはルネサスのRL78を使用 3 こんな事もやってます この製品の 中身 全部ユニバーサル 基板に手組み!
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) 対象プロジェクト要件 4 • 24bitADC から1.44Mサンプル/秒でデータを取得する
• 1回のサンプルは694nsだが、変換に392nsかかるので読出しは300nsで終 わらせる必要がある • SPIクロックに100MHz必要 • 出力波A・BとADC取得タイミングは同期させる必要がある • 当初はマイコンだけで想定されていた!!絶対無理でしょ 1.44Msps(694ns) ADC変換時間 (392ns) 読出し時間 (300ns) 出力波A 出力波B ADC取得 ADC-CNV ADC-BUSY SPI-CLK 240kHz(4,166ns)
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • クロックが3系統必要 – 240kHzの出力波の生成に36MHzが必要 –
ADCへのSPIクロックに100MHzが必要 – マイコンからのQSPIで50MHz • 36MHzからPLLで100MHzが生成出来る必要がある • ロジックはそんなに要らない • 一部とは言え100MHz動作が必要 • RAMがあればサンプルデータをバッファ出来てマイコンに余 裕が出来て嬉しいかも? 5 FPGAの要件
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • iCE40シリーズでは中くらいの製品 • 今回は一番容量の小さいLP1Kを採用、パッケージは7mm角のQFN48 –
こんなにピンは要らないが、取りあえずマイコンの空きピンを繋 いでおく • 人気が無いのかMouserに大量に在庫があった(2022/8月) 6 Lattice iCE40 Ultra マクニカの Webサイト より
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • iCE40シリーズでは中くらいの製品 • Logicの1100というのはLUT4-FFのセットが単位 •
PLLが1個ある • ブロックRAM(EBR)は1個につき4kbit×16個 • 16x16=32bit乗算器が2個ある • iCE40シリーズは2011年12月にLatticeが買収したSilliconBlueと いう会社の製品 • ツール内にやたらとSB_という 名前が出てくる 7 Lattice iCE40 Ultra EETimes Japanより
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • かなり簡素な作りのツール • 左側にプロジェクトファイルのツリーと合成プロセスのツリー •
右側のメイン画面は、通常コンソール出力のみ • シミュレータはModelSim Lattice Editionが付属(ライセンス不要) • VHDL-2008に対応している 8 Lattice iCE40 Ultra 開発ツール
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • IP生成機能は無い • PLLの設定ウィザードはある(大した設定項目は無い) 9
Lattice iCE40 Ultra 開発ツール
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • IPカタログ(Xilinx)、MegaFunction(Altera)、IPExpress(Lattice)のような IP生成ツールが存在しない • RAM・乗算器はプリミティブを直接配置する必要がある
– RAMはともかく乗算器はMACにも出来るので、中間のパイプラ インレジスタの設定は大変そう 10 ハマり所・IP
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • 4kbit-RAMはシンプルデュアルポートでそれぞれ以下の選択肢 – 256×16bit –
512× 8bit – 1024×4bit – 2048×2bit • 何よりFIFOが無いのが辛い、自分で作れと? – 作りました 11 ハマり所・IP
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • PLLにはOUTA・OUTBと2個の出力クロックがあるが、任意の 周波数合成が出来るのはOUTAの1個のみ – OUTBはOUTAの半分か、入力クロックそのまま
– 今回の用途では36MHz→100MHzと36MHzそのままの2出 力で使用 • グローバルクロック入力はデバイスに8個あるが、PLLに直接 繋がってるのはこのうち1個だけ – しかもドキュメントに書いてない – 試しに合成してみたらそこはダメだと言われる 12 ハマり所・PLL
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) 13 ハマり所・PLL これがPLL このピンからしか直接接続出来ない
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • IOピン直近に入出力レジスタがある – 今時らしく、入出力ともDDR対応 –
がしかし、リセットが無い! • 入力はともかく、 出力にリセットが無い 14 ハマり所・IOレジスタ
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • ロジックの割当は合成時に決まるので、リセットっぽい動作を 書くと絶対にIOレジスタに割り当ててくれない – こんな書き方をしてもダメ、selが負論理リセットになる
• 仕方が無いのでSB_IOプリミティブを直接配置したら… – なんと立ち下がりエッジトリガの指定が無視されるという バグを踏んだ… 15 ハマり所・IOレジスタ DO_cmb <= d_out when (sel = '0') else '0'; process (CLK) begin if falling_edge(CLK) then DO <= DO_cmb; end if; end process;
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • パラメータ(generic) 「NEG_TRIGGER」で立ち下がりエッジト リガになるはずが、実機・インプリメント後simでも立上り エッジトリガになっていた
• 合成後のEDIFネットリストを見たら、「NEG_TRIGGER=0」 になっていた – EDIFを手作業で書き換えたら立ち下がりエッジトリガに なった – これを毎回やれと? 16 ハマり所・IOレジスタ
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • LatticeだからFLASH内蔵だと思ってたら… – なんとiCE40はO T
P – 他社FPGAと同じく外部SPIフラッシュも使用出来る – さらにコンフィグIFはJTAGではなく、SPI • LatticeのツールはMPSSEがあるFTDIのチップが使える (FT232H、FT2232等)のでこれはそれほど問題ではない – 内蔵ロジアナのような便利なモノは無い – 小さいので全部をsimすれば良い • 今回はマイコンからSPIでコンフィグ 17 ハマり所・コンフィグ
実践的!FPGA開発セミナー vol.19 LT:iCE40でハマった話 (伊藤 慎治) • 色々ハマりましたが、XilinxやAlteraの最新FPGAと比較するの がそもそも間違い – 超低消費電力、小フットプリントがウリの製品なので
• Latticeはスマホなどの大量量産品での採用を狙ってる? • 今回の案件では十分役割を果たしてくれました – マイコンからのSPIコンフィグ – 24bit-ADCからの1.44Msmp/sでのデータ取得 – 240kHz出力とのADC-CNVタイミングの同期 – 内蔵RAM使用FIFOによるデータのバッファ • マイコンのタイミング要件が楽になる • 実際には1msごとにQSPIでデータを取得 • ロジックが余っているので、現状マイコンで処理している一部 のデータ処理のFPGAへの移動を検討中 18 まとめ