ハードウェア実験 第6回

2016-06-02

課題6

実験基盤とシリアル通信せよ

  1. UART通信にもとづき送受信を行う回路を作成し、ループバック動作を確認せよ。
  2. 送った文字列を加工して返す回路を作り、動作確認せよ。なお、加工の内容は自由に選択して構わない。
  3. (optional)送信速度を上げよ。

締切 2016-06-15 20:00:00 JST

締切 2016-06-22 20:00:00 JST

締切を延長します。なお、配布ファイルの名前、内容がhw5~というものになっていました。間違いのないよう、hw6~のものを使用してください。

要求項目

配布物

サンプルプロジェクトファイルは、プロジェクトの設定を補助する目的のものであり、ソースコード等は入っていない。

使い方


$ vivado -mode tcl
Vivado% source hw6_create_project.tcl # カレントディレクトリにプロジェクトが作成される。
Vivado% start_gui # GUIがたちあがる。
        

ファイルセットにはsources_1, constrs_1, sim_1があるが、それぞれ実機用のbitファイルを作成する時のソースコード、制約ファイル(.xdc)、シミュレーション用のテストベンチ、を登録すること。
なお、Vivadoを使うのが難しいと感じた場合は、まっさきにTAに質問する。なんとかできそうな場合は、Vivado入門や公式ドキュメントをみつつ、課題を遂行してほしい。

補足

基盤ファイルの確認

演習をはじめる前に、必ず基盤ファイルが登録されているか確認する。
以下のディレクトリが存在すれば、基盤ファイルは登録されている。


/opt/Xilinx/Vivado/{Version}/data/boards/board_files/arty
            

ディレクトリが存在しない場合はTAまで連絡すること。

ドライバのインストールの確認

演習をはじめる前に、必ずドライバがインストールされているか確認する。
以下のファイルが存在すれば、ドライバはインストール済みである。


/etc/udev/rules.d/52-xilinx-pcusb.rules
/etc/udev/rules.d/52-xilinx-digilent-usb.rules
            

ドライバがインストールされていない場合は、以下のコマンドを実行する。


$ cd /opt/Xilinx/Vivado/{Version}/data/xicom/cabel_drivers/lin64/install_script/install_drivers
$ sudo ./install_drivers
$ sudo ./install_digilent.sh
            

シリアルポートの確認

基盤とPCをUSBケーブルで接続すると、/dev/ttyUSB[数字]という特殊ファイルが増える。
これがシリアルポートであり、minicomやcutecomといったシリアル通信プログラムでオープンする場合は、これを指定する。
なお、[数字]とかかれている部分は、まま変化するので、逐一確認すること。

スライド

調歩同期式シリアル通信(UART)について

16550というICのデータシート[PDF]に、 出力すべき・入力を受け付ける波形が載っている。

ループバック

本課題において、"ループバック動作"とは、受信したデータをそっくりそのまま返信する動作のことである。
本来は、I/Oの信号線の動作確認において、In-Outを直結させ、受け取ったデータをそのまま返すことをループバックと呼ぶ。
しかしながら、本課題において、In-Outの直結、あるいは直結に準ずると認める回路を以て、回答とすることは認めない。
確実に、受信、保持、加工、送信のプロセスを経由することを念頭に置くべきである。

動作確認においては、要求項目の通り、ファイルの送受信にて行う。
即ち、連続してデータが受信されたときに数バイトのロスが発生することは不具合とする。

動作確認方法の例

前もってminicomを立ちあげ、基盤からの出力を確認しつつ、以下のコマンドで直接シリアルポートへテキストファイルを流しこむ。

$ cat bigText.txt > /dev/ttyUSB0

あるいは、minicomのファイル送受信機能などを使っても良い。(使い方はminicomのhelpから確認できる)