Есть код сдвигового регистра
entity DFF is
port (
RSTn, CLK, D : in bit;
Q : out bit);
end DFF;
architecture RTL of DFF is
begin
process (RSTn, CLK)
begin
if (RSTn = '0') then
Q <= '0';
elsif (CLK'event and CLK = '1') then
Q <= D;
end if;
end process;
end RTL;
entity SHIFT is
port (
RSTn, CLK, SI : in bit;
SO : out bit);
end SHIFT;
architecture RTL3 of SHIFT is
component DFF
port (
RSTn, CLK, D : in bit;
Q : out bit);
end component;
signal T : bit_vector(8 downto 0);
-- декларация сигнала T
begin
T(8) <= SI;
SO <= T(0);
g0 : for i in 7 downto 0 generate
allbit : DFF
port map (RSTn => RSTn, CLK => CLK, D => T(i+1), Q => T(i));
end generate;
end RTL3;
Необходимо сделать сдвиговый n разрядный регистр , сдвигать должен влево или вправо...Как я поняла нужно делать на D триггере, но не понимаю как одновременно сдвигать. Плюс нужно использовать generic и generate А использовать библиотеки std_logic а не bit.....Может таблицу истинности подскажите
Раздел: ПЛИС
entity DFF is
port (
RSTn, CLK, D : in bit;
Q : out bit);
end DFF;
architecture RTL of DFF is
begin
process (RSTn, CLK)
begin
if (RSTn = '0') then
Q <= '0';
elsif (CLK'event and CLK = '1') then
Q <= D;
end if;
end process;
end RTL;
entity SHIFT is
port (
RSTn, CLK, SI : in bit;
SO : out bit);
end SHIFT;
architecture RTL3 of SHIFT is
component DFF
port (
RSTn, CLK, D : in bit;
Q : out bit);
end component;
signal T : bit_vector(8 downto 0);
-- декларация сигнала T
begin
T(8) <= SI;
SO <= T(0);
g0 : for i in 7 downto 0 generate
allbit : DFF
port map (RSTn => RSTn, CLK => CLK, D => T(i+1), Q => T(i));
end generate;
end RTL3;
Необходимо сделать сдвиговый n разрядный регистр , сдвигать должен влево или вправо...Как я поняла нужно делать на D триггере, но не понимаю как одновременно сдвигать. Плюс нужно использовать generic и generate А использовать библиотеки std_logic а не bit.....Может таблицу истинности подскажите
Раздел: ПЛИС