0

D FlipFlop を使用して 4 ビットのシフト レジスタを作成したいのですが、この図がわかりません。 ここに画像の説明を入力

このコードは、シフトレジスタ用に私に与えられました

ENTITY shift4 IS
 PORT ( D : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; 
 Enable : IN STD_LOGIC;
 Sin : IN STD_LOGIC;
 Clock : IN STD_LOGIC;
 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; 
END shift4 ; 

そして、私はフリップフロップのためにこのコードを書きました

entity flipflop is
 port ( D_in : in std_logic;
 CLK : in std_logic;
 CLR : in std_logic;
 Q_out : out std_logic
 );
end flipflop; 


architecture behavior of flipflop is
begin
process(CLK)
begin
if CLR='0' then null;
elsif RISING_EDGE(CLK) then
Q_out <= D_in;
end if;
end process ;
end behavior ;

この図から得られないのは、D の使用方法と、この入力と出力でフリップフロップをポートする方法です。私はこれを試しました

FF1: flipflop port map(Sin,Clock,Enable, Q(3));
FF2: flipflop port map(Sin,Clock,Enable, Q(2));
FF3: flipflop port map(Sin,Clock,Enable, Q(1));
FF4: flipflop port map(Sin,Clock,Enable, Q(0));

しかし、Dも使用する必要があるため、明らかにそうではありませんが、すべての変数を使用する方法が見つかりません。

4

1 に答える 1

1
FF1: flipflop port map(Sin,Clock,Enable, Q(3));

これは良いことです。ダイアグラムが要求することを正確に実行します。

FF2: flipflop port map(Sin,Clock,Enable, Q(2));

これは良くない。これは の入力DFF2に接続しますがSin、ダイアグラムはそれを に接続しQ(3)ます。次のようなことを試すことができます。

FF2: flipflop port map(Q(3),Clock,Enable, Q(2));

ただし、ツールが VHDL-2008 を使用する互換性がない限り、失敗します (そうでないと想定する方が安全です)。これは、VHDL ではエンティティの出力を読み取ることができないためです。代わりに、内部信号を定義し、それをすべての割り当てに使用して、それに割り当てるQ必要があります。

architecture structural of shift4 is
    signal Q_i : std_logic_vector(3 downto 0); -- _i stands for internal
begin
    Q <= Q_i; -- Drive output port from the internal version

    FF1: flipflop(Sin, Clock, Enable, Q_i(3));
于 2015-05-10T13:35:20.530 に答える