diff --git a/boards/uniboard1/designs/unb1_ddr3/src/vhdl/node_unb1_ddr3.vhd b/boards/uniboard1/designs/unb1_ddr3/src/vhdl/node_unb1_ddr3.vhd index b1c3e7b0b880e52e3392f2de050707eeeef07574..c0fe619e0e3561136477d4c63f9c51eacd945247 100644 --- a/boards/uniboard1/designs/unb1_ddr3/src/vhdl/node_unb1_ddr3.vhd +++ b/boards/uniboard1/designs/unb1_ddr3/src/vhdl/node_unb1_ddr3.vhd @@ -95,7 +95,7 @@ ARCHITECTURE str OF node_unb1_ddr3 IS CONSTANT c_data_w : NATURAL := g_st_dat_w; CONSTANT c_wr_fifo_depth : NATURAL := 128; -- >=16 , defined at DDR side of the FIFO. - CONSTANT c_rd_fifo_depth : NATURAL := 256; -- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO. + CONSTANT c_rd_fifo_depth : NATURAL := 1024; -- >=16 AND >g_tech_ddr.maxburstsize, defined at DDR side of the FIFO. CONSTANT c_use_bg : BOOLEAN := FALSE; CONSTANT c_use_tx_seq : BOOLEAN := TRUE; @@ -114,27 +114,34 @@ ARCHITECTURE str OF node_unb1_ddr3 IS BEGIN - ------------------------------------------------------------------------------ - -- DDR3 MODULE 0, MB_I - ------------------------------------------------------------------------------ - u_mms_ddr3 : ENTITY io_ddr_lib.mms_io_ddr + u_mms_io_ddr_diag : ENTITY io_ddr_lib.mms_io_ddr_diag GENERIC MAP( - g_technology => g_technology, --: NATURAL := c_tech_select_default; - g_tech_ddr => g_tech_ddr, --: t_c_tech_ddr; - g_cross_domain_dvr_ctlr => FALSE, --: BOOLEAN := TRUE; - g_wr_data_w => c_wr_data_w, - g_wr_fifo_depth => c_wr_fifo_depth, - g_rd_fifo_depth => c_rd_fifo_depth, - g_rd_data_w => c_rd_data_w, - g_wr_flush_mode => "VAL", - g_wr_flush_use_channel => FALSE, - g_wr_flush_start_channel => 0, - g_wr_flush_nof_channels => 1 + -- System + g_technology => g_technology, + g_dp_data_w => g_st_dat_w, + g_dp_seq_dat_w => c_seq_dat_w, + g_dp_fifo_depth => c_rd_fifo_depth, + -- IO_DDR + g_io_tech_ddr => g_tech_ddr, + -- DIAG data buffer + g_db_use_db => c_use_db, + g_db_buf_nof_data => c_buf_nof_data ) - PORT MAP ( + PORT MAP( + --------------------------------------------------------------------------- + -- System + --------------------------------------------------------------------------- + mm_rst => mm_rst, + mm_clk => mm_clk, + dp_rst => dp_clk, + dp_clk => dp_rst, + + --------------------------------------------------------------------------- + -- IO_DDR + --------------------------------------------------------------------------- -- DDR reference clock - ctlr_ref_clk => ddr_ref_clk, - ctlr_ref_rst => ddr_ref_rst, + ctlr_ref_clk => ddr_ref_clk, + ctlr_ref_rst => ddr_ref_rst, -- DDR controller clock domain ctlr_clk_out => ddr_out_clk, @@ -143,121 +150,42 @@ BEGIN ctlr_clk_in => dp_clk, ctlr_rst_in => dp_rst, - -- MM clock + reset - mm_rst => mm_rst, - mm_clk => mm_clk, - -- MM interface reg_io_ddr_mosi => reg_io_ddr_mosi, reg_io_ddr_miso => reg_io_ddr_miso, - dvr_clk => dp_clk, - dvr_rst => dp_rst, - - -- Write FIFO clock domain - wr_clk => dp_clk, - wr_rst => dp_rst, - + -- Write / read FIFO status for monitoring purposes (in dp_clk domain) wr_fifo_usedw => OPEN, - wr_sosi => out_sosi_arr(0), - wr_siso => out_siso_arr(0), - - -- Read FIFO clock domain - rd_clk => dp_clk, - rd_rst => dp_rst, - rd_fifo_usedw => OPEN, - rd_sosi => in_sosi_arr(0), - rd_siso => in_siso_arr(0), - + + -- DDR3 pass on termination control from master to slave controller term_ctrl_out => OPEN, term_ctrl_in => OPEN, - + -- DDR3 PHY external interface phy3_in => MB_I_in, phy3_io => MB_I_io, - phy3_ou => MB_I_ou - ); + phy3_ou => MB_I_ou, - ----------------------------------------------------------------------------- - -- Block Generator - ----------------------------------------------------------------------------- - u_mms_diag_block_gen: ENTITY diag_lib.mms_diag_block_gen - GENERIC MAP( - -- Generate configurations - g_use_usr_input => FALSE, - g_use_bg => c_use_bg, - g_use_tx_seq => c_use_tx_seq, - -- General - g_nof_streams => c_nof_streams, - -- BG settings - g_use_bg_buffer_ram => TRUE, - g_buf_dat_w => 32, - g_buf_addr_w => 7, -- Waveform buffer size 2**g_buf_addr_w nof samples - g_file_index_arr => array_init(0, 128, 1), -- default use the instance index as file index 0, 1, 2, 3, 4 ... - g_file_name_prefix => "data/bf_in_data", -- Path to the hex files that contain the initial data for the memories. The sequence number and ".hex" are added within the entity. - g_diag_block_gen_rst => c_diag_block_gen_rst, - -- User input multiplexer option - g_usr_bypass_xonoff => FALSE, - -- Tx_seq - g_seq_dat_w => c_seq_dat_w - ) - PORT MAP( - -- System - mm_rst => mm_rst, -- reset synchronous with mm_clk - mm_clk => mm_clk, -- memory-mapped bus clock - dp_rst => dp_rst, -- reset synchronous with st_clk - dp_clk => dp_clk, -- streaming clock domain clock - en_sync => en_sync, -- block generator enable sync pulse in ST dp_clk domain + --------------------------------------------------------------------------- + -- DIAG Tx seq + --------------------------------------------------------------------------- -- MM interface - reg_bg_ctrl_mosi => reg_diag_bg_ctrl_mosi, -- BG control register (one for all streams) - reg_bg_ctrl_miso => reg_diag_bg_ctrl_miso, - ram_bg_data_mosi => ram_diag_bg_data_mosi, -- BG buffer RAM (one per stream) - ram_bg_data_miso => ram_diag_bg_data_miso, - reg_tx_seq_mosi => reg_diag_tx_seq_mosi, -- Tx seq control (one per stream because c_reg_tx_seq_broadcast=FALSE) - reg_tx_seq_miso => reg_diag_tx_seq_miso, - -- ST interface - out_siso_arr => out_siso_arr, -- Default xon='1' - out_sosi_arr => out_sosi_arr -- Output SOSI that contains the waveform data - ); + reg_tx_seq_mosi => reg_diag_tx_seq_mosi, + reg_tx_seq_miso => reg_diag_tx_seq_miso, - ----------------------------------------------------------------------------- - -- Data Buffer - ----------------------------------------------------------------------------- - u_mms_diag_data_buffer: ENTITY diag_lib.mms_diag_data_buffer - GENERIC MAP( - -- Generate configurations - g_use_db => c_use_db, - g_use_rx_seq => c_use_rx_seq, - -- General - g_nof_streams => c_nof_streams, - -- DB settings - g_data_w => c_data_w, - g_buf_nof_data => c_buf_nof_data, - -- Rx_seq - g_seq_dat_w => c_seq_dat_w - ) - PORT MAP( - -- System - mm_rst => mm_rst, - mm_clk => mm_clk, - dp_rst => dp_rst, - dp_clk => dp_clk, + --------------------------------------------------------------------------- + -- DIAG rx seq with optional data buffer + --------------------------------------------------------------------------- -- MM interface + reg_data_buf_mosi => reg_diag_data_buf_mosi, + reg_data_buf_miso => reg_diag_data_buf_miso, - reg_data_buf_mosi => reg_diag_data_buf_mosi, - reg_data_buf_miso => reg_diag_data_buf_miso, + ram_data_buf_mosi => ram_diag_data_buf_mosi, + ram_data_buf_miso => ram_diag_data_buf_miso, - ram_data_buf_mosi => ram_diag_data_buf_mosi, - ram_data_buf_miso => ram_diag_data_buf_miso, - - reg_rx_seq_mosi => reg_diag_rx_seq_mosi, - reg_rx_seq_miso => reg_diag_rx_seq_miso, - - -- ST interface - in_sync => in_sosi_arr(0).sync, - in_sosi_arr => in_sosi_arr + reg_rx_seq_mosi => reg_diag_rx_seq_mosi, + reg_rx_seq_miso => reg_diag_rx_seq_miso ); - END str;