1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

トリガ入力信号が来ているかLEDで確認する回路(FPGA,VHDL)

Posted at

概要

基板の外部から入力するトリガ信号が来ているかをLEDで目視確認できるような構成について紹介します。
トリガはFPGAで受けて処理していますので、残念ながらフルディスクリートではありません。

おすすめのバッファIC

TI社のSN74LV1T34DBVRがおすすめです。

  • 単一電源で動作可能
  • FPGAのIO電源3.3Vのとき、トリガ入力1.8V~5Vまで入力可能
  • 安い(40円くらい)
  • 手づけでもリフローでも実装がしやすい((SOT-23)
  • IO電圧が1.8でも、3.3Vでも、5Vでも使える

image.png

基板外部からの信号を入力するので、念のため保護ダイオードとプルダウンして使っているケースが多いです。

利用するFPGAのモジュール

過去に紹介したVHDLのモジュールを組み合わせることで、処理を実現しています。
各モジュールの中身は過去記事を参照してください。

こちらのモジュールで入力信号の同期化及びエッジの検出をしています。

こちらの記事で紹介したモジュールに検出した立ち上がりエッジを入力することで、一定時間より長くLEDを点灯させることができ、目視可能となります。

VHDLソース

過去記事のモジュールをインスタンスしているだけですが、このようにTRIGGER_INDICATORモジュールとして用意しておくと再利用しやすいです。

TRIGGER_INDICATOR.vhd
-------------------------------------------------------------------
-- トリガインジケーター
-- 非同期のトリガ入力信号を同期化して、立ち上がりエッジを検出し、
-- エッジから一定時間引き延ばしたモニタ信号を生成する。モニタ信号はLEDにて目視。
-------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity TRIGGER_INDICATOR is
    Port(
    i_CLK           :in  std_logic;
    i_RST_p         :in  std_logic;
    i_TRIGGER_p     :in  std_logic;--
    o_TRIGGER_SYNC  :out std_logic;--同期化したトリガ
    o_TRIGGER_RISE  :out std_logic;--トリガの立ち上がりエッジ
    o_TRIGGER_FALL  :out std_logic;--トリガの立ち下がりエッジ
    o_INDICATOR_p   :out std_logic --トリガ入力目視用のインジケーター(LEDなどに接続)
    );
end entity;

architecture RTL of TRIGGER_INDICATOR is

signal sync_trg         :std_logic;
signal rise_p           :std_logic;
signal fall_p           :std_logic;
signal extend_pulse_p   :std_logic;

begin
--同期化FFとエッジ検出
u_SYNCHRO_DFF:entity work.SYNCHRO_DFF
    port map
    (i_CLK     =>i_CLK
    ,i_RST_p   =>i_RST_p
    ,i_PORT    =>i_TRIGGER_p
    ,o_SYNCHRO =>sync_trg
    ,o_RISE_p  =>rise_p
    ,o_FALL_p  =>fall_p
    );
--駆動パルスのエッジを引き延ばす(レジスタリード用)
u_PULSE_EXTENDER:entity work.PULSE_EXTENDER
     generic map(
     EXTEND_CYCLE => 25000000--引き延ばすクロックサイクル数(50MHzで0.5s)
     )
     port map
    (i_CLK              =>i_CLK
    ,i_RST_p            =>i_RST_p
    ,i_SOURCE_PULSE_p   =>rise_p
    ,o_EXTEND_PULSE_p   =>extend_pulse_p
     );

o_TRIGGER_SYNC <=sync_trg;
o_TRIGGER_RISE <=rise_p;
o_TRIGGER_FALL <=fall_p;
o_INDICATOR_p  <=extend_pulse_p;
end architecture;

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?