MachXO2
(LCMXO2-1200HC-4SG32C)
の書き込み方法
丹野 嘉信
http://ytanno.herokuapp.com/
読者対象
• 小型で安価なFPGAを使って製品開発を強いられている人
• 小さいFPGAに興味がある人
• 引継ぎ相手
壊れても責任が取れないので自己責任でやる人
目次
• LCMXO2-1200HC-4SG32Cの特徴
• ソフトウェアの手順
• ハードウェアの手順
LCMXO2-1200HC-4SG32Cの特徴
(前回使ったICE40LP384と比較)
• 本体に1回以上書き込める
• 書き込むための配線が非常に楽
• 内部クロックがあり、最大133Mhz利用可能
(但し、限られた周波数だけ利用できるのでそれ以外使いたい場合は外
部オシレータが必要)
外部オシレータの配線場所は限定されている
• ロジック数(LUT)が1280もある(前使ったものは384)
• 3.3v単体で動作可能(前は主電源1.2vとVCCIO電圧必須)
• サイズもQFN32と小さく、高級な基板を必要としない
• 評価ボードとチュートリアルも存在する
(最後に詳細のURL配置)
内部オシレータから利用できる周波数
• https://www.mouser.sg/datasheet/2/225/MachXO2FamilyDataSheet-
948089.pdf
の2-29より参照
ソフトウェア手順 概要
• 工程1 Verilog file -> *****.jed に変換
• 工程2 ****.jedを 本体に書き込む
各ソフトのインストールのために登録が必要
• 工程1のためにLatticeDiamondをインストール
http://www.latticesemi.com/ja-
JP/Products/DesignSoftwareAndIP/FPGAandLDS/LatticeDiamond
• 工程2のためにDiamond Programmerをインストール
https://www.latticesemi.com/ja-
JP/Products/DesignSoftwareAndIP/ProgrammingAndConfigurationSw/Programmer
テストプログラム
• 133MhzでLチカしても役に立たないので適宜修正してください
• 内部クロックの利用例
module Main
(
output oled
);
wire osc_clk;
defparam OSCH_inst.NOM_FREQ="133.00";
OSCH OSCH_inst(.STDBY(1'b0), .OSC(osc_clk), .SEDSTDBY());
always @(posedge osc_clk) begin
end
assign oled = osc_clk;
endmodule
Lattice Diamond 1
プロジェクト作成
• File タブ -> New -> Project -> Next -> プロジェクト等名前設定
• Next -> 作成したVerilog file追加 ->
• デバイス指定で型番を合わせる -> Next -> Next -> Finish
Lattice Diamond 2
ピンアサイン
• Tools タブ -> Spreadsheet View -> Pin Assignments -> Double Click
“Signal Name” -> Assign Signals
• 必要か分からないが私はPort Assignments でLVCMOS25から
LVCMOS33に変更している。
Lattice Diamond 3
.jedファイルの出力
• 最後までプロセスにエラーが無ければ.jedファイルが作成される
Diamond Programmer
• 起動後、画像のように設定する。
• 配線(ハードウェアの手順)が終わった後、FT2232H Mini
ModuleをUSBに接続後、Programボタンを押すことで書き込みが
完了する
ハードウェアの手順
• USB経由でJTAG信号をFPGAに送るための配線方法
• FT2232H Mini Module を利用した
• また必須かどうか分からないがTCKの間にプルダウンを置いた
参考にした配線がhttps://github.com/tinyfpga/TinyFPGA-A-
Series/blob/master/board/TinyFPGA-A.pdf の JTAG Programming
Headerのため
配線1 FT2232H Mini Module
• CN3-1(VBUS) と CN3-3(VCC)を配線
• CN2-1(V3V3)とCN2-11(VIO)を配線
https://www.ftdichip.com/Support/Documents/DataSheets/Modules/
DS_FT2232H_Mini_Module.pdf
Page7から参照
配線2 FT2232HとMachOX2-1200-QFN32
FT2232H Mini Module
(PIN Number)
Function MachOX2-1200-QFN32
(PIN Number)
CN2-12(AD3) TMS 29
CN2-7(AD0) TCK 30
CN2-10(AD1) TDI 32
CN2-9(AD2) TDO 1
CN2-1(V3V3) VCC 2,31,24,19,18,15,7,6
CN2-2 GND 3,22,33
VCCは3.3vでFPGA側に配線されていない場合必要
FPGA側の3.3vはVCCIOの配線が必要ないかもしれないが未検証
GNDは書かれているもののうちの一つだけの配線でもよい
配線について書きましたが・・・
• 到着時間さえ気にしなければ買った方が圧倒的に楽。
チュートリアルもあるので苦労が少ない
TinyFPGA AX2 Board(評価ボード)
• https://www.sparkfun.com/products/14828
TinyFPGA Programmer(書き込みWriter)
• https://www.sparkfun.com/products/14827
Tutorial等
• https://tinyfpga.com/
備考 ピンレイアウトファイル場所
• https://www.latticesemi.com/Products/FPGAandCPLD/MachXO2
のMachXO2 32-Pin QFN Package Migration File

How to write code on MachXO2