##// END OF EJS Templates
Versión con adquisición continua
Versión con adquisición continua

File last commit:

r224:225
r224:225
Show More
DtoDPRAM.vhd
656 lines | 23.8 KiB | text/x-vhdl | VhdlLexer
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 16:24:04 02/21/2017
-- Design Name:
-- Module Name: DtoDPRAM - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity DtoDPRAM is
GENERIC(
ADDR_LENGTH: INTEGER := 12;
DATAOUT_LENGTH: INTEGER := 8;
DATAIN_LENGTH: INTEGER := 40;
CHAN_NUM: INTEGER := 5;
COUNT_BYTE_SZ: INTEGER := 3;
COUNT_PACK_SZ: INTEGER := 6
);
PORT(
--Reset general
rst_bar: IN std_logic;
--Reset general
data_req: IN std_logic;
--Entrada de reloj principal
clk_main: IN std_logic;
--Entradas para indicar dato preparado por leer
--Desde los nibble to packets
ch_rdy_vector: IN std_logic_vector((CHAN_NUM-1) downto 0);
--Senhal para que indica que termino con una peticion
--Hacia los nibble to packets
ch_ack_vector: OUT std_logic_vector((CHAN_NUM-1) downto 0);
--Data IN
datach1: IN std_logic_vector((DATAIN_LENGTH-1) downto 0);
datach2: IN std_logic_vector((DATAIN_LENGTH-1) downto 0);
datach3: IN std_logic_vector((DATAIN_LENGTH-1) downto 0);
datach4: IN std_logic_vector((DATAIN_LENGTH-1) downto 0);
datach5: IN std_logic_vector((DATAIN_LENGTH-1) downto 0);
--DPRAM senhales de control, direccion y data
--Direccion de escritura/lectura
addrA: OUT std_logic_vector((ADDR_LENGTH-1) downto 0);
dataA: OUT std_logic_vector((DATAOUT_LENGTH-1) downto 0);
enA: OUT std_logic;
--Aviso de Paquete de 40 muestras solicitadas a los 5 canales
rpi_req: OUT std_logic
);
end DtoDPRAM;
architecture Behavioral of DtoDPRAM is
SIGNAL datach1_aux: std_logic_vector((DATAOUT_LENGTH-1) downto 0) := (OTHERS=>'0');
SIGNAL datach2_aux: std_logic_vector((DATAOUT_LENGTH-1) downto 0) := (OTHERS=>'0');
SIGNAL datach3_aux: std_logic_vector((DATAOUT_LENGTH-1) downto 0) := (OTHERS=>'0');
SIGNAL datach4_aux: std_logic_vector((DATAOUT_LENGTH-1) downto 0) := (OTHERS=>'0');
SIGNAL datach5_aux: std_logic_vector((DATAOUT_LENGTH-1) downto 0) := (OTHERS=>'0');
--Estados del controlador de memoria
--Incluye el estado de espera, proceso de borrado, espera de "listos" para llenado de memoria
--espera de pedido y estados para proceder a una lectura
TYPE ram_cont_states IS (idle,
------------------------------------------
pre_ch1, wr_ch1, end_wrt_ch_1,
------------------------------------------
pre_ch2, wr_ch2, end_wrt_ch_2,
------------------------------------------
pre_ch3, wr_ch3, end_wrt_ch_3,
------------------------------------------
pre_ch4, wr_ch4, end_wrt_ch_4,
------------------------------------------
pre_ch5, wr_ch5, end_wrt_ch_5
);
SIGNAL ram_contr_cur_state: ram_cont_states := idle;
SIGNAL ram_contr_next_state: ram_cont_states := idle;
----------------------------------
--Estados de la atencion a ready's
TYPE chn_cont_states IS ( idle,
checking_ch1, attending_ch1,
checking_ch2, attending_ch2,
checking_ch3, attending_ch3,
checking_ch4, attending_ch4,
checking_ch5, attending_ch5
);
SIGNAL ch_cont_cur_state: chn_cont_states := idle;
SIGNAL ch_cont_next_state: chn_cont_states := idle;
SIGNAL count_ch_byte: std_logic_vector((COUNT_BYTE_SZ-1) downto 0) := (OTHERS=>'0');
--Direcciones base por canal
CONSTANT BASE_ADDR_CH1: std_logic_vector((ADDR_LENGTH-1) downto 0) := (OTHERS=>'0');
CONSTANT BASE_ADDR_CH2: std_logic_vector((ADDR_LENGTH-1) downto 0) := "000011001000"; --200
CONSTANT BASE_ADDR_CH3: std_logic_vector((ADDR_LENGTH-1) downto 0) := "000110010000"; --400
CONSTANT BASE_ADDR_CH4: std_logic_vector((ADDR_LENGTH-1) downto 0) := "001001011000"; --600
CONSTANT BASE_ADDR_CH5: std_logic_vector((ADDR_LENGTH-1) downto 0) := "001100100000"; --800
CONSTANT BASE_BUFFER_2: std_logic_vector((ADDR_LENGTH-1) downto 0) := "010000000000"; --1024
SIGNAL sel_buf: std_logic := '0';
SIGNAL count_pack: std_logic_vector((COUNT_PACK_SZ-1) downto 0) := (OTHERS => '0');
begin
---------------------
--Estados para atencion de canales
ch_cont_cambio_estados: PROCESS(clk_main)
BEGIN
IF (rising_edge(clk_main)) THEN
IF(rst_bar = '0') THEN
ch_cont_cur_state <= idle;
ELSE
ch_cont_cur_state <= ch_cont_next_state;
END IF;
END IF;
END PROCESS;
ch_salidas_estados: PROCESS(ch_cont_cur_state,
ch_rdy_vector,
ram_contr_cur_state
)
BEGIN
CASE ch_cont_cur_state IS
WHEN idle =>
ch_cont_next_state <= checking_ch1;
WHEN checking_ch1 =>
IF(ch_rdy_vector(0) = '1') THEN
ch_cont_next_state <= attending_ch1;
ELSE
ch_cont_next_state <= checking_ch2;
END IF;
WHEN attending_ch1 =>
IF(ram_contr_cur_state = end_wrt_ch_1) THEN
ch_cont_next_state <= checking_ch2;
ELSE
ch_cont_next_state <= attending_ch1;
END IF;
WHEN checking_ch2 =>
IF(ch_rdy_vector(1) = '1') THEN
ch_cont_next_state <= attending_ch2;
ELSE
ch_cont_next_state <= checking_ch3;
END IF;
WHEN attending_ch2 =>
IF(ram_contr_cur_state = end_wrt_ch_2) THEN
ch_cont_next_state <= checking_ch3;
ELSE
ch_cont_next_state <= attending_ch2;
END IF;
WHEN checking_ch3 =>
IF(ch_rdy_vector(2) = '1') THEN
ch_cont_next_state <= attending_ch3;
ELSE
ch_cont_next_state <= checking_ch4;
END IF;
WHEN attending_ch3 =>
IF(ram_contr_cur_state = end_wrt_ch_3) THEN
ch_cont_next_state <= checking_ch4;
ELSE
ch_cont_next_state <= attending_ch3;
END IF;
WHEN checking_ch4 =>
IF(ch_rdy_vector(3) = '1') THEN
ch_cont_next_state <= attending_ch4;
ELSE
ch_cont_next_state <= checking_ch5;
END IF;
WHEN attending_ch4 =>
IF(ram_contr_cur_state = end_wrt_ch_4) THEN
ch_cont_next_state <= checking_ch5;
ELSE
ch_cont_next_state <= attending_ch4;
END IF;
WHEN checking_ch5 =>
IF(ch_rdy_vector(4) = '1') THEN
ch_cont_next_state <= attending_ch5;
ELSE
ch_cont_next_state <= checking_ch1;
END IF;
WHEN attending_ch5 =>
IF(ram_contr_cur_state = end_wrt_ch_5) THEN
ch_cont_next_state <= checking_ch1;
ELSE
ch_cont_next_state <= attending_ch5;
END IF;
WHEN OTHERS =>
ch_cont_next_state <= idle;
END CASE;
END PROCESS;
--------------------------------------------------
--Estados de m�quina principal para control de RAM
ctrl_cambio_estados: PROCESS(clk_main)
BEGIN
IF (rising_edge(clk_main)) THEN
IF(rst_bar = '0') THEN
ram_contr_cur_state <= idle;
ELSE
ram_contr_cur_state <= ram_contr_next_state;
END IF;
END IF;
END PROCESS;
--Revisar si los estados de set, act y proc se pueden unificar. Al parecer los de set s�.
ctrl_salidas_estados: PROCESS(ram_contr_cur_state, ch_cont_cur_state,
count_pack, count_ch_byte, sel_buf,
datach1_aux, datach2_aux, datach3_aux, datach4_aux, datach5_aux
)
BEGIN
CASE ram_contr_cur_state IS
WHEN idle =>
enA <= '0';
dataA <= (OTHERS=>'0');
addrA <= (OTHERS=>'0');
ch_ack_vector <= (OTHERS=>'0');
IF (ch_cont_cur_state=attending_ch1) THEN
ram_contr_next_state <= pre_ch1;
ELSIF (ch_cont_cur_state=attending_ch2) THEN
ram_contr_next_state <= pre_ch2;
ELSIF (ch_cont_cur_state=attending_ch3) THEN
ram_contr_next_state <= pre_ch3;
ELSIF (ch_cont_cur_state=attending_ch4) THEN
ram_contr_next_state <= pre_ch4;
ELSIF (ch_cont_cur_state=attending_ch5) THEN
ram_contr_next_state <= pre_ch5;
ELSE
ram_contr_next_state <= idle;
END IF;
WHEN pre_ch1 =>
enA <= '0';
dataA <= datach1_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH1) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH1) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= wr_ch1;
WHEN wr_ch1 =>
enA <= '1';
dataA <= datach1_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH1) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH1) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= end_wrt_ch_1;
WHEN end_wrt_ch_1 =>
enA <= '0';
dataA <= datach1_aux;
ch_ack_vector <= "00001";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH1) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH1) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
IF (count_ch_byte = "100") THEN
ram_contr_next_state <= idle;
ELSE
ram_contr_next_state <= pre_ch1;
END IF;
---------------------------------------
WHEN pre_ch2 =>
enA <= '0';
dataA <= datach2_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH2) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= wr_ch2;
WHEN wr_ch2 =>
enA <= '1';
dataA <= datach2_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH2) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= end_wrt_ch_2;
WHEN end_wrt_ch_2 =>
enA <= '0';
dataA <= datach2_aux;
ch_ack_vector <= "00010";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH2) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
IF (count_ch_byte = "100") THEN
ram_contr_next_state <= idle;
ELSE
ram_contr_next_state <= pre_ch2;
END IF;
------------------------------
WHEN pre_ch3 =>
enA <= '0';
dataA <= datach3_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH3) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH3) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= wr_ch3;
WHEN wr_ch3 =>
enA <= '1';
dataA <= datach3_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH3) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH3) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= end_wrt_ch_3;
WHEN end_wrt_ch_3 =>
enA <= '0';
dataA <= datach3_aux;
ch_ack_vector <= "00100";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH3) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH3) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
IF (count_ch_byte = "100") THEN
ram_contr_next_state <= idle;
ELSE
ram_contr_next_state <= pre_ch3;
END IF;
--------------------------------------------------
WHEN pre_ch4 =>
enA <= '0';
dataA <= datach4_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH4) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH4) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= wr_ch4;
WHEN wr_ch4 =>
enA <= '1';
dataA <= datach4_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH4) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH4) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= end_wrt_ch_4;
WHEN end_wrt_ch_4 =>
enA <= '0';
dataA <= datach4_aux;
ch_ack_vector <= "01000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH4) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH4) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
IF (count_ch_byte = "100") THEN
ram_contr_next_state <= idle;
ELSE
ram_contr_next_state <= pre_ch4;
END IF;
------------------------------------------
WHEN pre_ch5 =>
enA <= '0';
dataA <= datach5_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH5) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH5) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= wr_ch5;
WHEN wr_ch5 =>
enA <= '1';
dataA <= datach5_aux;
ch_ack_vector <= "00000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH5) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH5) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
ram_contr_next_state <= end_wrt_ch_5;
WHEN end_wrt_ch_5 =>
enA <= '0';
dataA <= datach5_aux;
ch_ack_vector <= "10000";
IF ( sel_buf = '1' ) THEN
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH5) + unsigned(BASE_BUFFER_2) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
ELSE
addrA <= std_logic_vector(unsigned(BASE_ADDR_CH5) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_pack) + unsigned(count_ch_byte));
END IF;
IF (count_ch_byte = "100") THEN
ram_contr_next_state <= idle;
ELSE
ram_contr_next_state <= pre_ch5;
END IF;
WHEN OTHERS =>
enA <= '0';
dataA <= (OTHERS=>'0');
addrA <= (OTHERS=>'0');
ch_ack_vector <= (OTHERS=>'0');
ram_contr_next_state <= idle;
END CASE;
END PROCESS;
--Contador de paquetes
wr_bytes_dpram: PROCESS(clk_main)
BEGIN
IF(rising_edge(clk_main)) THEN
IF (rst_bar = '0') THEN
--count_req <= (OTHERS => '0');
count_pack <= (OTHERS => '1');
ELSE
--IF (data_req = '1') THEN
-- count_req <= std_logic_vector(unsigned(count_req) + 1);
--END IF;
IF (data_req = '1') THEN
IF (count_pack = "100111") THEN
count_pack <= (OTHERS => '0');
sel_buf <= NOT(sel_buf);
rpi_req <= '1';
ELSE
count_pack <= std_logic_vector(unsigned(count_pack) + 1);
rpi_req <= '0';
END IF;
ELSE
rpi_req <= '0';
END IF;
END IF;
END IF;
END PROCESS;
--Contador de bytes
count_ch_bytes: PROCESS(clk_main)
BEGIN
IF(rising_edge(clk_main)) THEN
IF (rst_bar = '0') THEN
count_ch_byte <= (OTHERS => '0');
ELSE
IF (ram_contr_cur_state = idle) THEN
count_ch_byte <= (OTHERS => '0');
ELSE
IF (ram_contr_cur_state = end_wrt_ch_1 OR
ram_contr_cur_state = end_wrt_ch_2 OR
ram_contr_cur_state = end_wrt_ch_3 OR
ram_contr_cur_state = end_wrt_ch_4 OR
ram_contr_cur_state = end_wrt_ch_5
) THEN
count_ch_byte <= std_logic_vector(unsigned(count_ch_byte) + 1);
END IF;
END IF;
END IF;
END IF;
END PROCESS;
-----------------------------------------
datach1_bytes: PROCESS(clk_main)
BEGIN
IF (rising_edge(clk_main))THEN
IF (rst_bar = '0') THEN
datach1_aux <= (OTHERS =>'0');
ELSE
CASE count_ch_byte IS
WHEN "000" =>
datach1_aux <= datach1(39 downto 32);
WHEN "001" =>
datach1_aux <= datach1(31 downto 24);
WHEN "010" =>
datach1_aux <= datach1(23 downto 16);
WHEN "011" =>
datach1_aux <= datach1(15 downto 8);
WHEN "100" =>
datach1_aux <= datach1(7 downto 0);
WHEN OTHERS =>
datach1_aux <= (OTHERS =>'0');
END CASE;
END IF;
END IF;
END PROCESS;
datach2_bytes: PROCESS(clk_main)
BEGIN
IF (rising_edge(clk_main))THEN
IF (rst_bar = '0') THEN
datach2_aux <= (OTHERS =>'0');
ELSE
CASE count_ch_byte IS
WHEN "000" =>
datach2_aux <= datach2(39 downto 32);
WHEN "001" =>
datach2_aux <= datach2(31 downto 24);
WHEN "010" =>
datach2_aux <= datach2(23 downto 16);
WHEN "011" =>
datach2_aux <= datach2(15 downto 8);
WHEN "100" =>
datach2_aux <= datach2(7 downto 0);
WHEN OTHERS =>
datach2_aux <= (OTHERS =>'0');
END CASE;
END IF;
END IF;
END PROCESS;
datach3_bytes: PROCESS(clk_main)
BEGIN
IF (rising_edge(clk_main))THEN
IF (rst_bar = '0') THEN
datach3_aux <= (OTHERS =>'0');
ELSE
CASE count_ch_byte IS
WHEN "000" =>
datach3_aux <= datach3(39 downto 32);
WHEN "001" =>
datach3_aux <= datach3(31 downto 24);
WHEN "010" =>
datach3_aux <= datach3(23 downto 16);
WHEN "011" =>
datach3_aux <= datach3(15 downto 8);
WHEN "100" =>
datach3_aux <= datach3(7 downto 0);
WHEN OTHERS =>
datach3_aux <= (OTHERS =>'0');
END CASE;
END IF;
END IF;
END PROCESS;
datach4_bytes: PROCESS(clk_main)
BEGIN
IF (rising_edge(clk_main))THEN
IF (rst_bar = '0') THEN
datach4_aux <= (OTHERS =>'0');
ELSE
CASE count_ch_byte IS
WHEN "000" =>
datach4_aux <= datach4(39 downto 32);
WHEN "001" =>
datach4_aux <= datach4(31 downto 24);
WHEN "010" =>
datach4_aux <= datach4(23 downto 16);
WHEN "011" =>
datach4_aux <= datach4(15 downto 8);
WHEN "100" =>
datach4_aux <= datach4(7 downto 0);
WHEN OTHERS =>
datach4_aux <= (OTHERS =>'0');
END CASE;
END IF;
END IF;
END PROCESS;
datach5_bytes: PROCESS(clk_main)
BEGIN
IF (rising_edge(clk_main))THEN
IF (rst_bar = '0') THEN
datach5_aux <= (OTHERS =>'0');
ELSE
CASE count_ch_byte IS
WHEN "000" =>
datach5_aux <= datach5(39 downto 32);
WHEN "001" =>
datach5_aux <= datach5(31 downto 24);
WHEN "010" =>
datach5_aux <= datach5(23 downto 16);
WHEN "011" =>
datach5_aux <= datach5(15 downto 8);
WHEN "100" =>
datach5_aux <= datach5(7 downto 0);
WHEN OTHERS =>
datach5_aux <= (OTHERS =>'0');
END CASE;
END IF;
END IF;
END PROCESS;
end Behavioral;