亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ddr_sdram_test_component.v

?? 基于NIOS的CF卡應用(包括了軟件和硬件),ALTERA的IP庫中只提供了底層的硬件寄存器描述頭文件.這是個基于IP核HAL的軟件,以及相應的硬件設計示例.
?? V
字號:
//Legal Notice: (C)2005 Altera Corporation. All rights reserved.  Your
//use of Altera Corporation's design tools, logic functions and other
//software and tools, and its AMPP partner logic functions, and any
//output files any of the foregoing (including device programming or
//simulation files), and any associated documentation or information are
//expressly subject to the terms and conditions of the Altera Program
//License Subscription Agreement or other applicable license agreement,
//including, without limitation, that your use is for the sole purpose
//of programming logic devices manufactured by Altera and sold by Altera
//or its authorized distributors.  Please refer to the applicable
//agreement for further details.

// synthesis translate_off
`timescale 1ns / 100ps
// synthesis translate_on
module ddr_sdram_test_component_ram_module (
                                             // inputs:
                                              data,
                                              rdaddress,
                                              rdclken,
                                              wraddress,
                                              wrclock,
                                              wren,

                                             // outputs:
                                              q
                                           );

  output  [ 31: 0] q;
  input   [ 31: 0] data;
  input   [ 23: 0] rdaddress;
  input            rdclken;
  input   [ 23: 0] wraddress;
  input            wrclock;
  input            wren;

  reg     [ 31: 0] mem_array [16777215: 0];
  wire    [ 31: 0] q;
  reg     [ 23: 0] read_address;

//synthesis translate_off
//////////////// SIMULATION-ONLY CONTENTS
  always @(rdaddress)
    begin
      if (1)
          read_address <= rdaddress;
    end


  // Data read is asynchronous.
  assign q = mem_array[read_address];

initial
    $readmemh("ddr_sdram.dat", mem_array);
  always @(posedge wrclock)
    begin
      // Write data
      if (wren)
          mem_array[wraddress] <= data;
    end



//////////////// END SIMULATION-ONLY CONTENTS

//synthesis translate_on
//synthesis read_comments_as_HDL on
//  always @(rdaddress)
//    begin
//      if (1)
//          read_address <= rdaddress;
//    end
//
//
//  lpm_ram_dp lpm_ram_dp_component
//    (
//      .data (data),
//      .q (q),
//      .rdaddress (read_address),
//      .rdclken (rdclken),
//      .wraddress (wraddress),
//      .wrclock (wrclock),
//      .wren (wren)
//    );
//
//  defparam lpm_ram_dp_component.lpm_file = "UNUSED",
//           lpm_ram_dp_component.lpm_hint = "USE_EAB=ON",
//           lpm_ram_dp_component.lpm_indata = "REGISTERED",
//           lpm_ram_dp_component.lpm_outdata = "UNREGISTERED",
//           lpm_ram_dp_component.lpm_rdaddress_control = "UNREGISTERED",
//           lpm_ram_dp_component.lpm_width = 32,
//           lpm_ram_dp_component.lpm_widthad = 24,
//           lpm_ram_dp_component.lpm_wraddress_control = "REGISTERED",
//           lpm_ram_dp_component.suppress_memory_conversion_warnings = "ON";
//
//synthesis read_comments_as_HDL off


endmodule


module ddr_sdram_test_component (
                                  // inputs:
                                   clk,
                                   ddr_a,
                                   ddr_ba,
                                   ddr_cas_n,
                                   ddr_cke,
                                   ddr_cs_n,
                                   ddr_dm,
                                   ddr_ras_n,
                                   ddr_we_n,

                                  // outputs:
                                   ddr_dq,
                                   ddr_dqs
                                );

  inout   [ 15: 0] ddr_dq;
  inout   [  1: 0] ddr_dqs;
  input            clk;
  input   [ 12: 0] ddr_a;
  input   [  1: 0] ddr_ba;
  input            ddr_cas_n;
  input            ddr_cke;
  input            ddr_cs_n;
  input   [  1: 0] ddr_dm;
  input            ddr_ras_n;
  input            ddr_we_n;

  wire    [ 23: 0] CODE;
  wire    [ 12: 0] a;
  wire    [  7: 0] addr_col;
  wire    [  1: 0] ba;
  reg     [  2: 0] burstlength;
  reg              burstmode;
  reg              cas2;
  reg              cas25;
  reg              cas3;
  wire             cas_n;
  wire             cke;
  wire    [  2: 0] cmd_code;
  wire             cs_n;
  wire    [  2: 0] current_row;
  wire    [ 15: 0] ddr_dq;
  wire    [  1: 0] ddr_dqs;
  wire    [  1: 0] dm;
  reg     [  3: 0] dm_captured;
  reg     [ 31: 0] dq_captured;
  wire    [ 15: 0] dq_out_0;
  wire    [ 15: 0] dq_out_1;
  wire    [ 15: 0] dq_out_2;
  wire    [ 15: 0] dq_out_3;
  reg              dq_valid;
  wire    [  1: 0] dqs_out_0;
  wire    [  1: 0] dqs_out_1;
  wire    [  1: 0] dqs_out_2;
  wire    [  1: 0] dqs_out_3;
  wire             dqs_valid;
  reg              dqs_valid_temp;
  reg     [ 15: 0] first_half_dq;
  reg     [  2: 0] index;
  wire    [ 31: 0] mem_bytes;
  reg     [ 12: 0] open_rows [  7: 0];
  wire             ras_n;
  reg     [ 23: 0] rd_addr_pipe_0;
  reg     [ 23: 0] rd_addr_pipe_1;
  reg     [ 23: 0] rd_addr_pipe_2;
  reg     [ 23: 0] rd_addr_pipe_3;
  reg     [ 23: 0] rd_addr_pipe_4;
  reg     [ 23: 0] rd_addr_pipe_5;
  reg     [  5: 0] rd_valid_pipe;
  wire    [ 23: 0] read_addr_delayed;
  reg              read_cmd;
  wire    [ 31: 0] read_data;
  wire    [ 15: 0] read_dq;
  wire             read_valid;
  wire    [ 23: 0] rmw_address;
  reg     [ 31: 0] rmw_temp;
  reg     [ 15: 0] second_half_dq;
  wire    [ 23: 0] txt_code;
  wire             we_n;
  wire    [ 23: 0] wr_addr_delayed;
  reg     [ 23: 0] wr_addr_pipe_0;
  reg     [ 23: 0] wr_addr_pipe_1;
  reg     [ 23: 0] wr_addr_pipe_2;
  reg     [ 23: 0] wr_addr_pipe_3;
  reg              write_cmd;
  reg              write_valid;
  reg              write_valid_r;
initial
  begin
    $write("\n");
    $write("**********************************************************************\n");
    $write("This testbench includes an SOPC Builder generated Altera memory model:\n");
    $write("'ddr_sdram_test_component.v', to simulate accesses to the 'ddr_sdram'.\n");
    $write("Initial contents are loaded from the file: 'ddr_sdram.dat'.\n");
    $write("**********************************************************************\n");
  end
  //Synchronous write when (CODE == 24'h205752 (write))
  ddr_sdram_test_component_ram_module ddr_sdram_test_component_ram
    (
      .data      (rmw_temp),
      .q         (read_data),
      .rdaddress (rmw_address),
      .rdclken   (1'b1),
      .wraddress (wr_addr_delayed),
      .wrclock   (clk),
      .wren      (write_valid_r)
    );

  assign cke = ddr_cke;
  assign cs_n = ddr_cs_n;
  assign ras_n = ddr_ras_n;
  assign cas_n = ddr_cas_n;
  assign we_n = ddr_we_n;
  assign dm = ddr_dm;
  assign ba = ddr_ba;
  assign a = ddr_a;
  assign cmd_code = {ras_n, cas_n, we_n};
  assign CODE = (&cs_n) ? 24'h494e48 : txt_code;
  assign addr_col = a[8 : 1];
  assign current_row = {cs_n,ba};
  // Decode commands into their actions
  always @(posedge clk)
    begin
      // No Activity if the clock is
      if (cke)
        begin
          // This is a read command
          if (cmd_code == 3'b101)
            begin
              read_cmd <= 1'b1;
              rd_addr_pipe_0 <= {ba,open_rows[current_row],addr_col};
            end
          else 
            read_cmd <= 1'b0;
          // This is a write command
          if (cmd_code == 3'b100)
            begin
              write_cmd <= 1'b1;
              wr_addr_pipe_0 <= {ba,open_rows[current_row],addr_col};
            end
          else 
            write_cmd <= 1'b0;
          // This is an activate - store the chip/row/bank address in the same order as the DDR controller
          if (cmd_code == 3'b011)
              open_rows[current_row] <= a;
          //Load mode register - set CAS latency, burst mode and length
          if (cmd_code == 3'b000 && ba == 2'b00)
            begin
              burstmode <= a[3];
              burstlength <= a[2 : 0] << 1;
              wr_addr_pipe_0 <= 0;
              //Decode CAS Latency from bits a[6..4]
              if (a[6 : 4] == 3'b010)
                begin
                  cas2 <= 1'b1;
                  index <= 3'b001;
                end
              else //CAS Latency = 2.5 
              if (a[6 : 4] == 3'b110)
                begin
                  cas25 <= 1'b1;
                  index <= 3'b001;
                end
              else 
                begin
                  cas3 <= 1'b1;
                  index <= 3'b010;
                end
            end
          rd_valid_pipe[5 : 1] <= rd_valid_pipe[4 : 0];
          rd_addr_pipe_5 <= rd_addr_pipe_4;
          rd_addr_pipe_4 <= rd_addr_pipe_3;
          rd_addr_pipe_3 <= rd_addr_pipe_2;
          rd_addr_pipe_2 <= rd_addr_pipe_1;
          rd_addr_pipe_1 <= rd_addr_pipe_0;
          rd_valid_pipe[0] <= cmd_code == 3'b101;
          wr_addr_pipe_3 <= wr_addr_pipe_2;
          wr_addr_pipe_2 <= wr_addr_pipe_1;
          wr_addr_pipe_1 <= wr_addr_pipe_0;
          write_valid <= write_cmd;
          write_valid_r <= write_valid;
        end
    end


  // read data transition from single to double clock rate
  always @(posedge clk)
    begin
      first_half_dq <= read_data[31 : 16];
      second_half_dq <= read_data[15 : 0];
    end


  assign read_dq = clk  ? second_half_dq : first_half_dq;
  assign dqs_out_0 = dqs_valid ? {2{clk}} : {2{1'bz}};
  assign dq_out_0 = dq_valid  ? read_dq : {16{1'bz}};
  assign #2.94117647058824 dqs_out_1 = dqs_out_0;
  assign #2.94117647058824 dq_out_1 = dq_out_0;
  assign #2.94117647058824 dqs_out_2 = dqs_out_1;
  assign #2.94117647058824 dq_out_2 = dq_out_1;
  assign #2.94117647058824 dqs_out_3 = dqs_out_2;
  assign #2.94117647058824 dq_out_3 = dq_out_2;
  assign #2.94117647058824 ddr_dqs = dqs_out_3;
  assign #2.94117647058824 ddr_dq = dq_out_3;
  // 
  always @(posedge clk)
    begin
      dq_valid <= read_valid;
    end


  assign dqs_valid = dq_valid || dqs_valid_temp;
  // 
  always @(negedge clk)
    begin
      dqs_valid_temp <= read_valid;
    end


  //capture first half of write data with rising edge of DQS, for simulation use only 1 DQS pin
  always @(posedge ddr_dqs[0])
    begin
      dq_captured[15 : 0] <= ddr_dq[15 : 0];
      dm_captured[1 : 0] <= ddr_dm[1 : 0];
    end


  //capture second half of write data with falling edge of DQS, for simulation use only 1 DQS pin
  always @(negedge ddr_dqs[0])
    begin
      dq_captured[31 : 16] <= ddr_dq[15 : 0];
      dm_captured[3 : 2] <= ddr_dm[1 : 0];
    end


  //Support for incomplete writes, do a read-modify-write with mem_bytes and the write data
  always @(posedge clk)
    begin
      // 
      if (write_valid)
        begin
          rmw_temp[7 : 0] <= dm_captured[0] ? mem_bytes[7 : 0]   : dq_captured[7 : 0];
          rmw_temp[15 : 8] <= dm_captured[1] ? mem_bytes[15 : 8]   : dq_captured[15 : 8];
          rmw_temp[23 : 16] <= dm_captured[2] ? mem_bytes[23 : 16]   : dq_captured[23 : 16];
          rmw_temp[31 : 24] <= dm_captured[3] ? mem_bytes[31 : 24]   : dq_captured[31 : 24];
        end
    end


  assign mem_bytes = (rmw_address == wr_addr_delayed) ? rmw_temp : read_data;
  assign rmw_address = (write_valid) ? wr_addr_pipe_1 : read_addr_delayed;
  assign wr_addr_delayed = wr_addr_pipe_2;
  //use index to select which pipeline stage drives addr
  assign read_addr_delayed = (index == 0)? rd_addr_pipe_0 :
    (index == 1)? rd_addr_pipe_1 :
    (index == 2)? rd_addr_pipe_2 :
    (index == 3)? rd_addr_pipe_3 :
    (index == 4)? rd_addr_pipe_4 :
    rd_addr_pipe_5;

  //use index to select which pipeline stage drives valid
  assign read_valid = (index == 0)? rd_valid_pipe[0] :
    (index == 1)? rd_valid_pipe[1] :
    (index == 2)? rd_valid_pipe[2] :
    (index == 3)? rd_valid_pipe[3] :
    (index == 4)? rd_valid_pipe[4] :
    rd_valid_pipe[5];


//synthesis translate_off
//////////////// SIMULATION-ONLY CONTENTS
  assign txt_code = (cmd_code == 3'h0)? 24'h4c4d52 :
    (cmd_code == 3'h1)? 24'h415246 :
    (cmd_code == 3'h2)? 24'h505245 :
    (cmd_code == 3'h3)? 24'h414354 :
    (cmd_code == 3'h4)? 24'h205752 :
    (cmd_code == 3'h5)? 24'h205244 :
    (cmd_code == 3'h6)? 24'h425354 :
    (cmd_code == 3'h7)? 24'h4e4f50 :
    24'h424144;


//////////////// END SIMULATION-ONLY CONTENTS

//synthesis translate_on


endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
玖玖九九国产精品| 奇米777欧美一区二区| 精品人伦一区二区色婷婷| 欧美日韩第一区日日骚| 欧美性极品少妇| 欧美日韩国产一级二级| 欧美日韩视频在线观看一区二区三区 | 国产成人av电影在线观看| 韩国v欧美v日本v亚洲v| 国产一区二三区好的| 成人一区在线观看| 91视视频在线观看入口直接观看www | 久久午夜电影网| 国产三级一区二区| |精品福利一区二区三区| 亚洲日本va午夜在线电影| 亚洲激情在线播放| 日韩av不卡在线观看| 国产乱码字幕精品高清av| 成人美女视频在线看| 色一情一乱一乱一91av| 9191成人精品久久| 日韩欧美在线网站| 亚洲国产岛国毛片在线| 亚洲午夜一二三区视频| 免费观看久久久4p| 成人一级黄色片| 欧美色综合网站| 久久五月婷婷丁香社区| 国产精品美女一区二区三区| 一区二区三区日韩精品视频| 美女www一区二区| 国产成人精品aa毛片| 色一区在线观看| 久久久亚洲欧洲日产国码αv| 亚洲视频在线观看一区| 午夜在线电影亚洲一区| 国产裸体歌舞团一区二区| 从欧美一区二区三区| 欧美视频完全免费看| 久久嫩草精品久久久久| 一区二区三区日韩欧美精品| 国产精品456| 欧美一区二区三区在线电影 | 色噜噜夜夜夜综合网| 日韩欧美激情一区| 亚洲国产三级在线| 91色在线porny| 国产欧美一区二区精品仙草咪| 亚洲国产精品视频| 99久久精品久久久久久清纯| 2021中文字幕一区亚洲| 日韩黄色一级片| 99久久er热在这里只有精品15 | 中文字幕日韩一区二区| 日韩成人av影视| 在线观看欧美黄色| 日本一区二区三区四区 | 日韩你懂的电影在线观看| 一区二区三区久久| 国产91丝袜在线观看| 5858s免费视频成人| 亚洲妇女屁股眼交7| 日本福利一区二区| 亚洲乱码国产乱码精品精可以看| 国产成人久久精品77777最新版本| 精品少妇一区二区三区| 日本成人在线不卡视频| 在线电影院国产精品| 亚洲一区二区免费视频| 色综合咪咪久久| 中文字幕五月欧美| 成人精品亚洲人成在线| 国产精品久久久久一区二区三区| 国产成人在线看| 欧美成人伊人久久综合网| 日韩av中文在线观看| 欧美大尺度电影在线| 韩国精品主播一区二区在线观看| 久久免费国产精品| 国产精品一品二品| 欧美一卡2卡三卡4卡5免费| 麻豆精品视频在线观看免费| 日韩一区二区在线观看| 精品一区二区三区久久久| 337p亚洲精品色噜噜| 午夜私人影院久久久久| 欧美一级理论片| 国产69精品久久久久毛片| 国产欧美精品在线观看| kk眼镜猥琐国模调教系列一区二区| 久久精品夜色噜噜亚洲a∨| 不卡视频免费播放| 亚洲国产精品麻豆| 久久天天做天天爱综合色| 成人黄色综合网站| 亚洲国产日产av| 久久在线观看免费| 色综合久久99| 久久精品噜噜噜成人av农村| 久久久99精品久久| 在线区一区二视频| 精品亚洲成a人在线观看| 亚洲欧洲无码一区二区三区| 欧美日韩一区二区三区不卡| 久久99精品国产.久久久久| 国产精品视频在线看| 欧美老人xxxx18| 国产成人av电影在线| 性久久久久久久| 国产精品麻豆99久久久久久| 欧美人成免费网站| 国产激情一区二区三区四区| 亚洲无线码一区二区三区| 2024国产精品| 91视频免费看| 日韩国产精品大片| 国产精品视频麻豆| 欧美在线制服丝袜| 国产成人综合视频| 亚洲一区视频在线| 国产精品无圣光一区二区| 欧美精品tushy高清| 91色乱码一区二区三区| 国产91在线看| 精品一区二区日韩| 亚洲成人自拍偷拍| 国产亚洲欧美激情| 欧美成人伊人久久综合网| 欧亚洲嫩模精品一区三区| 成人成人成人在线视频| 国产一区在线观看麻豆| 婷婷中文字幕一区三区| 一区二区三区91| 综合av第一页| 国产精品久久久久婷婷二区次| 精品国产伦理网| 欧美一区二区三区在| 欧美日韩成人高清| 欧美午夜片在线看| 在线亚洲高清视频| 99精品国产热久久91蜜凸| 丁香一区二区三区| 精品一区免费av| 精品一区二区三区蜜桃| 免费观看日韩电影| 亚洲永久免费视频| 一区二区三区色| 亚洲影视在线观看| 国产精品传媒在线| 国产精品久久久久精k8| 国产精品久久看| 综合av第一页| 亚洲成人激情自拍| 日韩中文字幕av电影| 奇米精品一区二区三区四区| 午夜成人在线视频| 偷拍亚洲欧洲综合| 亚洲高清免费视频| 日韩国产精品久久久久久亚洲| 香蕉久久一区二区不卡无毒影院| 香港成人在线视频| 亚洲精选免费视频| 日韩国产欧美一区二区三区| 精品综合免费视频观看| 国产成人精品影院| 91精品办公室少妇高潮对白| 欧美日韩一区二区三区在线 | 久久久www免费人成精品| 国产色一区二区| 亚洲精品欧美专区| 视频一区中文字幕| 黑人巨大精品欧美黑白配亚洲 | 亚洲成人第一页| 久久不见久久见免费视频1| 日本午夜一本久久久综合| 国产精品一区二区果冻传媒| 91丨九色丨尤物| 制服丝袜在线91| 亚洲欧洲精品天堂一级| 午夜电影网亚洲视频| 国产91富婆露脸刺激对白| 欧美在线制服丝袜| 久久综合久久综合亚洲| 亚洲老司机在线| 国产乱码字幕精品高清av| 日本久久精品电影| 亚洲精品一区二区三区蜜桃下载| 中文字幕一区二区三区视频| 秋霞av亚洲一区二区三| 91在线码无精品| 国产亚洲精品精华液| 亚洲国产wwwccc36天堂| 丁香天五香天堂综合| 欧美在线观看视频一区二区| wwwwww.欧美系列| 首页亚洲欧美制服丝腿| 色婷婷精品大视频在线蜜桃视频| 久久先锋影音av| 蜜臀国产一区二区三区在线播放|