Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

パソコン通信と呼ばれるコミュニティには参加したことがなかったので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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away