1
0

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 5 years have passed since last update.

もっとアプリを!Xmodem にチャレンジ

Last updated at Posted at 2017-12-10

パソコン通信と呼ばれるコミュニティには参加したことがなかったのでXMODEM もほとんど使ったことがない。スマホ時代の人も XMODEM なんぞ使う機会はないだろう。組み込みシステムの世界ではシリアル通信は今でも必要なのでTera Term を使ったことがある人は一定数いるに違いない。そして、Term Termにはちゃんとその機能 XMODEM がある。

image.png

プロトコル詳細はウィキペデイアの XMODEMに譲るとして、ここでは polyphony を使用した XMODEM の設計についてフォーカスしよう。

#メモリのシミュレーション
XMODEM を FPGA に導入したいという動機はパソコン通信ではない。画像データなどをメモリへロード、メモリからセーブするのに利用することを想定している。対象相手は最終的には DRAM になるが、現時点では BRAM でシミュレーションすることにしよう。そして、そのシミュレーションも Polyphony で記述する。

x_mem がそのシミュレーションをするモジュールだ。NOP, WRITE, READ の cmd を受け付け BRAM に WRITE なら書きこみREAD なら BRAM から読み出す。実際のデータのやり取りは queue から行う。

image.png

#XMODEM 書き込み:QUEUE からメモリへ
xmodem_q2m class は in_q から XMODEM のプロトコルを受け取り、out_q へ返事をする。そして、要求に応じて x_mem へコマンドを送信しデータを"アップロード"する。

image.png

さて、ソースはどうしたものか?gist に張り付けておくことにしよう。現時点では BRAM が対象なので実用性はない。近いうちに DRAM に対応することにしよう。

https://gist.github.com/ryos36/62d48e37346048b00f502ce12d29565f
https://gist.github.com/ryos36/cf50b30425a37b49f177fe8a827d37cd
https://gist.github.com/ryos36/cb07a8287a4a14f6532a3a8e29c1ec49

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?