« CPLDとDAコンバータで作る100kHz正弦波発振回路 | トップページ | ミスミのパソコンBBC-8200-V7D-W7のWindowsリアルタイム性評価 »

2014年7月11日

入力信号を3回一致で取り込むクロック同期式ディジタルフィルタのVHDLコード

入力信号を3回一致で取り込むクロック同期式ディジタルフィルタのVHDLコード

3time_sampling_filter

RTL Viewerでみた回路。

クリックで拡大。

右から、2つ目の紫の部分、D形フリップフロップの出力が3回一致式ディジタルフィルタ出力。

一番右は、フィルタ出力信号の立下りをとらえるためのおまけ。

-- Falling Edge Detector with 3-stage filter

PROCESS (xres,din,clk)
BEGIN
  IF (xres = '0') THEN
   q1 <= '0';
   q2 <= '0';
   q3 <= '0';
   q4 <= '0';
   q5 <= '0';
  ELSIF (clk'event AND clk = '1') THEN
   q1 <= din ;
   q2 <= q1;
   q3 <= q2;
   q5 <= q4;
     IF (q1='0' AND q2='0' AND q3='0') THEN
    q4 <= '0';
   ELSIF  (q1='1' AND q2='1' AND q3='1') THEN
    q4 <= '1';
   END IF;
  END IF;
END PROCESS;

fall_edge <= ((NOT q4 ) AND q5);

まだ、シミュレーションできていない。

確認は、これから。

■リンク: 「モーションおやじ」のノウハウ

プライムモーション社

リアルタイムWindows 40軸超高速マシンコントローラ

|

« CPLDとDAコンバータで作る100kHz正弦波発振回路 | トップページ | ミスミのパソコンBBC-8200-V7D-W7のWindowsリアルタイム性評価 »

技術フィルタ」カテゴリの記事

コメント

コメントありがとうございます。

モータ制御の高性能回路のいろいろなご経験がありますね!

かなり詳しい雰囲気が文章に出てます。

15年前にVHDL書いていた頃は、
VHDLの文法書を買って、勉強したのですが、
ほとんど忘れています。

今回は、
昔のコードのわかるところを
コピーペーストして、早く動かしたい
という感じで、初心者レベルです。

モーションおやじ

投稿: モーションおやじ | 2014年7月12日 15時41分

generic使えば外からフィルターの深さをNとして可変のライブラリになります。(3クロックで)固定だと回数が増えた時に修正が必要になりますね。

エディタにemacsを使うとVHDL記述が楽になります。

エンコーダのABZ相をフォトカプラ受けしてエンコーダカウンタに入れる前段で上のようなフィルタを立ち上がりと立ち下がりに用意し、フォトカプラのON→OFF、OFF→ONの伝搬遅延時間の差を吸収させることでエンコーダカウンタの動作周波数を上げるのに使ったことが有ります。肝はなるべくクロック周波数が高くなるように全体を設計することです。クロック周期がそのまま遅延時間調整の最小単位になるので周波数が高いなら柔軟に調整が可能です。モーションおやじ様ならよくご存知だと思います。

投稿: | 2014年7月12日 10時31分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« CPLDとDAコンバータで作る100kHz正弦波発振回路 | トップページ | ミスミのパソコンBBC-8200-V7D-W7のWindowsリアルタイム性評価 »