diff --git a/designs/LFR-em-WaveFormPicker/leon3mp.vhd b/designs/LFR-em-WaveFormPicker/leon3mp.vhd --- a/designs/LFR-em-WaveFormPicker/leon3mp.vhd +++ b/designs/LFR-em-WaveFormPicker/leon3mp.vhd @@ -499,7 +499,7 @@ BEGIN pirq_ms => 6, pirq_wfp => 14, hindex => 2, - top_lfr_version => X"00000008") + top_lfr_version => X"00000009") PORT MAP ( clk => clkm, rstn => rstn, diff --git a/designs/MINI-LFR_waveformPicker/MINI_LFR_top.vhd b/designs/MINI-LFR_waveformPicker/MINI_LFR_top.vhd --- a/designs/MINI-LFR_waveformPicker/MINI_LFR_top.vhd +++ b/designs/MINI-LFR_waveformPicker/MINI_LFR_top.vhd @@ -140,6 +140,8 @@ ARCHITECTURE beh OF MINI_LFR_top IS SIGNAL ahbo_s_ext : soc_ahb_slv_out_vector(NB_AHB_SLAVE-1+3 DOWNTO 3):= (OTHERS => ahbs_none); SIGNAL ahbi_m_ext : AHB_Mst_In_Type; SIGNAL ahbo_m_ext : soc_ahb_mst_out_vector(NB_AHB_MASTER-1+1 DOWNTO 1):= (OTHERS => ahbm_none); + -- + SIGNAL IO_s : STD_LOGIC_VECTOR(11 DOWNTO 0); BEGIN -- beh @@ -176,7 +178,10 @@ BEGIN -- beh IO5 <= '0'; IO6 <= '0'; IO7 <= '0'; - IO8 <= '1'; + IO8 <= '0'; + IO9 <= '0'; + IO10 <= '0'; + IO11 <= '0'; ELSIF clk_25'event AND clk_25 = '1' THEN -- rising clock edge LED0 <= '0'; LED1 <= '1'; @@ -188,7 +193,10 @@ BEGIN -- beh IO5 <= ADC_SDO(3) OR ADC_SDO(4); IO6 <= ADC_SDO(5) OR ADC_SDO(6) OR ADC_SDO(7); IO7 <= BP1 OR nDTR2 OR nRTS2 OR nRTS1; - IO8 <= '0'; + IO8 <= IO_s(8); + IO9 <= IO_s(9); + IO10 <= IO_s(10); + IO11 <= IO_s(11); END IF; END PROCESS; @@ -234,9 +242,10 @@ BEGIN -- beh ahbmo => ahbo_m_ext(1), apbi => apbi_ext, apbo => apbo_ext(5), - out_ren => IO11, - out_send => IO10, - out_done => IO9 + out_ren => IO_s(11), + out_send => IO_s(10), + out_done => IO_s(9), + out_dmaout_okay => IO_s(8) ); ----------------------------------------------------------------------------- diff --git a/lib/lpp/lpp_debug_lfr/lpp_debug_dma_singleOrBurst.vhd b/lib/lpp/lpp_debug_lfr/lpp_debug_dma_singleOrBurst.vhd --- a/lib/lpp/lpp_debug_lfr/lpp_debug_dma_singleOrBurst.vhd +++ b/lib/lpp/lpp_debug_lfr/lpp_debug_dma_singleOrBurst.vhd @@ -63,7 +63,8 @@ ENTITY lpp_debug_dma_singleOrBurst IS -- observation SIGNAL out_ren : OUT STD_LOGIC; out_send : OUT STD_LOGIC; - out_done : OUT STD_LOGIC + out_done : OUT STD_LOGIC; + out_dmaout_okay : OUT STD_LOGIC ); END; @@ -117,7 +118,8 @@ BEGIN done => done, -- out ren => ren, -- out address => address, - data => data); + data => data, + debug_dmaout_okay => out_dmaout_okay); run <= reg.run; diff --git a/lib/lpp/lpp_debug_lfr/lpp_debug_lfr_pkg.vhd b/lib/lpp/lpp_debug_lfr/lpp_debug_lfr_pkg.vhd --- a/lib/lpp/lpp_debug_lfr/lpp_debug_lfr_pkg.vhd +++ b/lib/lpp/lpp_debug_lfr/lpp_debug_lfr_pkg.vhd @@ -43,7 +43,9 @@ PACKAGE lpp_debug_lfr_pkg IS apbo : OUT apb_slv_out_type; out_ren : OUT STD_LOGIC; out_send : OUT STD_LOGIC; - out_done : OUT STD_LOGIC ); + out_done : OUT STD_LOGIC; + out_dmaout_okay : OUT STD_LOGIC + ); END COMPONENT; END; diff --git a/lib/lpp/lpp_dma/lpp_dma_pkg.vhd b/lib/lpp/lpp_dma/lpp_dma_pkg.vhd --- a/lib/lpp/lpp_dma/lpp_dma_pkg.vhd +++ b/lib/lpp/lpp_dma/lpp_dma_pkg.vhd @@ -213,7 +213,8 @@ PACKAGE lpp_dma_pkg IS done : OUT STD_LOGIC; ren : OUT STD_LOGIC; address : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - data : IN STD_LOGIC_VECTOR(31 DOWNTO 0)); + data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + debug_dmaout_okay : OUT STD_LOGIC); END COMPONENT; END; diff --git a/lib/lpp/lpp_dma/lpp_dma_send_16word.vhd b/lib/lpp/lpp_dma/lpp_dma_send_16word.vhd --- a/lib/lpp/lpp_dma/lpp_dma_send_16word.vhd +++ b/lib/lpp/lpp_dma/lpp_dma_send_16word.vhd @@ -54,6 +54,7 @@ ENTITY lpp_dma_send_16word IS -- send_ok : OUT STD_LOGIC; send_ko : OUT STD_LOGIC + ); END lpp_dma_send_16word; @@ -167,8 +168,14 @@ BEGIN -- beh DMAIn.Data <= data; - ren <= '0' WHEN DMAOut.OKAY = '1' AND state = SEND_DATA ELSE + ren <= '0' WHEN DMAOut.OKAY = '1' ELSE --AND (state = SEND_DATA OR state = WAIT_LAST_READY) ELSE '1'; + + -- \/ JC - 11/12/2013 \/ + --ren <= '0' WHEN DMAOut.OKAY = '1' AND state = SEND_DATA ELSE + -- '1'; + -- /\ JC - 11/12/2013 /\ + -- \/ JC - 10/12/2013 \/ --ren <= '0' WHEN DMAOut.OKAY = '1' AND state = SEND_DATA ELSE -- '0' WHEN state = REQUEST_BUS AND DMAOut.Grant = '1' ELSE diff --git a/lib/lpp/lpp_dma/lpp_dma_singleOrBurst.vhd b/lib/lpp/lpp_dma/lpp_dma_singleOrBurst.vhd --- a/lib/lpp/lpp_dma/lpp_dma_singleOrBurst.vhd +++ b/lib/lpp/lpp_dma/lpp_dma_singleOrBurst.vhd @@ -62,7 +62,10 @@ ENTITY lpp_dma_singleOrBurst IS done : OUT STD_LOGIC; ren : OUT STD_LOGIC; address : IN STD_LOGIC_VECTOR(31 DOWNTO 0); - data : IN STD_LOGIC_VECTOR(31 DOWNTO 0) + data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); + -- + debug_dmaout_okay : OUT STD_LOGIC + ); END; @@ -94,6 +97,9 @@ ARCHITECTURE Behavioral OF lpp_dma_singl SIGNAL data_2_halfword : STD_LOGIC_VECTOR(31 DOWNTO 0); BEGIN + debug_dmaout_okay <= DMAOut.OKAY; + + ----------------------------------------------------------------------------- -- DMA to AHB interface DMA2AHB_1 : DMA2AHB @@ -132,7 +138,10 @@ BEGIN --ren <= burst_ren WHEN valid_burst = '1' ELSE -- NOT single_send_ok; - ren <= burst_ren AND single_ren; + --ren <= burst_ren AND single_ren; + + ren <= '0' WHEN DMAOut.OKAY = '1' ELSE + '1'; ----------------------------------------------------------------------------- -- SEND 1 word by DMA