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;
プロセス感度リストに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
'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