|
|
IF apbi.psel(pindex) = '1' THEN
|
|
|
-- APB DMA READ --
|
|
|
CASE paddr(7 DOWNTO 2) IS
|
|
|
--0
|
|
|
0x00 WHEN "000000" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f0(31 DOWNTO 0);
|
|
|
0x04 WHEN "000001" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f0(63 DOWNTO 32);
|
|
|
0x08 WHEN "000010" => prdata(15 DOWNTO 0) <= reg_ftt.in_data_f0(79 DOWNTO 64);
|
|
|
0XC0 WHEN "000011" => prdata(4 DOWNTO 0) <= reg_ftt.in_wen_f0;
|
|
|
|
|
|
0x10 WHEN "000100" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f1(31 DOWNTO 0);
|
|
|
0x14 WHEN "000101" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f1(63 DOWNTO 32);
|
|
|
0x18 WHEN "000110" => prdata(15 DOWNTO 0) <= reg_ftt.in_data_f1(79 DOWNTO 64);
|
|
|
0x1C WHEN "000111" => prdata(4 DOWNTO 0) <= reg_ftt.in_wen_f1;
|
|
|
|
|
|
0x20 WHEN "001000" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f2(31 DOWNTO 0);
|
|
|
0x24 WHEN "001001" => prdata(31 DOWNTO 0) <= reg_ftt.in_data_f2(63 DOWNTO 32);
|
|
|
0x28 WHEN "001010" => prdata(15 DOWNTO 0) <= reg_ftt.in_data_f2(79 DOWNTO 64);
|
|
|
0x2C WHEN "001011" => prdata(4 DOWNTO 0) <= reg_ftt.in_wen_f2;
|
|
|
|
|
|
0x30 WHEN "001100" => prdata(31 DOWNTO 0) <= MEM_OUT_SM_Data_out(32*1-1 DOWNTO 32*0);
|
|
|
0x34 WHEN "001101" => prdata(31 DOWNTO 0) <= MEM_OUT_SM_Data_out(32*2-1 DOWNTO 32*1);
|
|
|
|
|
|
0x38 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
|
|
|
0x00 WHEN "000000" => reg_ftt.in_data_f0(31 DOWNTO 0) <= apbi.pwdata;
|
|
|
0x04 WHEN "000001" => reg_ftt.in_data_f0(63 DOWNTO 32) <= apbi.pwdata;
|
|
|
0x08 WHEN "000010" => reg_ftt.in_data_f0(79 DOWNTO 64) <= apbi.pwdata(15 DOWNTO 0);
|
|
|
0x0c WHEN "000011" => reg_ftt.in_wen_f0 <= apbi.pwdata(4 DOWNTO 0);
|
|
|
|
|
|
0x10 WHEN "000100" => reg_ftt.in_data_f1(31 DOWNTO 0) <= apbi.pwdata;
|
|
|
0x14 WHEN "000101" => reg_ftt.in_data_f1(63 DOWNTO 32) <= apbi.pwdata;
|
|
|
0x18 WHEN "000110" => reg_ftt.in_data_f1(79 DOWNTO 64) <= apbi.pwdata(15 DOWNTO 0);
|
|
|
0x1c WHEN "000111" => reg_ftt.in_wen_f1 <= apbi.pwdata(4 DOWNTO 0);
|
|
|
|
|
|
0x20 WHEN "001000" => reg_ftt.in_data_f2(31 DOWNTO 0) <= apbi.pwdata;
|
|
|
0x24 WHEN "001001" => reg_ftt.in_data_f2(63 DOWNTO 32) <= apbi.pwdata;
|
|
|
0x28 WHEN "001010" => reg_ftt.in_data_f2(79 DOWNTO 64) <= apbi.pwdata(15 DOWNTO 0);
|
|
|
0x2C WHEN "001011" => reg_ftt.in_wen_f2 <= apbi.pwdata(4 DOWNTO 0);
|
|
|
|
|
|
0x38 WHEN "001110" => reg_ftt.out_ren <= apbi.pwdata(1 DOWNTO 0);
|
|
|
|
|
|
WHEN OTHERS => NULL;
|
|
|
END CASE;
|
|
|
END IF;
|
|
|
END IF;
|
|
|
|