-- [1] 8-bit Shift-Left Register with Positive-Edge Clock, Serial In, and Serial Out
--------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_1 is
port(C, SI : in std_logic;
SO : out std_logic);
end shift_registers_1;
architecture archi of shift_registers_1 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
for i in 0 to 6 loop
tmp(i+1) <= tmp(i);
end loop;
tmp(0) <= SI;
end if;
end process;
SO <= tmp(7);
end archi;
-- [2] 8-bit Shift-Left Register with Negative-Edge Clock, Clock Enable,
-- Serial In, and Serial Out
--
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_2 is
port(C, SI, CE : in std_logic;
SO : out std_logic);
end shift_registers_2;
architecture archi of shift_registers_2 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='0') then
if (CE='1') then
for i in 0 to 6 loop
tmp(i+1) <= tmp(i);
end loop;
tmp(0) <= SI;
end if;
end if;
end process;
SO <= tmp(7);
end archi;
--- [3] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Asynchronous Clear,Serial In, and Serial Out
---------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_3 is
port(C, SI, CLR : in std_logic;
SO : out std_logic);
end shift_registers_3;
architecture archi of shift_registers_3 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C, CLR)
begin
if (CLR='1') then
tmp <= (others => '0');
elsif (C'event and C='1') then
tmp <= tmp(6 downto 0) & SI;
end if;
end process;
SO <= tmp(7);
end archi;
-- [4] 8-bit Shift-Left Register with Positive-Edge Clock, Synchronous Set,
-- Serial In, and Serial Out
------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_4 is
port(C, SI, S : in std_logic;
SO : out std_logic);
end shift_registers_4;
architecture archi of shift_registers_4 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C, S)
begin
if (C'event and C='1') then
if (S='1') then
tmp <= (others => '1');
else
tmp <= tmp(6 downto 0) & SI;
end if;
end if;
end process;
SO <= tmp(7);
end archi;
-- [5] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Serial In, and Parallel Out
-----------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_5 is
port(C, SI : in std_logic;
PO : out std_logic_vector(7 downto 0));
end shift_registers_5;
architecture archi of shift_registers_5 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
tmp <= tmp(6 downto 0)& SI;
end if;
end process;
PO <= tmp;
end archi;
-- [6] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Asynchronous Parallel Load, Serial In, and Serial Out
---------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_6 is
port(C, SI, ALOAD : in std_logic;
D : in std_logic_vector(7 downto 0);
SO : out std_logic);
end shift_registers_6;
architecture archi of shift_registers_6 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C, ALOAD, D)
begin
if (ALOAD='1') then
tmp <= D;
elsif (C'event and C='1') then
tmp <= tmp(6 downto 0) & SI;
end if;
end process;
SO <= tmp(7);
end archi;
-- [7] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Synchronous Parallel Load, Serial In, and Serial Out
---------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_7 is
port(C, SI, SLOAD : in std_logic;
D : in std_logic_vector(7 downto 0);
SO : out std_logic);
end shift_registers_7;
architecture archi of shift_registers_7 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
if (SLOAD='1') then
tmp <= D;
else
tmp <= tmp(6 downto 0) & SI;
end if;
end if;
end process;
SO <= tmp(7);
end archi;
-- [8] 8-bit Shift-Left/Shift-Right Register with Positive-Edge Clock,
-- Serial In, and Parallel Out
----------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_8 is
port(C, SI, LEFT_RIGHT : in std_logic;
PO : out std_logic_vector(7 downto 0));
end shift_registers_8;
architecture archi of shift_registers_8 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
if (LEFT_RIGHT='0') then
tmp <= tmp(6 downto 0) & SI;
else
tmp <= SI & tmp(7 downto 1);
end if;
end if;
end process;
PO <= tmp;
end archi;
--------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_1 is
port(C, SI : in std_logic;
SO : out std_logic);
end shift_registers_1;
architecture archi of shift_registers_1 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
for i in 0 to 6 loop
tmp(i+1) <= tmp(i);
end loop;
tmp(0) <= SI;
end if;
end process;
SO <= tmp(7);
end archi;
-- [2] 8-bit Shift-Left Register with Negative-Edge Clock, Clock Enable,
-- Serial In, and Serial Out
--
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_2 is
port(C, SI, CE : in std_logic;
SO : out std_logic);
end shift_registers_2;
architecture archi of shift_registers_2 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='0') then
if (CE='1') then
for i in 0 to 6 loop
tmp(i+1) <= tmp(i);
end loop;
tmp(0) <= SI;
end if;
end if;
end process;
SO <= tmp(7);
end archi;
--- [3] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Asynchronous Clear,Serial In, and Serial Out
---------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_3 is
port(C, SI, CLR : in std_logic;
SO : out std_logic);
end shift_registers_3;
architecture archi of shift_registers_3 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C, CLR)
begin
if (CLR='1') then
tmp <= (others => '0');
elsif (C'event and C='1') then
tmp <= tmp(6 downto 0) & SI;
end if;
end process;
SO <= tmp(7);
end archi;
-- [4] 8-bit Shift-Left Register with Positive-Edge Clock, Synchronous Set,
-- Serial In, and Serial Out
------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_4 is
port(C, SI, S : in std_logic;
SO : out std_logic);
end shift_registers_4;
architecture archi of shift_registers_4 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C, S)
begin
if (C'event and C='1') then
if (S='1') then
tmp <= (others => '1');
else
tmp <= tmp(6 downto 0) & SI;
end if;
end if;
end process;
SO <= tmp(7);
end archi;
-- [5] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Serial In, and Parallel Out
-----------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_5 is
port(C, SI : in std_logic;
PO : out std_logic_vector(7 downto 0));
end shift_registers_5;
architecture archi of shift_registers_5 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
tmp <= tmp(6 downto 0)& SI;
end if;
end process;
PO <= tmp;
end archi;
-- [6] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Asynchronous Parallel Load, Serial In, and Serial Out
---------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_6 is
port(C, SI, ALOAD : in std_logic;
D : in std_logic_vector(7 downto 0);
SO : out std_logic);
end shift_registers_6;
architecture archi of shift_registers_6 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C, ALOAD, D)
begin
if (ALOAD='1') then
tmp <= D;
elsif (C'event and C='1') then
tmp <= tmp(6 downto 0) & SI;
end if;
end process;
SO <= tmp(7);
end archi;
-- [7] 8-bit Shift-Left Register with Positive-Edge Clock,
-- Synchronous Parallel Load, Serial In, and Serial Out
---------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_7 is
port(C, SI, SLOAD : in std_logic;
D : in std_logic_vector(7 downto 0);
SO : out std_logic);
end shift_registers_7;
architecture archi of shift_registers_7 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
if (SLOAD='1') then
tmp <= D;
else
tmp <= tmp(6 downto 0) & SI;
end if;
end if;
end process;
SO <= tmp(7);
end archi;
-- [8] 8-bit Shift-Left/Shift-Right Register with Positive-Edge Clock,
-- Serial In, and Parallel Out
----------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity shift_registers_8 is
port(C, SI, LEFT_RIGHT : in std_logic;
PO : out std_logic_vector(7 downto 0));
end shift_registers_8;
architecture archi of shift_registers_8 is
signal tmp: std_logic_vector(7 downto 0);
begin
process (C)
begin
if (C'event and C='1') then
if (LEFT_RIGHT='0') then
tmp <= tmp(6 downto 0) & SI;
else
tmp <= SI & tmp(7 downto 1);
end if;
end if;
end process;
PO <= tmp;
end archi;
No comments:
Post a Comment