はじめに
Tang Nano 9KをVSCodeで使うための方法です
参考サイト:Tang Nano 9K: Getting Setup
準備
- WSL2:Ubuntuを使用
- VSCode:Ubuntuと連携させておく
- VSCode拡張機能:Lushay Code,Verilog-HDL/SystemVerilog,WaveTrace
- OSS-Cad-Suite:linux-x64版をUbuntu内にダウンロードし,解凍しておく
Toolchain
WSLでVSCodeを立ち上げ、"FPGA Toolchain"をクリック
解凍したoss-cad-suit
のbin
フォルダを参照する
USBを接続
参考サイト:USB デバイスを接続する
Ubuntu操作
Ubuntu上のターミナルで以下のコマンドを実行
lsusb -t
実行結果
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 480M
Tang Nano 9Kが認識されていないことを確認
下記のコマンドを実行
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
Windows操作
管理者権限PowerShellで以下のコマンドを実行
PS C:\> winget install --interactive --exact dorssel.usbipd-win
接続されているBUSID
を確認
PS C:\> usbipd list
USBデバイスを接続
PS C:\> usbipd bind --busid <BUSID>
PS C:\> usbipd attach --wsl --busid <BUSID>
Ubuntuで
lsusb -t
を実行すると,接続したデバイスが表示される
コード作成
Ubuntu上の任意のフォルダでcounter.v
を作成
counter.v
module top
(
input clk,
output [5:0] led
);
localparam WAIT_TIME = 13500000;
reg [5:0] ledCounter = 0;
reg [23:0] clockCounter = 0;
always @(posedge clk) begin
clockCounter <= clockCounter + 1;
if (clockCounter == WAIT_TIME) begin
clockCounter <= 0;
ledCounter <= ledCounter + 1;
end
end
assign led = ledCounter;
endmodule
同じフォルダ内にtangnano9k.cst
を作成
"Add From Template"をクリック
"Clock"と"LEDs"にチェックを入れて"Add Constraints"をクリック
書き込み実行
"FPGA Toolchain"をクリック
"Build and Program"を選択すると書き込みが実行される.
エラーが出た場合
特に設定していなければ以下のエラーが出る
unable to open ftdi device: -4 (usb_open() failed)
JTAG init failed with: unable to open ftdi device
こちらを参考に,Ubuntuで以下のファイルを作成
/etc/udev/rules.d/99-ftdi.rules
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0666"
- 自分の環境ではUbuntuの再起動が必要でした(再起動をするとUSBの接続が切れるので再接続が必要)
- 異なるボードを使用している場合は
idVendor
とidProduct
を相応しいものに充ててください