TEL:086-227-0113
info@gopher-tec.jp
TOP page 製品情報 FPGAソース Counter for Rotary Encoder
Counter for Rotary Encoder

ロータリエンコーダのA/B相パルス入力を計数する、バイナリカウンタとグレイコードのセットです。

カウンタは16ビットのバイナリカウンタとグレイコードカウンタの2つで、A相がB相に対して
位相が先行する場合にカウントアップ、逆の場合にカウントダウンします。グレイコード出力は
同時に変化するビットが常に1つだけのため、カウントクロックと異なるクロックでカウンタを
サンプリングせざるを得ない場合に、同期化け(7FFhが800hになる瞬間をサンプリングして
8FFhに見える等)を避けることができて便利です。サンプリング後にバイナリ値に戻す場合は、
ソースコード中のコメント文に戻し方を記載していますので、合わせて参照して下さい。

入力信号をカウントクロックで同期化している部分は、使用するクロックの周波数を考慮の上、
段数を増やすなど再構成してご使用下さい。入力信号のなまり方によっては、グリッチを除去
するためのフィルタ回路を挿入すべきですが、本コードには含んでいません。適宜追加して
ご使用下さい。

Port I/O  Description 
CLOCK in カウントクロックです。
本モジュールはこの信号の立ち上がりエッジで動作します。
RESET in 非同期リセット入力です。
パワーオン時、またはシステムリセット時にアサートして下さい。
PH_A in ロータリエンコーダのA相パルス入力です。
PH_B in ロータリエンコーダのB相パルス入力です。
CNT_CLR in カウンタを初期化(ゼロクリア)するための信号です。
PH_A、PH_B入力と同時に入力さた場合、CNT_CLRが優先されます。
CNT_ENA in カウンタのアップ・ダウンのイネーブル信号です。
本信号がアクティブの場合に限り、PH_A、PH_Bが有効となります。
MODE_4X in Hiの時、A相B相の1周期で4カウント計数します。Loの時は2カウント計数します。
BIN_CNT[15:0] out 16ビットのバイナリカウンタ出力(FF出力)です。
GRY_CNT[15:0] out 16ビットのグレイコードカウンタ出力(FF出力)です。
※特に注記のない限り、信号は全て正論理です。
本ソースコードはVHDL版とVerilog版となっております。
詳細は下記の資料ダウンロードをクリックください。
ソースコード自体は当社WEBストアにて販売しております。

Counter for Rotary Encoder
資料ダウンロード