⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 data_read_24bit.v

📁 XILINX memory interface generator. XILINX的外部存储器接口。
💻 V
📖 第 1 页 / 共 2 页
字号:
`timescale 1ns/100ps
module data_read_24bit (
		 
		 clk90,
                 reset90_r,
                 ddr_dq_in,
                 read_valid_data_1,
                 fifo_00_wr_en,
                 fifo_10_wr_en,
                 fifo_20_wr_en,
                 fifo_01_wr_en,
                 fifo_11_wr_en,
                 fifo_21_wr_en,
                 fifo_00_wr_addr,
                 fifo_01_wr_addr,
                 fifo_10_wr_addr,
                 fifo_11_wr_addr,
                 fifo_20_wr_addr,
                 fifo_21_wr_addr,
                 dqs0_delayed_col1,
                 dqs1_delayed_col1,
                 dqs2_delayed_col1,
                 	     
                 dqs0_delayed_col0,
                 dqs1_delayed_col0,
                 dqs2_delayed_col0,
                 user_output_data,
                 fifo0_rd_addr_val,
                 fifo1_rd_addr_val); 

   
   input     clk90;
   input     reset90_r;
   input     [23:0] ddr_dq_in;   
   input     read_valid_data_1;    
   input     fifo_00_wr_en;
   input     fifo_10_wr_en;
   input     fifo_20_wr_en;
   input     fifo_01_wr_en;
   input     fifo_11_wr_en;
   input     fifo_21_wr_en;
  
   input     [3:0] fifo_00_wr_addr;
   input     [3:0] fifo_01_wr_addr;
   input     [3:0] fifo_10_wr_addr;
   input     [3:0] fifo_11_wr_addr;
   input     [3:0] fifo_20_wr_addr;
   input     [3:0] fifo_21_wr_addr;
   input     dqs0_delayed_col1;
   input     dqs1_delayed_col1;
   input     dqs2_delayed_col1;
   input     dqs0_delayed_col0;
   input     dqs1_delayed_col0;
   input     dqs2_delayed_col0;
   
  
  
   output     [47:0] user_output_data;
   output     [3:0] fifo0_rd_addr_val;
   output     [3:0] fifo1_rd_addr_val;     


   reg read_valid_data_1_r;
   reg read_valid_data_1_r1;
   reg read_valid_data_1_r2;
   reg [3:0] fifo00_rd_addr_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [3:0] fifo01_rd_addr_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [3:0] fifo10_rd_addr_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [3:0] fifo11_rd_addr_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [3:0] fifo20_rd_addr_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [3:0] fifo21_rd_addr_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [3:0] fifop_rd_addr_r ;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [7:0] fifo_00_data_out_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [7:0] fifo_01_data_out_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [7:0] fifo_10_data_out_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [7:0] fifo_11_data_out_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [7:0] fifo_20_data_out_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [7:0] fifo_21_data_out_r;/* synthesis syn_preserve=1 */ /* synthesis syn_noprune=1 */
   reg [47:0] first_sdr_data;

   wire [3:0] fifo00_rd_addr;
   wire [3:0] fifo01_rd_addr;
   wire [7:0] fifo_00_data_out;
   wire [7:0] fifo_01_data_out;
   wire [7:0] fifo_10_data_out;
   wire [7:0] fifo_11_data_out;
   wire [7:0] fifo_20_data_out;
   wire [7:0] fifo_21_data_out;
   wire dqs0_delayed_col0_n;
   wire dqs1_delayed_col0_n;
   wire dqs2_delayed_col0_n;
   wire dqs0_delayed_col1_n;
   wire dqs1_delayed_col1_n;
   wire dqs2_delayed_col1_n;
   
   assign dqs0_delayed_col0_n = ~ dqs0_delayed_col0;
   assign dqs1_delayed_col0_n = ~ dqs1_delayed_col0;
   assign dqs2_delayed_col0_n = ~ dqs2_delayed_col0;
   assign dqs0_delayed_col1_n = ~ dqs0_delayed_col1;
   assign dqs1_delayed_col1_n = ~ dqs1_delayed_col1;
   assign dqs2_delayed_col1_n = ~ dqs2_delayed_col1;
   assign user_output_data    = first_sdr_data;
   assign fifo0_rd_addr_val   = fifo01_rd_addr;
   assign fifo1_rd_addr_val   = fifo00_rd_addr;


   
   always@(posedge clk90)begin
      if(reset90_r)begin
         fifo_00_data_out_r <= 8'd0;
         fifo_01_data_out_r <= 8'd0;
         fifo_10_data_out_r <= 8'd0;  //  ** Honey
         fifo_11_data_out_r <= 8'd0;  //  ** Honey
         fifo_20_data_out_r <= 8'd0;
         fifo_21_data_out_r <= 8'd0;
         
      end
      else 
      begin
         fifo_00_data_out_r <= fifo_00_data_out;
         fifo_01_data_out_r <= fifo_01_data_out;
         fifo_10_data_out_r <= fifo_10_data_out;
         fifo_11_data_out_r <= fifo_11_data_out;
         fifo_20_data_out_r <= fifo_20_data_out;
         fifo_21_data_out_r <= fifo_21_data_out;
      end
   end

   always@(posedge clk90)begin
      if(reset90_r)begin
         fifo00_rd_addr_r <= 4'd0;  // *** HOney 
         fifo01_rd_addr_r <= 4'd0;
         fifo10_rd_addr_r <= 4'd0;
         fifo11_rd_addr_r <= 4'd0;
         fifo20_rd_addr_r <= 4'd0;
         fifo21_rd_addr_r <= 4'd0;
         fifop_rd_addr_r  <= 4'd0;
      end
      else begin
         fifo00_rd_addr_r <= fifo00_rd_addr;
         fifo01_rd_addr_r <= fifo00_rd_addr;
         fifo10_rd_addr_r <= fifo00_rd_addr;
         fifo11_rd_addr_r <= fifo00_rd_addr;
         fifo20_rd_addr_r <= fifo00_rd_addr;
         fifo21_rd_addr_r <= fifo00_rd_addr;
         fifop_rd_addr_r  <= fifo01_rd_addr; 
      end
   end


   always@(posedge clk90)begin
      if(reset90_r)begin
         first_sdr_data   <= 48'd0;    // ** honey
         read_valid_data_1_r <= 1'b0;
         read_valid_data_1_r1 <= 1'b0;
         read_valid_data_1_r2 <= 1'b0;
      end
      else begin
         read_valid_data_1_r <= read_valid_data_1;
         read_valid_data_1_r1 <= read_valid_data_1_r;
         read_valid_data_1_r2 <= read_valid_data_1_r1;
         if(read_valid_data_1_r1)begin
            first_sdr_data  <= {fifo_20_data_out_r, fifo_10_data_out_r, 
            fifo_00_data_out_r, fifo_21_data_out_r,  fifo_11_data_out_r,  fifo_01_data_out_r  
	     };
            
            
            
            /*
            
            fifo_00_data_out_r, fifo_01_data_out_r, 
            fifo_10_data_out_r,  fifo_11_data_out_r,  fifo_20_data_out_r, 
            fifo_21_data_out_r };*/
         end
      end
   end

   // rd address gray counters
   rd_gray_cntr fifo0_rd_addr_inst (.clk(clk90), .reset(reset90_r), .cnt_en(read_valid_data_1), 
                                    .rgc_gcnt(fifo00_rd_addr));

   rd_gray_cntr fifo1_rd_addr_inst (.clk(clk90), .reset(reset90_r), .cnt_en(read_valid_data_1), 
                                    .rgc_gcnt(fifo01_rd_addr));

         
   // 16X1 fifo instantations


   RAM16X1D fifo0_bit0  (.DPO (fifo_00_data_out[0]), .A0(fifo_00_wr_addr[0]), .A1(fifo_00_wr_addr[1]),
                          .A2(fifo_00_wr_addr[2]), .A3(fifo_00_wr_addr[3]), .D(ddr_dq_in[0]),
                          .DPRA0(fifo00_rd_addr_r[0]), .DPRA1(fifo00_rd_addr_r[1]), 
                          .DPRA2(fifo00_rd_addr_r[2]), .DPRA3(fifo00_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col1), .WE(fifo_00_wr_en));

   RAM16X1D fifo1_bit0  (.DPO (fifo_01_data_out[0]), .A0(fifo_01_wr_addr[0]), .A1(fifo_01_wr_addr[1]),
                          .A2(fifo_01_wr_addr[2]), .A3(fifo_01_wr_addr[3]), .D(ddr_dq_in[0]),
                          .DPRA0(fifo00_rd_addr_r[0]), .DPRA1(fifo00_rd_addr_r[1]), 
                          .DPRA2(fifo00_rd_addr_r[2]), .DPRA3(fifo00_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col1_n), .WE(fifo_01_wr_en));

   RAM16X1D fifo0_bit1  (.DPO (fifo_00_data_out[1]), .A0(fifo_00_wr_addr[0]), .A1(fifo_00_wr_addr[1]),
                          .A2(fifo_00_wr_addr[2]), .A3(fifo_00_wr_addr[3]), .D(ddr_dq_in[1]),
                          .DPRA0(fifo01_rd_addr_r[0]), .DPRA1(fifo01_rd_addr_r[1]), 
                          .DPRA2(fifo01_rd_addr_r[2]), .DPRA3(fifo01_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col0), .WE(fifo_00_wr_en));

   RAM16X1D fifo1_bit1  (.DPO (fifo_01_data_out[1]), .A0(fifo_01_wr_addr[0]), .A1(fifo_01_wr_addr[1]),
                          .A2(fifo_01_wr_addr[2]), .A3(fifo_01_wr_addr[3]), .D(ddr_dq_in[1]),
                          .DPRA0(fifo01_rd_addr_r[0]), .DPRA1(fifo01_rd_addr_r[1]), 
                          .DPRA2(fifo01_rd_addr_r[2]), .DPRA3(fifo01_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col0_n), .WE(fifo_01_wr_en));

  RAM16X1D fifo0_bit2  (.DPO (fifo_00_data_out[2]), .A0(fifo_00_wr_addr[0]), .A1(fifo_00_wr_addr[1]),
                          .A2(fifo_00_wr_addr[2]), .A3(fifo_00_wr_addr[3]), .D(ddr_dq_in[2]),
                          .DPRA0(fifo00_rd_addr_r[0]), .DPRA1(fifo00_rd_addr_r[1]), 
                          .DPRA2(fifo00_rd_addr_r[2]), .DPRA3(fifo00_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col1), .WE(fifo_00_wr_en));

   RAM16X1D fifo1_bit2  (.DPO (fifo_01_data_out[2]), .A0(fifo_01_wr_addr[0]), .A1(fifo_01_wr_addr[1]),
                          .A2(fifo_01_wr_addr[2]), .A3(fifo_01_wr_addr[3]), .D(ddr_dq_in[2]),
                          .DPRA0(fifo00_rd_addr_r[0]), .DPRA1(fifo00_rd_addr_r[1]), 
                          .DPRA2(fifo00_rd_addr_r[2]), .DPRA3(fifo00_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col1_n), .WE(fifo_01_wr_en));

   RAM16X1D fifo0_bit3  (.DPO (fifo_00_data_out[3]), .A0(fifo_00_wr_addr[0]), .A1(fifo_00_wr_addr[1]),
                          .A2(fifo_00_wr_addr[2]), .A3(fifo_00_wr_addr[3]), .D(ddr_dq_in[3]),
                          .DPRA0(fifo01_rd_addr_r[0]), .DPRA1(fifo01_rd_addr_r[1]), 
                          .DPRA2(fifo01_rd_addr_r[2]), .DPRA3(fifo01_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col0), .WE(fifo_00_wr_en));

   RAM16X1D fifo1_bit3  (.DPO (fifo_01_data_out[3]), .A0(fifo_01_wr_addr[0]), .A1(fifo_01_wr_addr[1]),
                          .A2(fifo_01_wr_addr[2]), .A3(fifo_01_wr_addr[3]), .D(ddr_dq_in[3]),
                          .DPRA0(fifo01_rd_addr_r[0]), .DPRA1(fifo01_rd_addr_r[1]), 
                          .DPRA2(fifo01_rd_addr_r[2]), .DPRA3(fifo01_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col0_n), .WE(fifo_01_wr_en));


   RAM16X1D fifo0_bit4  (.DPO (fifo_00_data_out[4]), .A0(fifo_00_wr_addr[0]), .A1(fifo_00_wr_addr[1]),
                          .A2(fifo_00_wr_addr[2]), .A3(fifo_00_wr_addr[3]), .D(ddr_dq_in[4]),
                          .DPRA0(fifo00_rd_addr_r[0]), .DPRA1(fifo00_rd_addr_r[1]), 
                          .DPRA2(fifo00_rd_addr_r[2]), .DPRA3(fifo00_rd_addr_r[3]), .SPO(),
                          .WCLK(dqs0_delayed_col1), .WE(fifo_00_wr_en));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -