Мое задание звучит следующим образом:
Синхронный сдвиговой регистр на D-триггерах с управлением по переднему фронту и асинхронным сбросом в "1010". Стиль описания - Структурный стиль
. Так же картинка со схемой
Я используя программу для генерации кода по схеме получил следующий код:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
entity DIG_D_FF_AS is
port (
Q: out std_logic;
notQ: out std_logic;
Set: in std_logic;
D: in std_logic;
C: in std_logic;
Clr: in std_logic );
end DIG_D_FF_AS;
architecture Behavioral of DIG_D_FF_AS is
signal state : std_logic := '0';
begin
process (Set, Clr, C)
begin
if (Set='1') then
state <= NOT('0');
elsif (Clr='1') then
state <= '0';
elsif rising_edge(C) then
state <= D;
end if;
end process;
Q <= state;
notQ <= NOT( state );
end Behavioral;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
entity main is
port (
CLK: in std_logic;
RESET: in std_logic;
Q1: out std_logic;
Q2: out std_logic;
Q3: out std_logic;
Q4: out std_logic);
end main;
architecture Behavioral of main is
signal Q4_temp: std_logic;
signal Q1_temp: std_logic;
signal Q2_temp: std_logic;
signal Q3_temp: std_logic;
begin
gate0: entity work.DIG_D_FF_AS -- DFF1
port map (
Set => RESET,
D => Q4_temp,
C => CLK,
Clr => RESET,
Q => Q1_temp);
gate1: entity work.DIG_D_FF_AS -- DFF2
port map (
Set => RESET,
D => Q1_temp,
C => CLK,
Clr => RESET,
Q => Q2_temp);
gate2: entity work.DIG_D_FF_AS -- DFF3
port map (
Set => RESET,
D => Q2_temp,
C => CLK,
Clr => RESET,
Q => Q3_temp);
gate3: entity work.DIG_D_FF_AS
port map (
Set => RESET,
D => Q3_temp,
C => CLK,
Clr => RESET,
Q => Q4_temp);
Q1 <= Q1_temp;
Q2 <= Q2_temp;
Q3 <= Q3_temp;
Q4 <= Q4_temp;
end Behavioral;
Схема по которой сгенерирован код:
P.S Я максимально не понимающий в этой теме человек. Поэтому даже не знаю радоваться ли результату или нет.