|
|
IF apbi.psel(pindex) = '1' THEN
|
|
|
-- APB DMA READ --
|
|
|
CASE paddr(7 DOWNTO 2) IS
|
|
|
--0
|
|
|
WHEN "000000" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f0(31 DOWNTO 0);
|
|
|
WHEN "000001" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f0(63 DOWNTO 32);
|
|
|
WHEN "000010" => prdata(15 DOWNTO 0) <= reg_ftt.in_data_f0(79 DOWNTO 64);
|
|
|
WHEN "000011" => prdata(4 DOWNTO 0) <= reg_ftt.in_wen_f0;
|
|
|
|
|
|
WHEN "000100" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f1(31 DOWNTO 0);
|
|
|
WHEN "000101" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f1(63 DOWNTO 32);
|
|
|
WHEN "000110" => prdata(15 DOWNTO 0) <= reg_ftt.in_data_f1(79 DOWNTO 64);
|
|
|
WHEN "000111" => prdata(4 DOWNTO 0) <= reg_ftt.in_wen_f1;
|
|
|
|
|
|
WHEN "001000" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f2(31 DOWNTO 0);
|
|
|
WHEN "001001" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f2(63 DOWNTO 32);
|
|
|
WHEN "001010" => prdata(15 DOWNTO 0) <= reg_ftt.in_data_f2(79 DOWNTO 64);
|
|
|
WHEN "001011" => prdata(4 DOWNTO 0) <= reg_ftt.in_wen_f2;
|
|
|
|
|
|
WHEN "001100" => prdata(31 DOWNTO 0) <= MEM_OUT_SM_Data_out(32*1-1 DOWNTO 32*0);
|
|
|
WHEN "001101" => prdata(31 DOWNTO 0) <= MEM_OUT_SM_Data_out(32*2-1 DOWNTO 32*1);
|
|
|
|
|
|
WHEN "001110" => prdata(1 DOWNTO 0) <= reg_ftt.out_ren;
|
|
|
prdata(3 DOWNTO 2) <= MEM_OUT_SM_Full;
|
|
|
prdata(5 DOWNTO 4) <= MEM_OUT_SM_Empty;
|
|
|
WHEN OTHERS => NULL;
|
|
|
|
|
|
END CASE;
|
|
|
IF (apbi.pwrite AND apbi.penable) = '1' THEN
|
|
|
-- APB DMA WRITE --
|
|
|
CASE paddr(7 DOWNTO 2) IS
|
|
|
WHEN "000000" => reg_ftt.in_data_f0(31 DOWNTO 0) <= apbi.pwdata;
|
|
|
WHEN "000001" => reg_ftt.in_data_f0(63 DOWNTO 32) <= apbi.pwdata;
|
|
|
WHEN "000010" => reg_ftt.in_data_f0(79 DOWNTO 64) <= apbi.pwdata(15 DOWNTO 0);
|
|
|
WHEN "000011" => reg_ftt.in_wen_f0 <= apbi.pwdata(4 DOWNTO 0);
|
|
|
|
|
|
WHEN "000100" => reg_ftt.in_data_f1(31 DOWNTO 0) <= apbi.pwdata;
|
|
|
WHEN "000101" => reg_ftt.in_data_f1(63 DOWNTO 32) <= apbi.pwdata;
|
|
|
WHEN "000110" => reg_ftt.in_data_f1(79 DOWNTO 64) <= apbi.pwdata(15 DOWNTO 0);
|
|
|
WHEN "000111" => reg_ftt.in_wen_f1 <= apbi.pwdata(4 DOWNTO 0);
|
|
|
|
|
|
WHEN "001000" => reg_ftt.in_data_f2(31 DOWNTO 0) <= apbi.pwdata;
|
|
|
WHEN "001001" => reg_ftt.in_data_f2(63 DOWNTO 32) <= apbi.pwdata;
|
|
|
WHEN "001010" => reg_ftt.in_data_f2(79 DOWNTO 64) <= apbi.pwdata(15 DOWNTO 0);
|
|
|
WHEN "001011" => reg_ftt.in_wen_f2 <= apbi.pwdata(4 DOWNTO 0);
|
|
|
|
|
|
WHEN "001110" => reg_ftt.out_ren <= apbi.pwdata(1 DOWNTO 0);
|
|
|
|
|
|
WHEN OTHERS => NULL;
|
|
|
END CASE;
|
|
|
END IF;
|
|
|
END IF;
|
|
|
|