|
|
|
-- File: top_structuraldesign.vhd |
|
-- Generated by MyHDL 1.0dev |
|
-- Date: Fri Nov 24 20:27:59 2017 |
|
|
|
library IEEE; |
|
use IEEE.std_logic_1164.all; |
|
use IEEE.numeric_std.all; |
|
use std.textio.all; |
|
|
|
use work.pck_myhdl_10.all; |
|
|
|
entity top_structuraldesign is |
|
port( |
|
Clk : in std_logic; |
|
Reset : in std_logic; |
|
DataIn0 : in unsigned(7 downto 0); |
|
ValidIn0 : in std_logic; |
|
DataIn1 : in unsigned(7 downto 0); |
|
ValidIn1 : in std_logic; |
|
DataIn2 : in unsigned(7 downto 0); |
|
ValidIn2 : in std_logic; |
|
DataIn3 : in unsigned(7 downto 0); |
|
ValidIn3 : in std_logic; |
|
ReadyOut : in std_logic; |
|
ReadyIn0 : out std_logic; |
|
ReadyIn1 : out std_logic; |
|
ReadyIn2 : out std_logic; |
|
ReadyIn3 : out std_logic; |
|
DataOut : out unsigned(7 downto 0); |
|
ValidOut : out std_logic |
|
); |
|
end entity top_structuraldesign; |
|
|
|
architecture MyHDL of top_structuraldesign is |
|
|
|
type t_enum_buffer_state_1 is ( |
|
BUF_FREE, |
|
BUF_TAKEN |
|
); |
|
type t_enum_buffer_state_2 is ( |
|
BUF_FREE, |
|
BUF_TAKEN |
|
); |
|
type t_enum_buffer_state_3 is ( |
|
BUF_FREE, |
|
BUF_TAKEN |
|
); |
|
type t_enum_buffer_state_4 is ( |
|
BUF_FREE, |
|
BUF_TAKEN |
|
); |
|
type t_enum_buffer_state_5 is ( |
|
BUF_FREE, |
|
BUF_TAKEN |
|
); |
|
signal rtl_1_muxreadyin1 : std_logic; |
|
signal rtl_1_buforeadyin : std_logic; |
|
signal rtl_1_muxreadyin3 : std_logic; |
|
signal rtl_1_muxreadyin2 : std_logic; |
|
signal rtl_1_muxreadyin0 : std_logic; |
|
signal rtl_1_rtl_1_self_ValidOut : std_logic; |
|
signal rtl_1_rtl_1_smn : t_enum_buffer_state_1; |
|
signal rtl_1_rtl_1_ldbuf : std_logic; |
|
signal rtl_1_rtl_1_smp : t_enum_buffer_state_1; |
|
signal rtl_1_rtl_1_self_DataOut : unsigned(7 downto 0); |
|
signal rtl_1_rtl_1_self_ValidOut : std_logic; |
|
signal rtl_1_rtl_1_smn : t_enum_buffer_state_2; |
|
signal rtl_1_rtl_1_ldbuf : std_logic; |
|
signal rtl_1_rtl_1_smp : t_enum_buffer_state_2; |
|
signal rtl_1_rtl_1_self_DataOut : unsigned(7 downto 0); |
|
signal rtl_1_rtl_1_self_ValidOut : std_logic; |
|
signal rtl_1_rtl_1_smn : t_enum_buffer_state_3; |
|
signal rtl_1_rtl_1_ldbuf : std_logic; |
|
signal rtl_1_rtl_1_smp : t_enum_buffer_state_3; |
|
signal rtl_1_rtl_1_self_DataOut : unsigned(7 downto 0); |
|
signal rtl_1_rtl_1_self_ValidOut : std_logic; |
|
signal rtl_1_rtl_1_smn : t_enum_buffer_state_4; |
|
signal rtl_1_rtl_1_ldbuf : std_logic; |
|
signal rtl_1_rtl_1_smp : t_enum_buffer_state_4; |
|
signal rtl_1_rtl_1_self_DataOut : unsigned(7 downto 0); |
|
signal rtl_1_rtl_1_self_ValidOut : std_logic; |
|
signal rtl_1_rtl_1_self_DataOut : unsigned(7 downto 0); |
|
signal rtl_1_rtl_1_smn : t_enum_buffer_state_5; |
|
signal rtl_1_rtl_1_ldbuf : std_logic; |
|
signal rtl_1_rtl_1_smp : t_enum_buffer_state_5; |
|
|
|
begin |
|
|
|
-- Buffer: the combinatorial part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB : process(rtl_1_muxreadyin0, ValidIn0, rtl_1_rtl_1_smp) is |
|
begin |
|
ReadyIn0 <= '0'; |
|
rtl_1_rtl_1_self_ValidOut <= '0'; |
|
rtl_1_rtl_1_ldbuf <= '0'; |
|
case rtl_1_rtl_1_smp is |
|
when BUF_FREE => |
|
ReadyIn0 <= '1'; |
|
if bool(ValidIn0) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
when others => -- BUF_TAKEN |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
if bool(rtl_1_muxreadyin0) then |
|
ReadyIn0 <= '1'; |
|
if bool(ValidIn0) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
end if; |
|
end case; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB; |
|
|
|
-- Buffer: the synchronous part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC : process(Clk, Reset) is |
|
begin |
|
if (Reset = '1') then |
|
rtl_1_rtl_1_smp <= BUF_FREE; |
|
elsif rising_edge(Clk) then |
|
rtl_1_rtl_1_smp <= rtl_1_rtl_1_smn; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC; |
|
|
|
-- Buffer: the registered part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG : process(Clk) is |
|
begin |
|
if rising_edge(Clk) then |
|
if bool(rtl_1_rtl_1_ldbuf) then |
|
rtl_1_rtl_1_self_DataOut <= DataIn0; |
|
end if; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG; |
|
|
|
-- Buffer: the combinatorial part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB : process(rtl_1_muxreadyin1, ValidIn1, rtl_1_rtl_1_smp) is |
|
begin |
|
ReadyIn1 <= '0'; |
|
rtl_1_rtl_1_self_ValidOut <= '0'; |
|
rtl_1_rtl_1_ldbuf <= '0'; |
|
case rtl_1_rtl_1_smp is |
|
when BUF_FREE => |
|
ReadyIn1 <= '1'; |
|
if bool(ValidIn1) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
when others => -- BUF_TAKEN |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
if bool(rtl_1_muxreadyin1) then |
|
ReadyIn1 <= '1'; |
|
if bool(ValidIn1) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
end if; |
|
end case; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB; |
|
|
|
-- Buffer: the synchronous part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC : process(Clk, Reset) is |
|
begin |
|
if (Reset = '1') then |
|
rtl_1_rtl_1_smp <= BUF_FREE; |
|
elsif rising_edge(Clk) then |
|
rtl_1_rtl_1_smp <= rtl_1_rtl_1_smn; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC; |
|
|
|
-- Buffer: the registered part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG : process(Clk) is |
|
begin |
|
if rising_edge(Clk) then |
|
if bool(rtl_1_rtl_1_ldbuf) then |
|
rtl_1_rtl_1_self_DataOut <= DataIn1; |
|
end if; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG; |
|
|
|
-- Buffer: the combinatorial part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB : process(rtl_1_muxreadyin2, ValidIn2, rtl_1_rtl_1_smp) is |
|
begin |
|
ReadyIn2 <= '0'; |
|
rtl_1_rtl_1_self_ValidOut <= '0'; |
|
rtl_1_rtl_1_ldbuf <= '0'; |
|
case rtl_1_rtl_1_smp is |
|
when BUF_FREE => |
|
ReadyIn2 <= '1'; |
|
if bool(ValidIn2) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
when others => -- BUF_TAKEN |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
if bool(rtl_1_muxreadyin2) then |
|
ReadyIn2 <= '1'; |
|
if bool(ValidIn2) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
end if; |
|
end case; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB; |
|
|
|
-- Buffer: the synchronous part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC : process(Clk, Reset) is |
|
begin |
|
if (Reset = '1') then |
|
rtl_1_rtl_1_smp <= BUF_FREE; |
|
elsif rising_edge(Clk) then |
|
rtl_1_rtl_1_smp <= rtl_1_rtl_1_smn; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC; |
|
|
|
-- Buffer: the registered part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG : process(Clk) is |
|
begin |
|
if rising_edge(Clk) then |
|
if bool(rtl_1_rtl_1_ldbuf) then |
|
rtl_1_rtl_1_self_DataOut <= DataIn2; |
|
end if; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG; |
|
|
|
-- Buffer: the combinatorial part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB : process(rtl_1_muxreadyin3, ValidIn3, rtl_1_rtl_1_smp) is |
|
begin |
|
ReadyIn3 <= '0'; |
|
rtl_1_rtl_1_self_ValidOut <= '0'; |
|
rtl_1_rtl_1_ldbuf <= '0'; |
|
case rtl_1_rtl_1_smp is |
|
when BUF_FREE => |
|
ReadyIn3 <= '1'; |
|
if bool(ValidIn3) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
when others => -- BUF_TAKEN |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
if bool(rtl_1_muxreadyin3) then |
|
ReadyIn3 <= '1'; |
|
if bool(ValidIn3) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
end if; |
|
end case; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB; |
|
|
|
-- Buffer: the synchronous part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC : process(Clk, Reset) is |
|
begin |
|
if (Reset = '1') then |
|
rtl_1_rtl_1_smp <= BUF_FREE; |
|
elsif rising_edge(Clk) then |
|
rtl_1_rtl_1_smp <= rtl_1_rtl_1_smn; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC; |
|
|
|
-- Buffer: the registered part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG : process(Clk) is |
|
begin |
|
if rising_edge(Clk) then |
|
if bool(rtl_1_rtl_1_ldbuf) then |
|
rtl_1_rtl_1_self_DataOut <= DataIn3; |
|
end if; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG; |
|
|
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_MUX : process(rtl_1_buforeadyin, rtl_1_rtl_1_self_DataOut, rtl_1_rtl_1_self_ValidOut) is |
|
begin |
|
rtl_1_muxreadyin0 <= '0'; |
|
rtl_1_muxreadyin1 <= '0'; |
|
rtl_1_muxreadyin2 <= '0'; |
|
rtl_1_muxreadyin3 <= '0'; |
|
rtl_1_rtl_1_self_ValidOut <= '0'; |
|
rtl_1_rtl_1_self_DataOut <= to_unsigned(0, 8); |
|
if bool(rtl_1_rtl_1_self_ValidOut) then |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
rtl_1_rtl_1_self_DataOut <= rtl_1_rtl_1_self_DataOut; |
|
if bool(rtl_1_buforeadyin) then |
|
rtl_1_muxreadyin0 <= '1'; |
|
end if; |
|
elsif bool(rtl_1_rtl_1_self_ValidOut) then |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
rtl_1_rtl_1_self_DataOut <= rtl_1_rtl_1_self_DataOut; |
|
if bool(rtl_1_buforeadyin) then |
|
rtl_1_muxreadyin1 <= '1'; |
|
end if; |
|
elsif bool(rtl_1_rtl_1_self_ValidOut) then |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
rtl_1_rtl_1_self_DataOut <= rtl_1_rtl_1_self_DataOut; |
|
if bool(rtl_1_buforeadyin) then |
|
rtl_1_muxreadyin2 <= '1'; |
|
end if; |
|
elsif bool(rtl_1_rtl_1_self_ValidOut) then |
|
rtl_1_rtl_1_self_ValidOut <= '1'; |
|
rtl_1_rtl_1_self_DataOut <= rtl_1_rtl_1_self_DataOut; |
|
if bool(rtl_1_buforeadyin) then |
|
rtl_1_muxreadyin3 <= '1'; |
|
end if; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_MUX; |
|
|
|
-- Buffer: the combinatorial part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB : process(ReadyOut, rtl_1_rtl_1_self_ValidOut, rtl_1_rtl_1_smp) is |
|
begin |
|
rtl_1_buforeadyin <= '0'; |
|
ValidOut <= '0'; |
|
rtl_1_rtl_1_ldbuf <= '0'; |
|
case rtl_1_rtl_1_smp is |
|
when BUF_FREE => |
|
rtl_1_buforeadyin <= '1'; |
|
if bool(rtl_1_rtl_1_self_ValidOut) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
when others => -- BUF_TAKEN |
|
ValidOut <= '1'; |
|
if bool(ReadyOut) then |
|
rtl_1_buforeadyin <= '1'; |
|
if bool(rtl_1_rtl_1_self_ValidOut) then |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
rtl_1_rtl_1_ldbuf <= '1'; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_FREE; |
|
end if; |
|
else |
|
rtl_1_rtl_1_smn <= BUF_TAKEN; |
|
end if; |
|
end case; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMCOMB; |
|
|
|
-- Buffer: the synchronous part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC : process(Clk, Reset) is |
|
begin |
|
if (Reset = '1') then |
|
rtl_1_rtl_1_smp <= BUF_FREE; |
|
elsif rising_edge(Clk) then |
|
rtl_1_rtl_1_smp <= rtl_1_rtl_1_smn; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMSYNC; |
|
|
|
-- Buffer: the registered part of the state-machine |
|
TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG : process(Clk) is |
|
begin |
|
if rising_edge(Clk) then |
|
if bool(rtl_1_rtl_1_ldbuf) then |
|
DataOut <= rtl_1_rtl_1_self_DataOut; |
|
end if; |
|
end if; |
|
end process TOP_STRUCTURALDESIGN_RTL_1_RTL_1_SMREG; |
|
|
|
end architecture MyHDL; |