Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
590
実践的!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
950
Other Decks in Technology
See All in Technology
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
350
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.6k
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
260
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
220
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
440
今日から始めるAmazon Bedrock AgentCore
har1101
4
420
Cosmos World Foundation Model Platform for Physical AI
takmin
0
980
ランサムウェア対策としてのpnpm導入のススメ
ishikawa_satoru
0
230
プロポーザルに込める段取り八分
shoheimitani
1
670
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
1
1.6k
Faster Mobile Websites
deanohume
310
31k
Believing is Seeing
oripsolob
1
59
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Leo the Paperboy
mayatellez
4
1.4k
Visualization
eitanlees
150
17k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
130
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
99
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Building the Perfect Custom Keyboard
takai
2
690
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
90
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 まとめ