目次

ニュース

日記カテゴリ

書庫

一度くらいソースコードを乗せないと^-^;
私がものすごいハマった件についてのエントリです。VHDLで、信号が変わったタイミングを拾いたい!っていうときが、少なからずあると思います。

たとえば、LからHになる瞬間をキャプチャしたいってとき。

______---------_______

なんて信号が変化するときに回路ロジックとしては

______-_______________

ってな信号出したいことがあるとします。
このときには、入力信号を一度F/Fで受けてからXORで比較して出力する形にするとうまくいきます。

--------------------------------------------------
library ieee ;
use ieee.std_logic_1164.all ;

entity inptest is
port (
 clock : in std_logic;  -- 基準クロック
 input : in std_logic;  -- 入力シグナル
 output : out std_logic  -- 出力シグナル
);
end inptest;

architecture rtl of inptest is
signal reg_input : std_logic;
begin
process ( clock )
begin
 if ( rising_edge( clock ) ) then
  reg_input <= input;
  if ( reg_input /= input and input = '1' ) then
   output <= '1';
  else
   output <= '0';
  end if;
 end if;
end process;
end rtl;
---------------------------------------------------

入力信号と出力信号を確認してみると、


となって、入力のパルスに対応して出力されていることがわかります。
このとき、中身のRTLは


のように生成されていて、入力に対してクロック遅延を持ったレジスタと入力そのものがXORになっているのがわかるかと思います。

投稿日時 : 2007年3月12日 20:59
Feedback
No comments posted yet.
タイトル  
名前  
Url
コメント   

Blog 利用状況

  • 投稿数 - 67
  • 記事 - 0
  • コメント - 321
  • トラックバック - 20

コミュニティ

プロファイル