Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
0
230
日本の AI 開発と世界の潮流 / GenAI Development in Japan
hariby
1
390
AWSに革命を起こすかもしれない新サービス・アップデートについてのお話
yama3133
0
500
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9.9k
Identity Management for Agentic AI 解説
fujie
0
460
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
2
240
ESXi のAIOps だ!2025冬
unnowataru
0
350
LayerX QA Night#1
koyaman2
0
260
MariaDB Connector/C のcaching_sha2_passwordプラグインの仕様について
boro1234
0
1k
ActiveJobUpdates
igaiga
1
320
2025年のデザインシステムとAI 活用を振り返る
leveragestech
0
190
まだ間に合う! Agentic AI on AWSの現在地をやさしく一挙おさらい
minorun365
17
2.7k
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
73
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Typedesign – Prime Four
hannesfritz
42
2.9k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
49
Designing for Timeless Needs
cassininazir
0
93
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
260
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Become a Pro
speakerdeck
PRO
31
5.7k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The Curse of the Amulet
leimatthew05
0
4.7k
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 まとめ