1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Tang PrimerでUARTを使ってみる2020

Last updated at Posted at 2020-10-11

#始めに

久しぶりにTang Primerを使ってみようと、環境設定からやってみました。すると多少はまったので、文章にしておいておこうと思い、書きました。IDEの立ち上げと、確認のために、UARTのループバックテストを動かしてみます。

####2021/8/12変更

  • Tang Primerの綴りを間違えていました。恥ずかしい・・・。
  • IDEのダウンロードページが移動していたのでURLを更新しました。
  • ライセンスが2020/03で切れていたので、ライセンスファイルを変更しました。

#参考ページ

IDEダウンロードページ

Tang Premierサポートページ

Windows10で署名なしドライバ をインストールする方法

UARTのコード

#準備物

  • Tang Primer
  • Windows10 PC
  • USB-UART変換器

#IDEのインストール

Tang PrimerのIDEはIDEダウンロードページからダウンロードします。ページには、いくつかのバージョンがありますが、ダウンロードできないものがほとんどです。以下の2つのファイルをダウンロードしてください。

  • TD1812_win.exe
  • Anlogic_202003.lic

TD1812_win.exeの方をクリックすると、インストールが始まります。いろいろ中国語で聞かれますが、適当に押しているとインストールが完了します。
これでは、ライセンスが古いと怒られるので、Anlogic_20220130.licをAnlogic.licにリネームした上で、

C:\Anlogic\TD4.3.815\license

に上書きコピーをしてください。
次に、書き込みのためのドライバをインストールします。
まず、正式な方法を書きます。
Tang PrimerをIDEをインストールしたPCに接続します。すると、デバイスマネージャを開くと、「ユニバーサルシリアルバス」の項目の下に「USB-JTAG-Cable」ができます。これを右クリックして、ドライバの更新を選びます。ここで「コンピュータを参照してドライバーソフトウェアを検索」を選択します。パスに
C:\Anlogic\TD4.3.815\driver\win8_10_64
を入れてそのドライバをインストールします。デバイスマネージャを開くと、ユニバーサルシリアルバスコントローラの下に「Anlogic usb cable v0.1」というドライバがインストールされます。ただ、筆者の場合は、ドライバに警告マークがつき、署名がおかしいといわれます。この状態では、IDEのダウンローダからTang Premierが認識されずに、ビットストリームの書き込みが一切できません。
このような場合になったら、無署名のドライバインストールと同じ方法をとるしかありません。一度ドライバを削除して、「Windows10で署名なしドライバ をインストールする方法」に従って、無署名のドライバーインストールをする必要があります。うまくいくと、警告マークのないドライバとなります。

UARTループバックでテスト

環境のテストのために、UARTループバックテストを動かしてみます。
まず、筆者のレポジトリからUARTテストのコードをダウンロードします。このディレクトリのうち、constraintsとsrc2つのフォルダの中のファイルをIDEのPCに入れてください。IDEを立ち上げ、Project→New Projectで新プロジェクトを作ります。Project NameとProject Pathはお好みで、Device FamilyはEG4、Device NameはEG4S20BG256を選択してください。Hierarchyを右クリック、Add Sourcesで、先ほど用意した.vファイルと制約ファイルを読み込みます。pll.vが無いと出ますので、PLLの設定をします。tools→IP GeneratorでCreate a new IP coreを選択します。Fileのところに「pll」と打ち込みOKを押すと、IPの一覧が出てきます。この中のPhase Locked Loop - PLLの下のPLLという項目を選びます。続くPLLの設定では、input frequency: 24MHz、Bandwidth setting Mediam、Use C0 clock : 48MHz
これでPLLが出来上がります。
あとは、緑色のRunボタンを押せば、合成が始まります。
合成が終わったら、Downloadを選択します。一番上の欄にFPGAの型番が選択されていることを確認してください。No hardwareになっていたら、ケーブル等何かの要因でFPGAが認識されていません。次にAddで合成の結果を選択します。File Selectionに欄が追加されますので、それを選択すると、Runボタンが有効になります。ここで、ModeをJTAGからPROGRAM FLASHに変更してください。これでRunを押すと書き込みが開始します。

書き込みができたら、動作チェックをしてみます。FPGAのピンと、USB-UART変換器のピンを3本接続します。FPGAは、
B15 : tx
B16 : rx
を使っております。
Gnd,Tx,Rxを接続してください。お約束ですが、txはrx,rxはtxに接続してください。

できたら、FPGAに電源を入れて、PCでteratermを立ち上げてください。(無ければインストールしてください。)teratermの新しい接続で、シリアルを選択してください。シリアルが出ない場合は、USB-UART変換器が認識されていないので、ドライバの確認をしてください。
スピードは9600bpsなので、設定してください。キーボードで打つと、キャラクターが一度FPGAまで送信され、ループバックして、画面に表示されています。このとき、FPGAで1キャラクタ受け付ける度にLEDの表示が変化することが確認できると思います。

#ボーレートの変更

ボーレートや、動作周波数は設定変更が必要です。設定には動作クロック周波数と、ボーレート2つの数値を使用します。今回は自分で作るものの都合で動作クロック48MHz、ボーレート9600bpsになっております。
動作周波数clockfreq(MHz)とボーレートbaudrate(bps)の2つの数字から以下の式で算出できます。

TERM = (clockfreq/baudrate) * 1000 * 1000
HALF = TERM / 2

これらの数値をuart_if.vに設定していただければ、お好みのクロック周波数、ボーレートに変更できると思います。
前述の48MHz,9600bpsだと、

TERM = (48/9600) * 1000 * 1000 = 5000
HALF = 5000 / 2 = 2500

という数字になります。

#最後に

最初はTang Nanoでいくつか論理を組んでいたのですが、回路規模が溢れてしまい、Tang Primerを使うことになりました。同じTangシリーズなのにFPGAは全く関連が無いので、IDEから入れ直しなのはなかなかなものです。今回は他でUARTを使う必要が出て、組んでみたのですが、他のFPGAでも使えそうなので、公開することにしました。お役に立てればと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?