2と3のリビジョン間の差分
2018-01-31 07:39:43時点のリビジョン2
サイズ: 1738
編集者: TakanoriKono
コメント:
2018-01-31 07:40:22時点のリビジョン3
サイズ: 1739
編集者: TakanoriKono
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 6: 行 6:
http://www.fpga4fun.com/SerialInterface.htmlに詳しい解説がある。 http://www.fpga4fun.com/SerialInterface.html に詳しい解説がある。

シリアルポートを用いた通信

安価なFPGAボードでは、デジタル回路とPC間でデータをやり取りするために、低速なシリアルポートを搭載している場合がある。 例えば、Digilent社製Nexys4 DDRではUSBケーブルを介したシリアルポート通信(UART)が可能である。

シリアルポート通信のためのVerilogコード

http://www.fpga4fun.com/SerialInterface.html に詳しい解説がある。 このサイトからVerilogコード(async.zip)もダウンロードできる。 ファイルの中で、使用するクロックの周波数(ClkFrequency)とボーレート(BaudRate)を必要に応じて変更すればすぐに動く。

シリアル通信のためのソフトウェア

様々な言語で書くことができるが、pyserialが簡単である。 testcom.pyに文字列、または16 bitデータをやりとりするプログラムの例を載せてある。 1バイト送信する度に100 usくらい待ってから次のバイトを送るようにした方がよさそうである。

使い方

  • FPGAにasync.zipにあるasync_transmitter, async_receiverという2つのモジュールを組み込む。
  • WE=RV, WD=RDとすれば、単純にPCから受け取ったデータをそのまま返すことが可能である。
  • FPGAにコードを書き込んだら、/dev/ttyUSB1などのデバイスファイルでアクセス可能となる。
    • デフォルトではroot権限が必要なので、"sudo chmod 766 /dev/ttyUSB1"を実行して誰でもアクセスできるようにする必要がある。
  • これで上のtestcom.pyを使って通信できる。

ExampleSerialPort (最終更新日時 2018-01-31 07:40:22 更新者 TakanoriKono)