2017-10-08 22 views
0

私はちょうどvhdlコードの学習を始めました。私はこのタイプのDタイプの非同期フリップフロップを作成しました。 2番目のDタイプを持つようにコードを修正する必要があります。2番目のDタイプは最初の出力からフィードされます。VHDL、Dタイプの非同期フリップフロップ

entity top is 
port (
    clk: in std_logic; 
    clr: in std_logic; 
    some_input_signal: in std_logic; 
    some_output_signal: out std_logic 
); 
end top; 

architecture rtl of top is 
    signal x: std_logic; 
begin 
    e1: entity work.FLIPFLOP 
    port map (
    clk => clk, 
    clr => clr, 
    D => some_input_signal, 
    Q => x); 

    e2: entity work.FLIPFLOP 
    port map (
    clk => clk, 
    clr => clr, 
    D => x, 
    Q => some_output_signal); 
end; 

xは最初のDFFでoutputedと第二DFFにinputedされた信号である。

library ieee; 
use ieee.std_logic_1164.all; 

entity FLIPFLOP is 
port ( 
    clk : in std_logic ; 
    clr : in std_logic ; 
    D : in std_logic ; 
    Q : out std_logic 
); 
end FLIPFLOP; 

architecture behav of FLIPFLOP is 
begin 
process (clk,clr,D) 
begin 
if clr = '1' then 
Q<= '0'; 
elsif rising_edge (clk) then 
Q<= D; 
end if; 
end process; 
end behav; 
+1

プロセス感度リストにDは必要ありません。 [VHDL Dタイプ非同期フリップフロップ](https://electronics.stackexchange.com/questions/333403/vhdl-d-type-asynch-flip-flop)を参照してください。これはシフトレジスタと呼ばれます。 [VHDLのシフトレジスタの構造設計](https://stackoverflow.com/questions/37082327/structural-design-of-shift-register-in-vhdl)と[VHDLのシフトレジスタの設計](https:///stackoverflow.com/questions/29840819/design-a-shift-register-in-vhdl)などです。 – user1155120

+1

'process(clk、clr)変数reg:std_logic_vector(1 downto 0);もしclk = '1'ならばreg; =" 00 "; rising_edge(clk)してからreg:= D&reg(1);終了する。 Q <= reg(0);最終過程;それがあなたが望んでいたものでないなら、あなたの質問が不明であることを実証します。それはあなたのすべての基準を満たしています。 2つのフリップフロップはreg(1)とreg(0)です。変数regは、Q割当てを別のプロセス(プロセスステートメントとして詳述される同時信号割当ての場合のような)にすることを必要とする信号であってもよい。 – user1155120

答えて

0

は、私はあなたがあなたのDFFのアーキテクチャを使用してトップレベルのVHDLファイルを作成する必要があると思います。

関連する問題