目的
Tang-Nanoと言うボードが去年(2019)の終わりごろに売り出されていた。
一年近く立ってからやっと気か付いた。
規模は1000LUT程度、xilinxのxc6lx9の1/10位かな。
CPLDに比べれば大容量と言えるが、でも大げさな事は出来ないだろうな。
しかし、何だよこの値段。
sでのボードの値段は535円、mでのチップ一個より安いじゃないか。
◆◆◆ 本当に使えるのか、試してみよう ◆◆◆
経緯
流石に日本国内では535円では買えないので、適当にチョイスして購入(800円)。まあ、値段は許容範囲かな。
ハードはUSB TYPE-Cでつなげるだけ。ドライバーはソフトと一緒に入ってくる。
ソフトの導入は、Tang-Nanoで検索すればやり方が出てきた。
SiPeed Tang Nanoの環境構築(Windows編)を参考にした。
ただ、管理者モード云々の記述が有るが、しなくても書き込みは出来た。
※Programmer -> Edit -> Cable Setting -> Cable -> Cable SettingのFrequencyが2.5MHzに設定されていた。
ライセンスは上記に書かれている、- server address 45.33.107.56 - port: 10559 で動作するはず。
※LANケーブルを外すと使えなくなる。外部サーバに頼るのはアマチュアと言えど一抹の不安が...。
サンプルプロジェクトも上記に書かれている。Tang-Nano-examples
※但し一つ注意が必要です。
某所で買ったLCD(JST-4300-E3V03)はクロック上限が10MHz前後。
サンプルは33MHZ動作なのでそのままだと、うすボケ表示となる。まあ写れば動作は出来ているとは言える。
修正にはPLLのクロックを10MHzにすれば良し。
Tools -> IP Core Generator の画面で、Target Deviceの横のフォルダマークをクリック、gowin_pll-> gowin_pll.ipcを選択。
IP Customizationの画面が開くので、CLKOUTDの EXxpected Frequencyを10にして再コンパイルすれば治る。
TD4とは
「CPUの創り方」という本に書かれているCPUの名称。
概略性能は下記のようなもの。
アドレス 4ビット(16番地)
ALU 4ビット
入出力 4ビット
命令語長 8ビット
命令 13種類
ロジックを自分で考えるのは面倒なので、これを採用。
「「TD4」をVerilog HDL で書いてみた」に記載のVerilogをパクってちょこっと改変。
※簡潔にうまく纏められているが、一か所ロジック間違っている気がするのでそこは訂正。
プログラムは図々しく、Githubに上げている。「TD4」
多少の変更として、下記を追加。
1.LEDの代わりにLCDでカウンタ類の表示。
2.釦Bを押すと、クロックが停止する。釦Aでリセット。
LCD表示なしで、46LUTで出来上がり。
LCDを追加で、135LUTになる。
TD8とは
TD4の勝手拡張版。いろんな人がやってる様だ。
TD4の命令を保持する事を前提にしたので、大した拡張では無い。
アドレス 8ビット(256番地)
ALU 8ビット
命令語長 12ビット
命令拡張 レジスタを3個(A,B,S)に増設
JPM,CALL,RETを追加
これも、Githubに上げている。「TD8」
LCD無しで、78LUTとなった。
折角サブルーチンコールを新設したが、ラーメンタイマーでは、プログラムが逆に長くなったので封印。
感想
個人的にはTD4は、アドレスと命令数がミスマッチではないかと思う。
でも、CPUを作る切っ掛けになると考えれば、これも有りだと思う。
なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。