2019年9月16日月曜日

[SiPEED TANG PRiMER] ハードウェア編

まえがき

各種ドキュメント類については wikiから手繰っていくと色々なドキュメント類に辿り着ける。
※商品名称がPRiMERだったりPremierだったり… そのためかリンクが"Not found"になる個所がある。その場合はURLの"Primer"を"Premier"に修正すると良さそう。

出荷時にHummingbird E203が書き込まれているようなので 取り敢えずRISC-V(RV32)マイコンとして触ってみたい場合はこちら

本編

下のドキュメントから始めるとわかりやすい。
[Lichee Tang Docs]
https://tang.sipeed.com/en/
所々中国語が混ざっているが 雰囲気でなんとかなる。

要約すると、
  1. 始めよう
    1. 必要なもの
      • TD(ツール)のダウンロード
      • サンプルのダウンロード
      • 各種ドキュメントのダウンロード
    2. TD(ツール)のインストール
    3. USBドライバのインストール
    4. Lチカ
  2. ハードウェア概要
  3. Lichee Tangの使い方
    • ピンアサインの固定方法とプログラムのダウンロード

ツールの特徴

・インストールサイズは200Mバイト弱
・大手のツール使用経験があれば それほど迷うことはなさそう
・シミュレータは付属してない (ModelSIMの実行マクロを吐き出す機能はある)
・IPはハードマクロのみかな?
・デバイスへの書き込み(揮発)は"JTAG", Flashへは"PROGRAM FLASH"で行える

FPGAの特徴

・今のところ何の遜色もない感じ。(安かろう悪かろうではなさそう)

Hummingbirdのコンパイル結果

Hummingbirdの論理合成をしたところ以下のようになった。
・LUTの使用率は80%くらい
・DSPの使用率が0%なのが気になる… (E203は 積算:17,除算:33cyclesのためらしい)

その他

・ModelSIMとの連携については後日追記するかもしれない
・内蔵SDRAMも試してみたい

参考リンク

wiki
Lichee Tang Docs
ツールとFPGAドキュメントの英訳版
Tang_FPGA_Examples
Tang_E203_Mini (Hummingbird)

[SiPEED TANG PRiMER] Hummingbirdファームウェア編

SiPEED TANG PRiMERには予めRISC-V(Hummingbird E203)が書き込まれており ボードを一つのRISC-V(RV32I/EMC)マイコンとして扱うことができる。初期状態ではLED点滅とUARTからデモ表示が確認できる。ファームの書き換えやデバッグは開発環境が用意されておりコマンド操作で行う。

ファームウェア開発環境

ビルド済みのツールチェーンが用意されており、基本的には下のリンク先の手順に従って進めれば問題なさそう。
[Hummingbird Core]
https://tang.sipeed.com/en/risc-v-core/hummingbird/
※sirv-e-sdk.tar.lrzのリンクが"Not found"の場合 リンクURLの"Primer"を"Premier"に変更すればOK。

要約すると、
  1. SDKの準備
    • ダウンロード
    • 解凍
  2. デモのビルドと実行
    • ビルド
    • JTAGの設定
    • JTAGとボードの接続
    • アップロード
  3. デバッグ
    • OpenOCDの起動
    • GDBの起動

説明は JTAGにFT2232D(SiPEED USB-JTAG/TTL)を使うことを前提に書かれている。
OpenOCD対応のJTAGであれば使えそうだが 設定はそのJTAG用に修正する必要がある。

ファームのアップロードが成功すると リセット後以下の用に表示される。

書かれてないこと

・OSは64bitのLinux (ビルド済みツールチェーンが64bitのため)
・必要なパッケージは lrzip, ibftdi1-2
・シリアルインタフェース速度は115200bps

要注意

・SiPEED USB-JTAG/TTLのピンアサイン表記に誤りがあるので注意が必要。
NC→3.3V出力
GND→5V出力

参考リンク

e200_opensource (SDKの元ネタ?と思われる)