2012/09/18

FPGA入門 - Terasic DE0でシリアル通信(UART)

FPGAとPC間の通信インタフェースを考えたとき,比較的簡単に実装できそうなものとして,UARTによるシリアル通信が挙げられると思います. FPGAボードにD-sub9端子(COMポート)が実装されていれば,この端子とPC側のD-sub9端子をシリアルケーブル(クロスケーブル)で接続することで,RS-232準拠のシリアル通信が可能なはずです. しかし残念ながら,Terasic DE0にはD-sub9端子が実装されておらず,シリアル通信を行うためには一手間必要となります.

DE0のRS-232 Serial Port

DE0はD-sub9端子を備えていないものの,RS-232準拠のシリアル通信を行うために必要なICが実装されており,このICを経由してFPGAに接続されている各信号線を引き出すためのテストポイントが用意されています. ICはADM3202で,これはFPGAの入出力電圧とRS-232準拠の伝送信号電圧の相互変換を行う機能を持っています.

私は,ここにピンヘッダをはんだ付けしました.下の写真はピンヘッダ実装後のものです.


DE0のRS-232 Serial Port(テストポイント)
シリアルケーブルの作成

次に,ピンヘッダに接続するシリアルケーブルを作りました. フラットケーブルのFPGAボード側はQIコネクタ,PC側はD-sub9ピンコネクタ(メス)になっています. ほとんど考慮する必要はないかと思いますが,ノイズの影響を抑えるためにケーブルは短めとしました. このためケーブル長が足りない場合は,ストレートのシリアルケーブルもしくはUSB-シリアル変換ケーブルを接続する必要があります.


シリアルケーブルの配線図

シリアルケーブルのD-subシェル内部
完成

完成したシリアルケーブルをテストポイントに接続した様子です. VHDLでUARTを記述してシリアル通信が行えるかテストしてみましたが,正常に動作しました.


Serial Cable for Terasic DE0
製品紹介
2012/09/09

四日市・名古屋旅行に行ってきました 1日目

青春18きっぷ有効期間の最後の2日間を使って,四日市・名古屋旅行に行ってきました. 1日目は近々廃線が決定される可能性のある近鉄の内部線・八王子線,2日目は名古屋臨海鉄道を訪問しました. 本記事に掲載されていない写真もありますので,よろしければ下記リンク先のアルバムをご覧ください.

四日市・名古屋旅行

自宅からは関西本線経由でJRの四日市駅まで行き,近鉄四日市駅までは三重交通の路線バスを利用しました. 残念ながら,当日午前中は豪雨に見舞われ,あまり写真を撮影できませんでした.午後になってから雨が止み,なんとか屋外で行動できるようになりました.

内部線と八王子線の分岐駅である日永駅で撮影した写真です.軌間762mmの特殊狭軌を走る小型車両で,カラフルな塗装も目を引きます.


日永駅にて

こちらは西日野駅から日永駅に到着する,八王子線の車両です.


日永駅付近にて

日永駅から南日永駅まで歩く間に撮影しました.大きなパンタグラフが特徴的です.


日永駅 - 南日永駅間にて

こちらは南日永-泊間で撮影した写真です.


南日永-泊間にて

写真撮影と同時にコンデジで撮影した動画です.

ふたたびJRの四日市駅です.ちょうど,DD51牽引の太平洋セメントのセメント貨物列車が停車していました.


太平洋セメントのセメント貨物列車
製品紹介
近鉄湯の山特急&内部・八王子・北勢線 [DVD]
テイチクエンタテインメント (2001-07-25)
売り上げランキング: 90,394
2012/09/03

FPGA / Verilog-HDL入門 - スロットマシンの設計

これまで主にVHDLを使用していたのですが,所属環境が変わってVerilog-HDLを使用する機会が多くなりました. 回路設計自体も初心者から抜け出せていないのに,違う言語に手を出すのは危険な気がしますが,仕方がありません. 今回は,Verilog-HDLの練習として簡単なスロットマシンを設計・記述し,FPGAに実装してみました.200行程度のシンプルな回路ですが,スロットマシンとしての主要な機能は抑えていると思います.

スロットマシンの仕様

今回設計したスロットマシンは,下記のような簡単な仕様を基に設計しました.

  1. スライドスイッチをhigh(= 1)にするとリセット動作
  2. 3個の7セグメントLEDに"0"を表示
  3. スライドスイッチをlow(= 0)にすると7セグメントLEDの数字が回転
  4. "0"~"7"(8種類)の数字を順に表示
  5. 各タクトスイッチを押すと対応する数字の回転が停止
  6. 数字が揃えばフィーバーとし,10個のLEDが点滅
FPGAボード

今回使用したFPGAボードは,Terasic社のDE0です. 下記のソースコードは,Quartus II 12.0 Web Editionでコンパイル可能であり,DE0上で正常に動作することを確認しています. ソースコードは自己責任の上でご利用ください.

スロットマシンの回路構成

下図に今回設計したスロットマシンの回路構成を示します. 青色のブロックは順序回路を,緑色のブロックは組合せ回路を表しており,合計5種類のモジュールで構成されています. 斜体の白字はモジュール名を,黄色の字はモジュールの入出力を示していますが,clk入力は字を省略し,赤色の配線で表現しています.


スロットマシンの回路構成
スロットマシン・コントローラのステートマシン

下図にコントローラのステートマシンを示します. 黒字は各状態への遷移条件,赤字は状態遷移時の動作を示しています. 各7セグメントLEDに同時に表示される数字が異なるように,各カウンタの回転開始時期をずらしています(全タクトスイッチ同時押下によるフィーバーの防止).


スロットマシン・コントローラのステートマシン
ソースコードの解説

下にソースコードを示します.slot_machineモジュール内には,コントローラのステートマシンとフィーバー判定器が記述されています. 35行目がフィーバー判定器の記述です. ステートマシンの状態がslot_waitかつ全数字の回転が停止しているときに,3個のカウンタの数字が同一であれば,led10モジュールのen信号を"1"にします.

decoderモジュールは,カウンタが保持している数字を2進数表現から7セグメントLED用の信号パターンに変換する組合せ回路です.

led10モジュールは,フィーバーのときに10個のLEDを点滅させる回路です. slot_machineモジュール内のフィーバー判定器が出力するen信号により点滅動作が制御されます.

counterモジュールは,7セグメントLEDに表示する数字を変化させ,その数字を保持するための回路です. 数字の変化は,slot_machineモジュール内のコントローラが出力するen信号により制御されます.

clk_generatorモジュールは簡易的なクロック分周器です. クロック周波数が高いと7セグメントLEDの数字を視認できないため,クロック周波数を落としています. なお,ここでは,FPGAに外部から入力されるクロックの周波数は50MHzを想定しています.

ソースコード
製品紹介
FPGA ボードで学ぶ組込みシステム開発入門 ~Altera編~
小林 優
技術評論社
売り上げランキング: 80089
2012/07/07

TeraTerm + XmingでX Window環境を構築する

XmingはWindows上でX Window環境を利用するためのフリーウェアで,一般にX Serverと呼ばれているソフトウェアの一種です. Xmingを利用することで,Linuxサーバ上のGUIをリモートで操作することが可能になります. Xmingと組み合わせて利用するSSHターミナルソフトウェアとしてはPuTTYが紹介されていることが多いですが,私は以前からTera Termのお世話になっているので,こちらと合わせて利用しています.

ここでは,TeraTerm + XmingでX Window環境を構築する方法を掲載します.

[1] インストーラをダウンロードする

Xming X Server for Windowsから,XmingとXming-fontsのインストーラをダウンロードします.私がダウンロードしたバージョンは以下のとおりです.

  • Xming: Xming-6-9-0-31-setup.exe
  • Xming-fonts: Xming-fonts-7-5-0-47-setup.exe
[2] Xmingをインストールする

ダウンロードしたインストーラを実行し,インストールを開始します.


Xmingのインストール [1]

Xmingのインストール [2]

コンポーネントの選択では,「Compact installation」を選択します. Tera Tarmを使用する場合,「Full installation」選択時にインストールされるXLaunch wizardなどは必要ありません.


Xmingのインストール [3]

Xmingのインストール [4]

Xmingのインストール [5]

Xmingのインストール [6]

Xmingのインストール [7]
[3] Xming-fontsをインストールする

Xmingをインストールしただけでは,下に示したEmacsのスクリーンショットのように,GUI上で文字化けが発生する場合があります. この問題は,Xming-fontsをインストールすることで解消されます.


文字化けが発生している例

Xmings-fontsもXmingと同様のインストーラです.デフォルト設定のままインストールします.


Xming-fontsのインストール
[4] Tera Termの設定を変更する

Tera Tarmの設定を変更し,Xmingとの連携を有効にします.Tera Termをインストールしていない場合は,Tera Termからダウンロードしてインストールしてください. 「設定」-「SSH転送」の順に開きます.


Tera Termの設定変更 [1]

「SSHポート転送」のウィンドウが開くので,「リモートのXアプリケーションをローカルのXサーバに表示する」にチェックを入れて,「OK」で閉じます.


Tera Termの設定変更 [2]

以下のようなウィンドウが表示されますが,「OK」で閉じてください.


Tera Termの設定変更 [3]

「設定」-「設定の保存」の順に開き,設定を上書き保存してください. その後,Tera Termを一旦終了します.


Tera Termの設定変更 [4]
[5] 導入完了

以上で導入作業は完了です.Xmingを起動し,Tera Termで任意のサーバに接続すれば,X Window環境を利用できます.


Xming起動中は,通知領域にアイコンが表示される

Xming-fontsインストール後は,文字化けもなく正常に表示される
製品紹介
独習Linux 第2版
独習Linux 第2版
posted with amazlet at 12.07.07
小林 準
翔泳社
売り上げランキング: 40577