場末のソフトウェアエンジニアのブログ

雑多な記事ばっかりのブログ

【Tang Nano 4K】サンプルプロジェクト(Lチカ)を動かしてみた

Tang Nano 4KをLinux(Ubuntu 20.04 LTS)上で動かしてみたという記事です。 ちょっと引っかかった箇所があったので、それについて書いておきます。 あまりスクショとってなかったので、文字ばっかりですがご容赦ください。

Gowin IDEのインストール

www.gowinsemi.com

GowinのWebサイトからダウンロードする必要があります(要ユーザー登録)。 その際、バージョンに注意です。現行のV1.9.8.01ではライセンスサーバーにアクセスすることができません。 したがって、V1.9.8をダウンロードしましょう。

Linux版のGowin IDEはtar.gzファイルなので、任意の場所に展開します。 私は、/opt直下にgowinというディレクトリを作って、そこに展開しました。

それと、シェル起動時にPATHを設定しておくようにすると便利です。 bashだと以下の通り。

export PATH=$PATH:/opt/gowin/IDE/bin

起動

パスを通していると、以下のコマンドでGowin IDEを起動できるはずです。

gw_ide

最初の起動では、ライセンスサーバーへの接続に失敗したというメッセージが表示され、 ライセンスサーバーIPアドレスを入力するよう求められると思います。 その際はIPアドレスとして、45.33.107.56 を入力してください。

入力してOKボタンを押下すると、Gowin IDEは一旦終了するので、 再度起動してみてください。

サンプルプロジェクトを開く

https://github.com/sipeed/TangNano-4K-example をgit cloneします。 TangNano-4K-example/led_test/project/led_test.gprj がGowin IDEのプロジェクトファイルになります。

このファイルをGowin IDEで開きます。

論理合成、配置配線

すでに済んでいると思いますが、念のためRerun Allでビットストリームファイルを作成しておきます。

コンフィギュレーション

Gowin Programmerではうまくいきませんでした。 そのため、有志が作成したopenFPGALoaderというプログラムを使ってコンフィグレーションを行います。

trabucayre.github.io

Ubuntuでのインストール手順は上記のサイトに書かれてあるため割愛します。

TangNano-4K-example/led_test/project/impl/pnr/led_test.fs がビットストリームファイルです。 これをFPGAに書き込むには、以下のコマンドです。

openFPGALoader -b tangnano4k <bit stream file>

書き込みが完了すると、Tang Nano 4KのLEDが点滅しているはずです。 これで一連の作業は完了です。お疲れ様でした。

参考文献

サンプルプロジェクトを動作させるために参考にした記事です。 何か引っかかるところがあれば、参考にしてください。

qiita.com

blog.goo.ne.jp

blueeyes.sakura.ne.jp

qiita.com

github.com

朝からつまらんことをしてしまった件

おはようございます。Happinessfieldです。今日は朝からてんやわんやでした。なぜかというと、昨日書いたはずのUART RXモジュールが微塵もなかったのです。このときショックを隠し切れませんでした。

事の経緯

おそらくgitを使っているとき、UART RXモジュールをgit addし忘れてコミットしてしまったのでしょう。 しかし、それだけなら再度git addすればいいだけの話です。 ここで私は重大なミスを犯してしまいました。git addする前にチェックアウトしてしまったのです。 そのため、編集済みのファイルが消えてしまったわけですね。こわいこわい。

さてどうする?

まずはどうしようか考えました。 ファイルがrmされているのであれば、ファイルシステム上にファイルの実体が残っている可能性が高いです。 ファイルの削除というのは、おそらくテーブルの参照情報を削除しているにすぎませんので。 ということで、ファイルの復元ソフトを使うことにしました。PhotoRecという有名なやつです。

やったこと

PhotoRecはCUIのアプリなのですが、インタラクティブに操作ができます。 そのため、非常に楽でした。 ものの30分程度で対象ディレクトリに存在していたと思しきファイルが復元されてました。

復元すると大量のディレクトリが生成されるので、いちいち1つずつ見ていてはキリがありません。 そこで、てきとーにスクリプトを書いて、てきとーに候補となるファイルを絞り込んでいきました。

find . -type f | xargs grep "module UART_Rx" > result.txt
cat result.txt | sed -e "s/\(.*\): .*/\1/g" > candidates.txt
for FILE in `cat candidates.txt`
do
    echo $FILE >> value.txt
    cat $FILE >> value.txt
    echo "" >> value.txt
done

うろ覚えなのでなんともですが、こんな感じで書きました。 value.txtからUART_Rxをインスタンシエーションしているファイルを特定し、あとはそのファイルをチェックし、復元するだけ! 非常に簡単です。

みなさんも困ったときはぜひ試してみてくださいね。そもそもそういう事態にならないようにするのが大事ですが…

【Tang Primer】開発環境インストール

とりあえず書き溜めておいた記事を公開することにしました。 わからないところがあれば、適宜ご質問ください。

Tang Primerってなんですか?

Tang Primerとは中華FPGAです。IntelXilinxFPGAよりも ロジック数は少ないですが、おもちゃとしては十分です。 とはいっても、HummingBirdというRISC-VのIPが載るらしいので、 そこまで非力ではないはず。

FPGAってなんですか?

任意の論理回路を構成できるすごいやつ! 主たる構成要素としては、LUT(Look-Up Table)とD-FFとセレクタがあって、 それらをひとまとめにしたものがたくさん並んでます。 以下にWikipediaから借りてきた画像を載せときます。

f:id:happinessfield:20210812081727p:plain
FPGAの構成要素

ローエンドからハイエンドまであって、ローエンドは今回ご紹介する Tang PrimerやIntelのCyclone, XilinxのSpartanが有名です。 主にエッジ側で使われることが多いです。 ハイエンドはデータセンターや通信設備などパフォーマンスが要求される 場所で使われます。1個数百万はするはずなので、庶民には買えないです。

開発環境構築 (Linux)

公式サイトでも見てください。 注意点だけ書いておきます。

#!/bin/bash

sudo /opt/TD_RELEASE_March2020_r4.6.4/bin/td -gui

お久しぶりです

最近、常に体調が悪く、なかなか更新できずに申し訳なく思っております。 ゲームもなかなかプレイできないので、つらいところです。 というわけで、もう少々お待ちください。

今後の構想

Tang Primerで何か作ってみようと思います。 そんな規模の大きなFPGAではありませんが、 おもちゃとしては大変優れていると思います。安いし。

まずは、電子工作のHello, WorldであるLチカから始めていこうかと。 ゆっくり更新するので、ふと思い出したときに見ていただければ幸いです。