From 7fb08f74b42fc6067c6eecd08aa428f8524ae417 Mon Sep 17 00:00:00 2001 From: Pepping <pepping> Date: Mon, 31 Oct 2016 13:19:42 +0000 Subject: [PATCH] Added extra register for rd_fifo_full bit and wr_fifo_full bit. --- libraries/io/ddr/src/vhdl/io_ddr.vhd | 41 ++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/libraries/io/ddr/src/vhdl/io_ddr.vhd b/libraries/io/ddr/src/vhdl/io_ddr.vhd index 38dbd9ac2d..7de57238ca 100644 --- a/libraries/io/ddr/src/vhdl/io_ddr.vhd +++ b/libraries/io/ddr/src/vhdl/io_ddr.vhd @@ -243,7 +243,7 @@ ARCHITECTURE str OF io_ddr IS CONSTANT c_mem_reg_adr_w : NATURAL := 2; CONSTANT c_mem_reg_dat_w : NATURAL := 32; - CONSTANT c_mem_reg_nof_data : NATURAL := 3; + CONSTANT c_mem_reg_nof_data : NATURAL := 4; CONSTANT c_mem_reg_io_ddr : t_c_mem := (c_mem_reg_rd_latency, c_mem_reg_adr_w , c_mem_reg_dat_w , c_mem_reg_nof_data, 'X'); SIGNAL ctlr_dvr_miso : t_mem_ctlr_miso; @@ -270,6 +270,11 @@ ARCHITECTURE str OF io_ddr IS -- Monitor only SIGNAL ctlr_wr_fifo_usedw : STD_LOGIC_VECTOR(ceil_log2(g_wr_fifo_depth)-1 DOWNTO 0); -- read side depth of the write FIFO SIGNAL ctlr_rd_fifo_usedw : STD_LOGIC_VECTOR(ceil_log2(g_rd_fifo_depth)-1 DOWNTO 0); -- write side depth of the read FIFO + SIGNAL reg_rd_arr : STD_LOGIC_VECTOR(c_mem_reg_io_ddr.nof_dat-1 DOWNTO 0); + SIGNAL wr_fifo_full : STD_LOGIC; + SIGNAL wr_fifo_full_reg : STD_LOGIC; + SIGNAL rd_fifo_full : STD_LOGIC; + SIGNAL rd_fifo_full_reg : STD_LOGIC; SIGNAL dp_flush_snk_in : t_dp_sosi := c_dp_sosi_rst; @@ -336,6 +341,7 @@ BEGIN snk_out => wr_siso, snk_in => wr_fifo_snk_in, + wr_ful => wr_fifo_full, wr_usedw => wr_fifo_usedw, rd_usedw => ctlr_wr_fifo_usedw, rd_emp => OPEN, @@ -415,7 +421,8 @@ BEGIN snk_out => ctlr_rd_src_in, snk_in => ctlr_rd_src_out, - + + wr_ful => rd_fifo_full, wr_usedw => ctlr_rd_fifo_usedw, rd_usedw => rd_fifo_usedw, rd_emp => OPEN, @@ -480,9 +487,33 @@ BEGIN ); ctlr_rst_out <= ctlr_rst_out_i; + + u_wr_fifo_full : ENTITY common_lib.common_switch + GENERIC MAP( + g_priority_lo => TRUE + ) + PORT MAP( + rst => ctlr_rst_in, + clk => ctlr_clk_in, + switch_high => wr_fifo_full, + switch_low => reg_rd_arr(3), + out_level => wr_fifo_full_reg + ); + + u_rd_fifo_full : ENTITY common_lib.common_switch + GENERIC MAP( + g_priority_lo => TRUE + ) + PORT MAP( + rst => ctlr_rst_in, + clk => ctlr_clk_in, + switch_high => rd_fifo_full, + switch_low => reg_rd_arr(3), + out_level => rd_fifo_full_reg + ); - - mm_reg_io_ddr <= RESIZE_UVEC(ctlr_wr_fifo_usedw, c_mem_reg_dat_w) & + mm_reg_io_ddr <= RESIZE_UVEC(rd_fifo_full_reg & wr_fifo_full_reg, c_mem_reg_dat_w) & + RESIZE_UVEC(ctlr_wr_fifo_usedw, c_mem_reg_dat_w) & RESIZE_UVEC(ctlr_rd_fifo_usedw, c_mem_reg_dat_w) & RESIZE_UVEC(ctlr_tech_mosi.wr & ctlr_tech_miso.rdval & ctlr_tech_miso.cal_fail & ctlr_tech_miso.cal_ok & ctlr_rst_out_i & ctlr_wr_flush_en & ctlr_tech_miso.waitrequest_n & ctlr_tech_miso.done, c_mem_reg_dat_w); @@ -508,7 +539,7 @@ BEGIN -- MM registers in st_clk domain reg_wr_arr => OPEN, - reg_rd_arr => OPEN, + reg_rd_arr => reg_rd_arr, in_new => '1', in_reg => mm_reg_io_ddr, out_reg => OPEN -- GitLab