帰らざるMOS回路(45) Digilent CMOD S7、サンプルPROJを開いてみる

Joseph Halfmoon

本流FPGA AMD(Xilinx)搭載のDigilent CMOD S7導入。前回は開発ツール付属のVerilogシミュレータを使用。今回はCMOD S7ボードそのものについて調査。それにはアウト・オブ・ボックスと銘打たれたサンプルプロジェクトを開いてみるのが一番良いのでは?ということで既存プロジェクトをOpen。

※かえらざるMOS回路 投稿順 INDEX

CMOD S7の入出力と端子

Digilent CMOD S7のハードウエア構成については以下のページに解説があります。

Cmod S7 Reference Manual

ボードサイズとしては「48ピンDIPサイズ」です。DIPとしては少し大きめ(48ピンというとZ8000を思い出す年寄です。)しかし端子としては中央部の12端子がなく、36ピンのみ実装されています。中央部の端子を無くしてスペースを確保した部分にFPGA XC7S25-1CSGA225Cが搭載されています。

短辺の片方にJTAG/Serial兼用のUSBソケット、他方にDigilent社規格?のPMODコネクタが実装されています。

36ビン接続されているピンのうち、FPGAのIOピンは32本で、2本はアナログ入力ピン、2本は電源ピンです。

ボード上にはハードウエアのステータスLEDなどを除くと以下のLEDとスイッチが搭載されています。

    1. 単色(緑)のLED4個
    2. RGBのLED1個
    3. プッシュスイッチ2個

上記についてはユーザが勝手に使うことが可能です。

アウト・オブ・ボックス・デモ

ボードには購入時「アウト・オブ・ボックス」と銘打ったデモのビットストリームが書き込み済です。上記のLED5個を点滅(RGBについては色を変える)させた上、プッシュスイッチを押すと、USBで接続したホストの仮想シリアル端末(9600ボー、8ビット、ノンパリティ、ストップ1ビット)にどちらのスイッチが押されたか報告するというものです。

このサンプル・プロジェクトを見れば、LEDの点滅だけでなくボードを操作するための基本が全て分かろうというもの。当然、Example projectということでソース等公開されています。解説ページが以下に。

Cmod S7-25 Out-Of-Box Demo

ステップバイステップでOOBデモを再構成してみる

上記ページからプロジェクトファイルをダウンロードすることができ、実際に手元のVivadoでビットストリームを生成して書き込んで動作させることができます。ただ、微妙なところで引っかかったのでその辺を書き留めておきます。

サンプル・プロジェクトをダウンロードして展開後の手順です。

    • まずはVivadoを起動して Open Projectを選択

vivadOpenProject

 

    • XPRファイルを指定

openXPR

ダウンロードしたファイルを解凍するとOOBデモのサンプルファイルとは異なるファイル名の拡張子.xpr ファイルがでてきてちょっと戸惑いましたが、一つしかないのでそれを指定しました。

    • 古いバージョン?

olderVersion

当方で使用しているVivadoは最新版でもない2023.2というバージョンなのですが、ダウンロードしたファイルはもっと古いみたいです。どうせZIPファイルに全部保存されているので、バックアプもせず upgradeしてしまいます。

するとさらにディレクトリ構造がなんたらと言ってきたので、これまた良きに計らってくれ、Yesっと。migration

    • プロジェクトのファイル構造ができた

プロジェクトの様子はこんな感じ。Sources

この状態で右上のステータスを確認すると以下のようにOut-of-dateとなっていたので、これはビットストリーム・ファイルの再生成必須であろうと。outOfdate

必要なファイルはそろっているので、前々回と同様以下の手順でビットストリームを作成であります。

    1. Run Synthesis
    2. Run Implementation
    3. Generate Bitstream

CMOD S7がUSBで接続されていることを確認し、Program Deviceすればボードにビットストリームが書き込まれました。LEDが煌びやかに点滅しておりますぞ。ここまで問題なしね。

USBシリアル接続の端末でムムっ

ビットストリームファイル自体はUSBでも「JTAG側」で書き込まれているハズですが、それと並列にUSBシリアル接続も使えるようになってます。Windowsのデバイスマネージャをみるとこんな感じ。手元の環境ではCOM14と認識されているみたい。USBserialCOM

COM14に伝統のTeratermProを向け、CMOD S7上のプッシュスイッチを押したところが以下に。USBserial_R

どうもLF(ラインフィード)は正常に動作しているのに、CR(キャリッジリターン)であるべき制御コードがあろうことか文字 ‘r’ として伝わってきているみたい。”\n”はちゃんとエスケープ処理されているのに”\r”がCRでなく文字 r になっちゃっている?

そこでUART送信を行っているVerilogソースの以下のところを勝手改変してみました。コメントアウトしているのが元のコードっす。changedSource

行末のCRをなくしてLFだけにしてしまいました。まあ行末処理はLFでもCRでもTeratermProはなんでも対応可です。

再度、シンセシスから手順をやり直したところが以下に。USBserial_noR

予定通り変なrは消えたな。でもなんでエスケープできなかったのだろう?要追及じゃね。

帰らざるMOS回路(44) Digilent CMOD S7導入、Vivadoのシミュレータ へ戻る

帰らざるMOS回路(46) Digilent CMOD S7、HW+SWプロジェクトその1 へ進む