« ThinkPad X1 Carbon(20HQ)にlinuxをインストールする | トップページ | verilog事始め(Gowin RUNBER board で始める) »

2021年11月14日 (日)

verilog事始め(Tang Primer board で始める)

2021/11/8

verilog事始め(Tang Primer board で始める)

verilog事始め(Tang Primer board で始める)

概要

FPGAのプログラミングができる開発ボードとして以下を購入した。

Sipeed Tang PriMER FPGA Dev.Board

このボードはデモとしてRISC-Vのコードが書き込まれており それを書き換えることができる。ここではツールのインストール方法とverilogのプログラミング方法について紹介する。

ツールのインストールと起動

1.downloads https://dl.sipeed.com/TANG/Primer/IDE/
上のurlから以下のファイルをダウンロードする:
TD1910_win.zip (windows10の場合)
TD1909_linux.rar (ubuntuの場合)
Anlogic_20220130.lic(共通)

2.Install
ubuntuの場合

0.開発ボードの確認
ボードが認識しているかどうかの確認

~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 005: ID 138a:0097 Validity Sensors, Inc. Bus 001 Device 004: ID 04f2:b5ce Chicony Electronics Co., Ltd Integrated Camera Bus 001 Device 002: ID 1199:9079 Sierra Wireless, Inc. Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A Bus 001 Device 007: ID 0547:1002 Anchor Chips, Inc. Python2 WDM Encoder Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub PCのハード状況で色々表示されるが以下の行があればボードが認識されていることになる: Bus 001 Device 007: ID 0547:1002 Anchor Chips, Inc. Python2 WDM Encoder これが表示されない場合、ボードが不良の可能性がある。(1度(ボード1枚)、経験あり)

1.Install TD driver on Linux
以下でドライバーを設定する:

sudo nano /etc/udev/rules.d/91-anlogic-jtag.rules

編集内容:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0547", ATTRS{idProduct}=="1002", GROUP="plugdev", MODE="0660"

UDEVの再起動:

sudo service udev restart

2.Install Application

cd ~/Downloads sudo unrar x TD1909_linux.rar -d /opt/ sudo ln -s /opt/TD_RELEASE_September2019_r4.6.2/bin/td /usr/bin/td sudo chmod a+x /opt/TD_RELEASE_September2019_r4.6.2/bin/td sudo ln -s /opt/TD_RELEASE_September2019_r4.6.2/arch /usr/arch # ライセンスファイルを最新にする cd /usr sudo mkdir license cd license/ sudo cp ~/Downloads/Anlogic_20220130.lic Anlogic.lic # ツールの起動 td -gui

windows10の場合

(1)TD1910_win.zipを解凍する (2)解凍したmsiファイルをインストールする (3)以下のライセンスファイルを新しいもの(Anlogic_20220130.lic)に差し替えてリネームする。 C:\Anlogic\TD4.6.3\license\Anlogic.lic (5)以下のinfをインストールする C:\Anlogic\TD4.6.3\driver\win8_10_64\cyusb.inf #「署名無し」の警告が出るという情報があったが特に警告はでなかった。 起動する場合、アイコンをクリックする

サンプル(blinky)の動作

https://tang.sipeed.com/en/getting-started/getting-to-blinky/ に沿って、サンプルを動作させてみる。

downloads:

mkdir tang_primer cd tang_primer git clone https://github.com/Lichee-Pi/Tang_FPGA_Examples

build:
ツールを起動し
(1)[Project/Open Project] で [~/TangPrimer/Tang_FPGA_Examples/0.LED/prj] の下の led.al を開く。
(2)[Process/Run] またはメニューボタンの中の Runアイコンをクリックすると、ビルドが行われ led.bit が生成される。

書き込み:
(1)downloadアイコンを押すとウィンドウがポップアップするので、そのなかでAddアイコンで書き込みたい*.bitファイルを指定する。
(2)(電源が切れると消える)揮発状態で書き込むときはModeを「JTAG」、フラッシュに書き込むときは「FROGRAM FLASH」にして、Runアイコンを押すと書き込みが開始される。

デバッグ中で何度も書き込む場合は、書き込み速度が速いので「JTAG」を使用する。なお、RESETボタンを押すとフラッシュに書き込んだものが動作する。
(注意:JTAGで書き込んだのにRESETボタンを押すと別のものが動作することになる)

Hummingbird E203 port on LicheeTang(Anlogic EG4SBG256)

RISC-V(32bits)のverilogをビルドしてみる。

download:

cd tang_primer git clone https://github.com/Lichee-Pi/Tang_E203_Mini.git https://github.com/riktw/Tang_E203_Mini

RISC-V デバッガでの書き込みができないバグがいるようなので 以下のように修正する:

Constraits/e203egmini_new.sdc

修正前: 9行目 create_clock -name clk_16M -period 62.5 [get_nets {CLKIN}] 修正後: #create_clock -name clk_16M -period 62.5 [get_nets {CLKIN}] create_clock -name clk_16M -period 62.5 [get_nets {clk_16M}]

修正後、通常のやり方でビルドと書き込むを行う。

2.sdk
RISC-V用のSDKを使用してみる。

(1)RISC-V デバッガ(Sipeed USB-JTAG/TTL)の設定

sudo usermod -a -G plugdev $USER sudo nano /etc/udev/rules.d/45-dt2232.rules

編集内容:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", GROUP="plugdev", MODE="0660"

以下でudevを再起動する

sudo service udev restart

(2)sdk

HUMMINGBRID CORE wget https://github.com/kprasadvnsi/tang-doc/releases/download/1.0.0/sirv-e-sdk.tar.lrz sudo apt install lrzip lrzuntar sirv-e-sdk.tar.lrz cd sirv-e-sdk # upload(RISC-Vプログラムの書き込み) make upload PROGRAM=demo_gpio BOARD=sirv-e203-lichee # Debugging the Demo #(1) Run the OpenOCD GDB server with the following command and leave it running. make run_openocd PROGRAM=demo_gpio BOARD=sirv-e203-lichee #(2) In the other Terminal run the following command to debug your code using familiar GDB Debugger. make run_gdb PROGRAM= demo_gpio BOARD=sirv-e203-lichee

参照情報

getting started with Tang Primer board.
Tang Primer Documentation
TangPrimer(RISC-V)をArduinoIDEで開発する・・・OpenOCDの再コンパイル対応方法
Tang Primer 開発環境をセッティング
話題のFPGAボード: Tang PrimerをWindows10でLチカする
Tang Primer FPGA ボード & RISC-V

Icarus Verilog - Getting Started
Icarus Verilogの導入とAND回路のシミュレーション
Icarus Verilogコンパイラを使う
[電子工作]Tang Primer:中国製FPGAでRISC-Vの設計に挑戦

以上

|

« ThinkPad X1 Carbon(20HQ)にlinuxをインストールする | トップページ | verilog事始め(Gowin RUNBER board で始める) »

verilog」カテゴリの記事

FPGA」カテゴリの記事

コメント

この記事へのコメントは終了しました。