応用回路設計のための第一歩 ―― I/O規格とLED表示,スイッチ入力,アナログ出力,RS-232通信のための回路の設計法

井倉 将実

5.RS-232シリアル通信部

● RS-232シリアル通信とは

 パソコンとボード間をつなぐインターフェースとして,シリアル通信がよく使われます.デスクトップ・パソコンに付いている9ピンのコネクタがシリアル通信ポートです.これは「RS-232」と呼ばれる方式です.RS-232は,古くから通信機器とコンピュータをつなぐ方法として広く用いられています(図16)


図16 RS-232による通信

 データの送受信には,最低1本,双方向通信を行いたい場合でも2本の信号線があれば可能です.そのため,低コストで通信システムを構築できる利点があります.

● RS-232通信の基本

 RS-232通信方式は,ホストとターゲットが共通の速度で通信を行う前提でクロックを用いない「調歩同期式」通信を採用しています.クロックを用いない方式なので「非同期シリアル通信」とも言われます.
 さて,ホストとターゲットの間ではあらかじめデータ転送速度を決めておく必要があります.また,データ送信時には,データの先頭を示す「スタート・ビット」とデータの終了を示す「ストップ・ビット」を付加します(図17).また,必要に応じてデータのエラー検出を行うための「パリティ・ビット」を付加します.


図17 RS-232通信のデータ構造

 受信側はいつホストからデータが送られてくるのか分かりません.そこで,データ転送速度の16倍でデータを取り込み続け,まずスタート・ビット(Lレベル)を検出します.スタート・ビットを検出したら,8クロック期間だけ待ちます.これでデータの中心付近を読み取ることになります.その後は本来のデータ転送速度で8回読み込めば,8ビットのデータを取得できます.8ビットのデータの後ろにさらに1ビット分のHレベルがあれば,それでデータは正しく送り出されたことになります(図18)

図18 受信データの取得方法

 実際のRS-232通信では,エラー検出機構もあるので,やや複雑になります.

● RS-232ドライバIC

 広く普及したRS-232通信は,機器間が離れた場所であっても通信が行える規格です.19.200bpsのデータ転送速度で,最長15mの距離でも通信できることと定義されていました.今日では高品質のケーブルも登場しており,より速い速度(115.2kbps)でさらに長距離(30m)で伝送することも可能です.

 このような距離の通信は,FPGAの信号を引き延ばすだけでは実現できません.FPGAは長い抵抗素子とみなされるケーブルを駆動する能力はありません.また,外来ノイズの影響を受けて部品を破壊してしまう可能性があります.

 そこでRS-232通信では,長距離のケーブルを駆動し,かつノイズから機器を保護する「ドライバIC」を使用します.送信側では,FPGAなどの3.3Vの信号を,最大±15Vの電圧に変換します.受信側では,大きな振幅の信号からFPGAなどが受け取れるI/O規格の信号に変換します.ドライバICは,2,000V程度までの瞬間的なノイズに耐えられる構造になっています.

● RS-232ドライバ回路

 RS-232ドライバ回路を図19に示します.
 今回のボードに搭載されているドライバICは,米国Exar社の「SP3222」です.3.3VのLVTTL信号とRS-232信号レベルを相互に変換するバッファが合計4チャネル分搭載されています.

図19 RS-232通信回路

● FPGAの回路について

 RS-232通信は,ドライバICだけでは実現できません.図17に示したフォーマットのデータを送出したり,図18の方法でデータを受け取る回路が必要になります.FPGAを使う場合は,FPGA設計者がこの回路を設計する必要があります.

 本稿では,シリアル通信回路の設計法については省略します.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日