FPGA活用回路&サンプル記述集(4) ―― 安定動作のための回路

小野 裕幸,森田 一

事例2.調歩同期のシリアル通信を行う回路

森田 一

外部回路

  • 回路図:図2-1
  • 主要部品:マイコンなど
HDL記述
  • Verilog HDL:リスト2-1
  • 外部入力:si(シリアル入力)
  • 外部出力:so(シリアル出力)
  • 内部入力:pi(パラレル・データ),div(ボー・レート),xmit(送信開始),clk,nreset
  • 内部出力:po(パラレル・データ),rdy(送信終了),rcvd(受信終了),ferr(受信フレーミング・エラー)
  • パラメータ:なし
評価環境
  • Altera社,Quartus II

 FPGAとマイコン間で通信を行いたい場合があります.そういった場合,SCI(Serial Communication Interface)やUART(Universal Asynchronous Receiver Transmitter)などの調歩同期のシリアル通信を使っておくと便利です.例えば,マイコンとFPGAの開発のスケジュールがずれた場合や,動作に問題が発生した場合に,マイコンとFPGAの片方とパソコンを接続して,パソコン上のターミナル・ソフトウェアなどで通信をシミュレーションできます(図2-1).また,パソコンからFPGAを制御したい場合にも便利です.

zu02_01.gif

図2-1 マイコンとFPGA間は調歩同期式のシリアル通信を使っておくと便利

● SCIの実装

 今回は,SCIの仕様としてはかなり簡略化しました.

  • データ長:8ビット
  • パリティ:なし
  • ストップ・ビット:1
  • ボー・レート:クロックの4分の1程度まで

 通常のマイコンなどのSCIでは,ボー・レートの分周比の設定はサンプリング・クロックがボー・レートの4倍になるように設定します.今回の実装では,サンプリング・クロックはボー・レートの2倍になるように設定します.

 表2-1に受信ブロックの状態遷移を示します.リスト2-1が今回の実装のVerilog HDL記述です.

状態  遷移先 遷移条件
0待機 1siに'0'が入力
1スタート・ビットの確認0siが'1'
2siが'0'
2NOP3ボー・レートの半分の周期の経過
3ビット0の取り込み4ボー・レートの半分の周期の経過
4NOP5ボー・レートの半分の周期の経過
5ビット1の取り込み6ボー・レートの半分の周期の経過
6NOP7ボー・レートの半分の周期の経過
7ビット2の取り込み8ボー・レートの半分の周期の経過
8NOP9ボー・レートの半分の周期の経過
9ビット3の取り込み10ボー・レートの半分の周期の経過
10NOP11ボー・レートの半分の周期の経過
11ビット4の取り込み12ボー・レートの半分の周期の経過
12NOP13ボー・レートの半分の周期の経過
13ビット5の取り込み14ボー・レートの半分の周期の経過
14NOP15ボー・レートの半分の周期の経過
15ビット6の取り込み16ボー・レートの半分の周期の経過
16NOP17ボー・レートの半分の周期の経過
17ビット7の取り込み18ボー・レートの半分の周期の経過
18NOP19ボー・レートの半分の周期の経過
19ストップ・ビットの確認22ボー・レートの半分の周期の経過
20NOP0ボー・レートの半分の周期の経過

表2-1 受信ブロックの状態遷移

 受信のボー・レート分周器は,スタート・ビットの立ち下りエッジを検出してスタートします.このためサンプリング・クロックがボー・レートの2倍でも受信データのほぼ中央部でデータをサンプルできます.受信が終了するとrcvdパルスが出ます.また,ストップ・ビットが検出できなかった場合はferrパルスが出ますから,ブレーク信号などによる起動に利用できます.

 送信ブロックのボー・レート分周器はxmit信号が'1'になったことでスタートします.データの送信中はrdy信号が'0'になります.またxmit信号のパルス幅は,データの送信終了までに'0'になれば問題ありません.

 送信は単純にシフト・レジスタを回していくだけです.本来ステート数はアイドル・ステートと,スタート・ビットからストップ・ビットまでの10ステート,あわせて11ステートでよいのですが,受信ブロックに合わせてボー・レートの半分の周期で回しています.

もりた・はじめ

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日