]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-rocon.git/blobdiff - hw/lx_rocon_pkg.vhd
Tumbl - disable GPRF forward if finish_wrb_mem_s is clock cycle cause.
[fpga/lx-cpu1/lx-rocon.git] / hw / lx_rocon_pkg.vhd
index a160aecad295ecca1a0748c8183f3e8d8b0422a0..59b79ebd04e0a8418f3c854025e3c2bee66e87ce 100644 (file)
@@ -3,87 +3,274 @@ use ieee.std_logic_1164.all;
 use ieee.std_logic_arith.all;
 use ieee.std_logic_unsigned.all;
 use ieee.numeric_std.all;
-use work.mbl_Pkg.all;
+use work.mbl_pkg.all;
+use work.util_pkg.all;
 
 -- Entities within lx_rocon
 
 package lx_rocon_pkg is
 
-       -- IRC register
-       component irc_register
+       -- Types
+       type IRC_INPUT_Type is record
+               a, b  : std_logic;
+               index : std_logic;
+               mark  : std_logic;
+       end record;
+       --
+       type IRC_COUNT_OUTPUT_Type is record
+               qcount      : std_logic_vector(7 downto 0);
+               index       : std_logic_vector(7 downto 0);
+               index_event : std_logic;
+       end record;
+       --
+       type IRC_STATE_OUTPUT_Type is record
+               ab_error     : std_logic;
+               index        : std_logic;
+               index_event  : std_logic;
+               mark         : std_logic;
+       end record;
+       --
+       type IRC_OUTPUT_Type is record
+               count       : IRC_COUNT_OUTPUT_Type;
+               state       : IRC_STATE_OUTPUT_Type;
+       end record;
+
+       -- Arrays
+       type IRC_INPUT_Array_Type         is array (natural range <>) of IRC_INPUT_Type;
+       type IRC_OUTPUT_Array_Type        is array (natural range <>) of IRC_OUTPUT_Type;
+       type IRC_COUNT_OUTPUT_Array_Type  is array (natural range <>) of IRC_COUNT_OUTPUT_Type;
+       type IRC_STATE_OUTPUT_Array_Type  is array (natural range <>) of IRC_STATE_OUTPUT_Type;
+
+       -- IRC coprocessor MAIN
+       component irc_proc_main
+       generic
+       (
+               num_irc_g  : positive := 4
+       );
        port
        (
-               clk      : in std_logic;
-               reset    : in std_logic;
-               a0, b0   : in std_logic;
-               index0   : in std_logic;
-               mark0    : in std_logic;
-               data_in  : in std_logic;
-               data_out : out std_logic_vector(31 downto 0);
-               ce       : in std_logic_vector(1 downto 0);
-               rd       : in std_logic;
-               ta       : out std_logic;
-               wr       : in std_logic
+               -- Basic input
+               clk_i             : in std_logic;
+               reset_i           : in std_logic;
+               -- Signals from IRC
+               irc_i             : in IRC_COUNT_OUTPUT_Array_Type((num_irc_g-1) downto 0);
+               -- Index resetting
+               irc_index_reset_o : out std_logic_vector((num_irc_g-1) downto 0);
+               -- BRAM access
+               mem_clk_i         : in std_logic;
+    mem_en_i          : in std_logic;
+    mem_we_i          : in std_logic_vector(3 downto 0);
+    mem_addr_i        : in std_logic_vector(ceil_log2(num_irc_g) downto 0);
+    mem_data_i        : in std_logic_vector(31 downto 0);
+    mem_data_o        : out std_logic_vector(31 downto 0)
        );
        end component;
 
-       -- BCD counter
-       component bcd
+       -- IRC coprocessor INC
+       component irc_proc_inc
        generic
        (
-               width      : integer
+               num_irc_g  : positive := 4
        );
        port
        (
-               reset      : in std_logic;
-               en         : in std_logic;
-               clk        : in std_logic;
-               value      : out std_logic_vector((width-1) downto 0)
+               -- Clock
+               clk_i   : in std_logic;
+               reset_i : in std_logic;
+               -- Output
+               op_o    : out std_logic_vector(1 downto 0);
+               axis_o  : out std_logic_vector((ceil_log2(num_irc_g)-1) downto 0)
        );
        end component;
 
+       -- IRC reader
+       component irc_reader
+       port
+       (
+               -- Inputs
+    clk_i                : in std_logic;
+    reset_i              : in std_logic;
+    irc_i                : in IRC_INPUT_Type;
+               -- State
+               reset_index_event_i  : in std_logic;
+               reset_index_event2_i : in std_logic;
+               reset_ab_error_i     : in std_logic;
+               -- Outputs
+    irc_o                : out IRC_OUTPUT_Type
+  );
+       end component;
+
        -- Quadcount
        component qcounter
        port
        (
-               clk          : in std_logic;
-               reset        : in std_logic;
-               a0, b0       : in std_logic;
-               index0       : in std_logic;
-
-               a_rise       : out std_logic;
-               a_fall       : out std_logic;
-               b_rise       : out std_logic;
-               b_fall       : out std_logic;
-
-               qcount       : out std_logic_vector (31 downto 0);
-               qcount_index : out std_logic_vector (31 downto 0);
-               ab_event     : out std_logic;
-               ab_error     : out std_logic
+               -- Inputs
+    clk_i                : in std_logic;
+    reset_i              : in std_logic;
+    a0_i, b0_i           : in std_logic;
+               index0_i             : in std_logic;
+               -- State
+               reset_index_event_i  : in std_logic;
+               reset_index_event2_i : in std_logic;
+               reset_ab_error_i     : in std_logic;
+               -- Outputs
+    qcount_o             : out std_logic_vector(7 downto 0);
+               qcount_index_o       : out std_logic_vector(7 downto 0);
+               index_o              : out std_logic;
+               index_event_o        : out std_logic;
+               index_event2_o       : out std_logic;
+    a_rise_o, a_fall_o   : out std_logic;
+               b_rise_o, b_fall_o   : out std_logic;
+               ab_event_o           : out std_logic;
+    ab_error_o           : out std_logic
+  );
+       end component;
+
+       -- D sampler (filtered, 2 cycles)
+       component dff2
+       port
+       (
+    clk_i   : in std_logic;
+    d_i     : in std_logic;
+    q_o     : out std_logic
+  );
+  end component;
+
+       -- D sampler (filtered, 3 cycles)
+       component dff3
+       port
+       (
+    clk_i   : in std_logic;
+    d_i     : in std_logic;
+    q_o     : out std_logic
+  );
+  end component;
+
+       -- CRC8
+       component crc
+  port
+       (
+               clk_i   : in std_logic;
+    reset_i : in std_logic;
+    input_i : in std_logic;
+    crc_o   : out std_logic_vector(7 downto 0)
+  );
+       end component;
+
+       -- Counter - divider
+       component cnt_div
+       generic (
+               cnt_width_g : natural := 8
+       );
+       port
+       (
+               clk_i     : in std_logic;
+               en_i      : in std_logic;
+               reset_i   : in std_logic;
+               ratio_i   : in std_logic_vector(cnt_width_g-1 downto 0);
+               q_out_o   : out std_logic
        );
        end component;
 
-       -- D sampler
-       component dff
+       -- LX Master transmitter
+       component lxmaster_transmitter
+       generic (
+               cycle_cnt_width_g : natural := 12
+       );
        port
        (
-               clk   : in std_logic;
-               reset : in std_logic;
-               d     : in std_logic;
-               q     : out std_logic
+               clk_i             : in std_logic;
+               reset_i           : in std_logic;
+               -- Transmision
+               clock_o           : out std_logic;
+               mosi_o            : out std_logic;
+               sync_o            : out std_logic;
+               -- Register
+               register_i        : in std_logic;
+               register_o        : out std_logic_vector(1 downto 0);
+               register_we_i     : in std_logic;
+               -- Cycle period
+               cycle_reg_i       : in std_logic_vector(cycle_cnt_width_g-1 downto 0);
+               cycle_reg_o       : out std_logic_vector(cycle_cnt_width_g-1 downto 0);
+               cycle_reg_we_i    : in std_logic;
+               -- Watchdog
+               wdog_i            : in std_logic;
+               wdog_we_i         : in std_logic;
+               -- BRAM access
+               mem_clk_i         : in std_logic;
+    mem_en_i          : in std_logic;
+    mem_we_i          : in std_logic_vector(1 downto 0);
+    mem_addr_i        : in std_logic_vector(8 downto 0);
+    mem_data_i        : in std_logic_vector(15 downto 0);
+    mem_data_o        : out std_logic_vector(15 downto 0)
        );
-  end component;
+       end component;
 
-       -- D sampler (filtered)
-       component dff2
+       -- LX Master receiver
+       component lxmaster_receiver
        port
        (
-               clk   : in std_logic;
-               reset : in std_logic;
-               d     : in std_logic;
-               q     : out std_logic
+               clk_i             : in std_logic;
+               reset_i           : in std_logic;
+               -- Transmision
+               clock_i           : in std_logic;
+               miso_i            : in std_logic;
+               sync_i            : in std_logic;
+               -- Receive done pulse
+               rx_done_o         : out std_logic;
+               -- Register
+               register_i        : in std_logic;
+               register_o        : out std_logic_vector(1 downto 0);
+               register_we_i     : in std_logic;
+               -- BRAM access
+               mem_clk_i         : in std_logic;
+               mem_en_i          : in std_logic;
+               mem_we_i          : in std_logic_vector(1 downto 0);
+               mem_addr_i        : in std_logic_vector(8 downto 0);
+               mem_data_i        : in std_logic_vector(15 downto 0);
+               mem_data_o        : out std_logic_vector(15 downto 0)
        );
-  end component;
+       end component;
+
+       -- LX math functions approximation
+
+       component lx_fncapprox
+       port
+       (
+               clk_i        : in std_logic;
+               reset_i      : in std_logic;
+               -- Data bus
+               address_i    : in std_logic_vector(4 downto 0);
+               next_ce_i    : in std_logic;
+               data_i       : in std_logic_vector(31 downto 0);
+               data_o       : out std_logic_vector(31 downto 0);
+               --
+               bls_i        : in std_logic_vector(3 downto 0)
+       );
+       end component;
+
+       -- Clock Cross Domain Synchronization Elastic Buffer/FIFO
+       component lx_crosdom_ser_fifo
+       generic
+       (
+               fifo_len_g   : positive := 8;
+               sync_adj_g   : integer := 0
+       );
+       port
+       (
+               -- Asynchronous clock domain interface
+               acd_clock_i  : in std_logic;
+               acd_miso_i   : in std_logic;
+               acd_sync_i   : in std_logic;
+               -- Clock
+               clk_i        : in std_logic;
+               reset_i      : in std_logic;
+               -- Output synchronous with clk_i
+               miso_o       : out std_logic;
+               sync_o       : out std_logic;
+               data_ready_o : out std_logic
+       );
+       end component;
 
        --------------------------------------------------------------------------------
        -- TUMBL
@@ -92,70 +279,76 @@ package lx_rocon_pkg is
        component lx_rocon_tumbl
        generic
        (
-               IMEM_ABITS_g : positive := 12;
-               DMEM_ABITS_g : positive := 12;
+               IMEM_ABITS_g         : positive := 11;
+               DMEM_ABITS_g         : positive := 12;
                --
-               USE_HW_MUL_g  boolean := true;
-               USE_BARREL_g  boolean := true;
-               COMPATIBILITY_MODE_g :  boolean := false
+               USE_HW_MUL_g         : boolean := true;
+               USE_BARREL_g         : boolean := true;
+               COMPATIBILITY_MODE_g : boolean := false
        );
        port
        (
                clk_i        :  in std_logic;
                rst_i        :  in std_logic;
-               halt_i       :  in std_logic;
+         halt_i       :  in std_logic;
                int_i        :  in std_logic;
                trace_i      :  in std_logic;
                trace_kick_i :  in std_logic;
-               pc_o         :  out std_logic_vector(31 downto 0);
+               -- Program counter
+               pc_o         : out std_logic_vector(31 downto 0);
+               -- Internal halt (remove with trace kick)
                halted_o     : out std_logic;
                halt_code_o  : out std_logic_vector(4 downto 0);
-               imem_clk  : in std_logic;
-    imem_en   : in std_logic;
-    imem_we   : in std_logic_vector(3 downto 0);
-    imem_addr : in std_logic_vector(8 downto 0);
-    imem_din  : in std_logic_vector(31 downto 0);
-    imem_dout : out std_logic_vector(31 downto 0);
-               dmem_clk  : in std_logic;
-    dmem_en   : in std_logic;
-    dmem_we   : in std_logic_vector(3 downto 0);
-    dmem_addr : in std_logic_vector(9 downto 0);
-    dmem_din  : in std_logic_vector(31 downto 0);
-    dmem_dout : out std_logic_vector(31 downto 0);
-               XMEMB_sel_o :  out std_logic;
-               XMEMB_i     :  in DMEMB2CORE_Type;
-               XMEMB_o     :  out CORE2DMEMB_Type;
-               bad_op_o    :  out std_logic
+               -- Internal memory (instruction)
+               imem_clk_i   : in std_logic;
+    imem_en_i    : in std_logic;
+    imem_we_i    : in std_logic_vector(3 downto 0);
+    imem_addr_i  : in std_logic_vector(8 downto 0);
+    imem_data_i  : in std_logic_vector(31 downto 0);
+    imem_data_o  : out std_logic_vector(31 downto 0);
+               -- Internal memory (data)
+               dmem_clk_i   : in std_logic;
+    dmem_en_i    : in std_logic;
+    dmem_we_i    : in std_logic_vector(3 downto 0);
+    dmem_addr_i  : in std_logic_vector(9 downto 0);
+    dmem_data_i  : in std_logic_vector(31 downto 0);
+    dmem_data_o  : out std_logic_vector(31 downto 0);
+               -- External memory bus
+               xmemb_sel_o  : out std_logic;
+               xmemb_i      : in DMEMB2CORE_Type;
+               xmemb_o      : out CORE2DMEMB_Type
        );
        end component;
 
        component lx_rocon_imem
        port
        (
-               clk_i : in std_logic;
-               cs_i  : in std_logic;
-               adr_i : in std_logic_vector(10 downto 2);
-               dat_o : out std_logic_vector(31 downto 0);
+               -- Memory wiring for Tumbl
+               clk_i  : in std_logic;
+               cs_i   : in std_logic;
+               adr_i  : in std_logic_vector(10 downto 2);
+               dat_o  : out std_logic_vector(31 downto 0);
+               -- Memory wiring for Master CPU
                clk_m  : in std_logic;
     en_m   : in std_logic;
     we_m   : in std_logic_vector(3 downto 0);
     addr_m : in std_logic_vector(8 downto 0);
     din_m  : in std_logic_vector(31 downto 0);
     dout_m : out std_logic_vector(31 downto 0)
-
        );
        end component;
 
        component lx_rocon_dmem
        port
        (
+    -- Memory wiring for Tumbl
                clk_i  : in std_logic;
                ce_i   : in std_logic;
                adr_i  : in std_logic_vector(11 downto 2);
-               wre_i  : in std_logic;
-               bsel_i : in std_logic_vector(3 downto 0);
+               bls_i  : in std_logic_vector(3 downto 0);
                dat_i  : in std_logic_vector(31 downto 0);
                dat_o  : out std_logic_vector(31 downto 0);
+               -- Memory wiring for Master CPU
                clk_m  : in std_logic;
     en_m   : in std_logic;
     we_m   : in std_logic_vector(3 downto 0);
@@ -171,6 +364,8 @@ package lx_rocon_pkg is
                clk_i        :  in std_logic;
                rst_i        :  in std_logic;
                clken_i      :  in std_logic;
+               gprf_finish_wrb_mem_i :  in std_logic;
+               --
                ID2GPRF_i    :  in ID2GPRF_Type;
                MEM_WRB_i    :  in WRB_Type;
                GPRF2EX_o    :  out GPRF2EX_Type
@@ -181,149 +376,173 @@ package lx_rocon_pkg is
        -- MEMORY BUS
        --------------------------------------------------------------------------------
 
-       -- Calibration read register
-       component calibration_read_register
+       -- Measurement register
+       component measurement_register
        generic
        (
-               id          : std_logic_vector(31 downto 0)
+               id_g   : std_logic_vector(31 downto 0) := (others => '0')
        );
        port
        (
-               data_out    : out std_logic_vector(31 downto 0);
-               rd          : in std_logic;
-               ta          : out std_logic
+               -- Clock
+               clk_i    : in std_logic;
+               -- Reset
+               reset_i  : in std_logic;
+               -- Chip enable
+               ce_i     : in std_logic;
+               -- Switch
+               switch_i : in std_logic;
+               -- Data bus
+               data_i   : in std_logic_vector(31 downto 0);
+               data_o   : out std_logic_vector(31 downto 0);
+               -- Bus signals
+               bls_i    : in std_logic_vector(3 downto 0)
        );
        end component;
 
-       -- Calibration write register
-       component calibration_write_register
+       -- IRC interconnect
+       component bus_irc
        port
        (
-               clk         : in std_logic;
-               reset       : in std_logic;
-               ce          : in std_logic;
-               data_in     : in std_logic_vector(31 downto 0);
-               data_out    : out std_logic_vector(31 downto 0);
-               rd          : in std_logic;
-               bls         : in std_logic_vector(3 downto 0);
-               ta          : out std_logic
+               clk_i        : in std_logic;
+               reset_i      : in std_logic;
+               -- Data bus
+               address_i    : in std_logic_vector(4 downto 0);
+               next_ce_i    : in std_logic;
+               data_i       : in std_logic_vector(31 downto 0);
+               data_o       : out std_logic_vector(31 downto 0);
+               --
+               bls_i        : in std_logic_vector(3 downto 0);
+               -- Signals for IRC
+               irc_i        : in IRC_INPUT_Array_Type(7 downto 0)
        );
        end component;
 
-       -- Calibration interconnect
-       component bus_calibration
+       -- Measurement interconnect
+       component bus_measurement
        port
        (
-               clk         : in std_logic;
-               reset       : in std_logic;
-               ce          : in std_logic;
-               address     : in std_logic_vector(1 downto 0);
-               data_in     : in std_logic_vector(31 downto 0);
-               data_out    : out std_logic_vector(31 downto 0);
-               rd          : in std_logic;
-               bls         : in std_logic_vector(3 downto 0);
-               ta          : out std_logic
+               -- Clock
+               clk_i     : in std_logic;
+               -- Reset
+               reset_i   : in std_logic;
+               -- Chip enable
+               ce_i      : in std_logic;
+               -- Address
+               address_i : in std_logic_vector(1 downto 0);
+               -- Data bus
+               data_i    : in std_logic_vector(31 downto 0);
+               data_o    : out std_logic_vector(31 downto 0);
+               -- Bus signals
+               bls_i     : in std_logic_vector(3 downto 0)
        );
        end component;
 
-       -- IRC interconnect
-       component bus_irc
+       -- Tumbl interconnect
+       component bus_tumbl
        port
        (
-               clk         : in std_logic;
-               reset       : in std_logic;
-
-               address     : in std_logic_vector(3 downto 0);
-               ce          : in std_logic;
-
-               data_in     : in std_logic;
-               data_out    : out std_logic_vector(31 downto 0);
-
-               rd          : in std_logic;
-               wr          : in std_logic;
-               ta          : out std_logic;
-
-               irc1_a      : in std_logic;
-               irc1_b      : in std_logic;
-               irc1_index  : in std_logic;
-               irc1_mark   : in std_logic;
-
-               irc2_a      : in std_logic;
-               irc2_b      : in std_logic;
-               irc2_index  : in std_logic;
-               irc2_mark   : in std_logic;
-
-               irc3_a      : in std_logic;
-               irc3_b      : in std_logic;
-               irc3_index  : in std_logic;
-               irc3_mark   : in std_logic;
-
-               irc4_a      : in std_logic;
-               irc4_b      : in std_logic;
-               irc4_index  : in std_logic;
-               irc4_mark   : in std_logic
-       );
+               -- Clock
+               clk_i        : in std_logic;
+               -- Chip enable
+               ce_i         : in std_logic;
+               -- Global Reset
+               reset_i      : in std_logic;
+               -- Master CPU bus for the memory
+    bls_i        : in std_logic_vector(3 downto 0);
+    address_i    : in std_logic_vector(11 downto 0);
+    data_i       : in std_logic_vector(31 downto 0);
+    data_o       : out std_logic_vector(31 downto 0);
+               -- Tumbl extrenal memory bus
+               xmemb_sel_o  : out std_logic;
+               xmemb_i      : in DMEMB2CORE_Type;
+               xmemb_o      : out CORE2DMEMB_Type
+  );
        end component;
 
-       -- BCD interconnect
-       component bus_bcd
+       -- Register on the bus
+       component bus_register is
+       generic
+       (
+               -- Reset value
+               reset_value_g : std_logic_vector(31 downto 0) := (others => '0');
+               -- Width
+               b0_g          : natural := 8;
+               b1_g          : natural := 8;
+               b2_g          : natural := 8;
+               b3_g          : natural := 8
+       );
        port
        (
-               reset      : in std_logic;
-               en         : in std_logic;
-               clk        : in std_logic;
-               data_out   : out std_logic_vector(31 downto 0);
-               rd         : in std_logic;
-               ta         : out std_logic
+               -- Clock
+               clk_i         : in std_logic;
+               -- Reset
+               reset_i       : in std_logic;
+               -- Chip enable
+               ce_i          : in std_logic;
+               -- Data bus
+               data_i        : in std_logic_vector((b0_g+b1_g+b2_g+b3_g-1) downto 0);
+               data_o        : out std_logic_vector((b0_g+b1_g+b2_g+b3_g-1) downto 0);
+               -- Bus signals
+               bls_i         : in std_logic_vector(3 downto 0)
        );
        end component;
 
-       -- Tumbl interconnect
-       component bus_tumbl
+       -- LX Master bus interconnect
+       component bus_lxmaster
        port
        (
-               clk_100m : in std_logic;
-               clk_50m  : in std_logic;
-               ce       : in std_logic;
-               reset    : in std_logic;
-    rd       : in std_logic;
-    bls      : in std_logic_vector(3 downto 0);
-    address  : in std_logic_vector(11 downto 0);
-    data_in  : in std_logic_vector(31 downto 0);
-    data_out : out std_logic_vector(31 downto 0);
-               ta       : out std_logic;
-               XMEMB_sel_o :  out std_logic;
-               XMEMB_i     :  in DMEMB2CORE_Type;
-               XMEMB_o     :  out CORE2DMEMB_Type
-  );
+               clk_i        : in std_logic;
+               reset_i      : in std_logic;
+               -- Data bus
+               address_i    : in std_logic_vector(10 downto 0);
+               next_ce_i    : in std_logic;
+               data_i       : in std_logic_vector(15 downto 0);
+               data_o       : out std_logic_vector(15 downto 0);
+               --
+               bls_i        : in std_logic_vector(1 downto 0);
+               --
+               rx_done_o    : out std_logic;
+               -- Signals for LX Master
+               clock_i      : in std_logic;
+               miso_i       : in std_logic;
+               sync_i       : in std_logic;
+               --
+               clock_o      : out std_logic;
+               mosi_o       : out std_logic;
+               sync_o       : out std_logic
+       );
        end component;
 
        --------------------------------------------------------------------------------
        -- BRAM
        --------------------------------------------------------------------------------
+       type BRAM_type is (READ_FIRST, WRITE_FIRST, NO_CHANGE);
 
        component xilinx_dualport_bram
        generic
        (
-               byte_width : positive := 8;
+               byte_width    : positive := 8;
                address_width : positive := 8;
-               we_width : positive := 4
+               we_width      : positive := 4;
+               port_a_type   : BRAM_type := READ_FIRST;
+               port_b_type   : BRAM_type := READ_FIRST
        );
        port
        (
-               clka : in std_logic;
-               rsta : in std_logic;
-               ena : in std_logic;
-               wea : in std_logic_vector((we_width-1) downto 0);
+               clka  : in std_logic;
+               rsta  : in std_logic;
+               ena   : in std_logic;
+               wea   : in std_logic_vector((we_width-1) downto 0);
                addra : in std_logic_vector((address_width-1) downto 0);
-               dina : in std_logic_vector(((byte_width*we_width)-1) downto 0);
+               dina  : in std_logic_vector(((byte_width*we_width)-1) downto 0);
                douta : out std_logic_vector(((byte_width*we_width)-1) downto 0);
-               clkb : in std_logic;
-               rstb : in std_logic;
-               enb : in std_logic;
-               web : in std_logic_vector((we_width-1) downto 0);
+               clkb  : in std_logic;
+               rstb  : in std_logic;
+               enb   : in std_logic;
+               web   : in std_logic_vector((we_width-1) downto 0);
                addrb : in std_logic_vector((address_width-1) downto 0);
-               dinb : in std_logic_vector(((byte_width*we_width)-1) downto 0);
+               dinb  : in std_logic_vector(((byte_width*we_width)-1) downto 0);
                doutb : out std_logic_vector(((byte_width*we_width)-1) downto 0)
        );
        end component;
@@ -332,5 +551,4 @@ end lx_rocon_pkg;
 
 package body lx_rocon_pkg is
 
-
 end lx_rocon_pkg;