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

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

?? generate_ddr_sim_model.pl

?? 基于NIOS II的ddr2控制器,配有詳細的文檔,經驗證后可使用.
?? PL
?? 第 1 頁 / 共 5 頁
字號:
              {name => "dq_temp",      width => $dq_width},
              
              ),
             e_assign->news
             (
              ["cke"   => $default_pin_prefix."cke"],
              ["cs_n"  => $default_pin_prefix."cs_n"],
              ["ras_n" => $default_pin_prefix."ras_n"],
              ["cas_n" => $default_pin_prefix."cas_n"],
              ["we_n"  => $default_pin_prefix."we_n"],
              ["dm"    => $default_pin_prefix."dm"],
              ["ba"    => $default_pin_prefix."ba"],
              ["a"     => $default_pin_prefix."a"],
              ),
             );
    
        # my $x;
        # if ($number_of_lump_delays > 1) {
            # for ($x=0; $x < ($number_of_lump_delays ); $x++) {            
                # #print "connecting lump delay $x out of $number_of_lump_delays\n";
                # $module->add_contents
                # (
                    # e_signal->news
                    # (
                       # {name => "dqs_out_".$x,     width => $dqs_width},
                       # {name => "dq_out_".$x,      width => $dq_width},
                    # )
                # );
            # }
        # }
    
             
             
        # Now the fun begins ;-)
    
        $module->add_contents
            (
             # Define txt_code based on ras/cas/we
             e_assign->new
             ({
                 lhs => e_signal->new({name => "cmd_code", width => 3}),
                 rhs => "{ras_n, cas_n, we_n}",
             }),
             e_sim_wave_text->new
             ({
                 out     => "txt_code",
                 selecto => "cmd_code",
                 table   =>
                     [
                      "3'h0" => "LMR",
                      "3'h1" => "ARF",
                      "3'h2" => "PRE",
                      "3'h3" => "ACT",
                      "3'h4" => " WR",
                      "3'h5" => " RD",
                      "3'h6" => "BST",
                      "3'h7" => "NOP",
                      ],
                     default => "BAD",
                 }),
             # "Inhibit" if no chip_selects,
             e_signal->new({name => "CODE", width=> 8*3, never_export => 1}),
             e_assign->new(["CODE" => "(\&cs_n) ? $STR_INH : txt_code"]),
             );
    
        ## Row/Col Address Construction:
        # We're constructing a monolithic address into a single large array.
        # If there are multiple chip-selects, we assume they are one-hot
        # encoded (that's what our controller drives).
    
       
        # First, we'll build up row/bank. (arb == address_row_bank)
        my $arb_rhs;
        #my $arb_width = $WSA->{sdram_bank_width} + $WSA->{sdram_row_width};
        my $arb_width = $ba_width + $row_width;
    
        $arb_rhs = "{ba, a}";
        # if ($ba_width == 1)
        # {
            # # We only have 2 banks, row/addr build as {row,bank}
            # $arb_rhs = "{a, ba}";
        # }
        # elsif ($ba_width == 2)
        # {
            # # 4 banks construct address as {bank[1],row,bank[0]}
            # $arb_rhs = "{ba[1], a, ba[0]}"
        # }
    
        # then we'll tack cs_encoded bits as the top bits, if applicable
        # (acrb == addr_chip-select_row_bank)
        my $acrb_rhs;
        my $acrb_width = $arb_width;
        if ($num_chipselects < 2)
        {
            # Single chipselect does not affect address:
            $acrb_rhs  = $arb_rhs;
        }
        else
        {
            # Multiple chipselects are encoded to create high order addr bits.
            # Note that &one_hot_encoding outputs a properly ordered @list!
            my %cs_encode_hash = 
                ( default => ["cs_encode" => $num_chipselect_address_bits."'h0"] );
            my @raw_cs = &one_hot_encoding($num_chipselects);
            # print "\&make_sodimm: num_cs = $num_chipselects \t \@raw_cs = @raw_cs\n";
            my $cs_count = 0;
            foreach my $chip_select (@raw_cs) {
                $cs_encode_hash{$chip_select} =
                    [
                     e_assign->new
                     (
                      ["cs_encode" => $num_chipselect_address_bits."'h".$cs_count],
                      )
                     ];
                $cs_count++;
            } # foreach (@raw_cs)
    
            # Create the cs_encode signal, and use a case statement to define it.
            $module->add_contents
                (
                 e_signal->news
                 (
                  {name => "cs",        width=> $num_chipselects},
                  {name => "cs_encode", width=> $num_chipselect_address_bits},
                  ),
                 e_assign->new(["cs" => "~cs_n"]), # invert cs_n for encoding
                 e_process->new({
                     clock   => "",
                     comment =>
                         "Encode 1-hot ChipSelects into high order address bit(s)",
                     contents=>
                         [
                          e_case->new({
                              switch => "cs",
                              parallel => 1,
                              contents => {%cs_encode_hash},
                          }),
                          ],
                 }),
                 );
            # prepend the encoded bits as upper order addr bits, and remember width
            $acrb_rhs    = "{cs_encode, $arb_rhs}";
            $acrb_width += $num_chipselect_address_bits;
        }
        # define/assign final construction signals
        # (ac_rhs == addr_col), constructed to avoid A[10] for large col_width
        my $ac_rhs = "a[".($col_width-1).":1]";
        # if ($col_width < 11) {
            # $ac_rhs = "a[".($col_width-1).":0]";
        # } elsif ($col_width == 11) {
            # $ac_rhs = "{a[11],a[9:0]}";
        # } else {
            # $ac_rhs = "{a[".$col_width.":11],a[9:0]}";
        # }
        my $read_addr_width = $acrb_width + $col_width;
        $module->add_contents
            (
             e_signal->news
             (
              #{name => "addr_crb", width=> $acrb_width},
              {name => "addr_col", width=> $col_width - 1},
              {name => "test_addr",width=> $read_addr_width},
              # {name => "temp_addr",width=> $read_addr_width},
              ),
             e_signal->news
             (
              {name => "rd_addr_pipe_0", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "rd_addr_pipe_1", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "rd_addr_pipe_2", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "rd_addr_pipe_3", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "rd_addr_pipe_4", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "rd_addr_pipe_5", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "read_addr_delayed", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "rmw_address", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
          
              {name => "wr_addr_pipe_0", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "wr_addr_pipe_1", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "wr_addr_pipe_2", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "wr_addr_pipe_3", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "wr_addr_pipe_4", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "wr_addr_pipe_5", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "wr_addr_delayed", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "wr_burst_counter", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              {name => "rd_burst_counter", width=> $read_addr_width, default_value => "0",export => 0, never_export => 1},
              ),
             e_assign->news
             (
              ["addr_col" => $ac_rhs],
              # ["test_addr"=> "{addr_crb, addr_col}"],
              ),
             );
    
        ## Define some random necessary variables:
        # we only support up to a max cas_latency of 3, and just soak up that many
        #resources, and pluck off an earlier version if the cas_latency is set
        #lower during LMR...
        $module->add_contents
            (
             e_signal->news
             (
              {name => "rd_valid_pipe",   width=> 6}, # was 5?
              {name => "wr_valid_pipe",   width=> 6}, # was 5?
              #{name => "latency",         width=> 3},
              {name => "index",           width=> 3},
              ),
             );
        
        ## Set up ram read/wr var's and initial block to readmem our dat file:
        $module->add_contents
            (
             e_signal->news
             (
              {name => "rmw_temp", width=> $mem_width},
              {name => "mem_bytes",width=> $mem_width},
              {name => "read_data",width=> $mem_width},
              {name => "read_temp",width=> $mem_width,export => 0, never_export => 1},
              {name => "read_valid",width=> 1,export => 0, never_export => 1},
              {name => "read_cmd",width=> 1,export => 0, never_export => 1},
              {name => "write_valid_r" , width => 1, export => 0, never_export => 1},
              {name => "read_valid_r"  , width => 1, export => 0, never_export => 1},
              {name => "write_valid_r2", width => 1, export => 0, never_export => 1},
              {name => "write_valid_r3", width => 1, export => 0, never_export => 1},
              {name => "write_to_ram_r", width => 1, export => 0, never_export => 1},
              {name => "read_valid_r2" , width => 1, export => 0, never_export => 1},
              {name => "read_valid_r3" , width => 1, export => 0, never_export => 1},
              {name => "read_valid_r4" , width => 1, export => 0, never_export => 1},             
  
              {name => "burstmode",width=> 1,export => 0, never_export => 1},
              {name => "burstlength",width=> 3,export => 0, never_export => 1},
              ),
             e_assign->new(["current_row" => "{cs_n,ba}"]),
             );
    
        #sjh - No need for *read* masking with DDR
        # # Try to make life easier by defining the necessary number of byte lane
        # #field descriptors like 7:0, 15:8, etc...
        my %lanes;
        my $byte_lane;
        # # assign rmw_temp[7:0]= dqm[0] ? mem_bytes[7:0] : $dq[7:0]
        # if ($mem_mask_width > 1) {
            # for (0 .. ($mem_mask_width-1))
            # {
                # $byte_lane = $_;
                # $lanes{$byte_lane} = (($byte_lane*8)+7).":".($byte_lane*8);
                # $module->add_contents
                    # (
                     # e_assign->new
                     # (
                      # ["rmw_temp[$lanes{$byte_lane}]" =>
                       # "dm[$byte_lane] ? ".
                       # "mem_bytes[$lanes{$byte_lane}] : ".$dq."[$lanes{$byte_lane}]"]
                      # )
                     # );
            # } # for (0 to ($dm_width-1))
        # } else {
            # $module->add_contents
                # (
                 # e_assign->new(["rmw_temp" => "dm ? mem_bytes : ".$dq])
                 # );
        # }
        
        # Build the Main Process:
        $module->add_contents
            (
             e_process->new
             ({
                 comment => " Decode commands into their actions",
                 contents => 
                     [
                      e_if->new({
                          comment => " No Activity if the clock is",
                          condition => "cke",
                          then => 
                              [
                              e_if->new({
                                   comment   => " This is a read command",
                                   condition => "(cmd_code == 3'b101)",
                                   then      => [e_assign->news 
                                                 (["read_cmd" => "1'b1"],
                                                  # ["rd_addr_pipe_0" => "{ba,open_rows[current_row],addr_col}"],
                                                 ),
                                                ],
                                   else      => ["read_cmd"  => "1'b0"],
                               }),
                               
                               e_if->new({
                                   comment   => " This is a write command",
                                   condition => "(cmd_code == 3'b100)",
                                   then      => [e_assign-> news
                                                 (["write_cmd" => "1'b1"],
                                                  #["wr_addr_pipe_0" => "{ba,open_rows[current_row],addr_col}"],

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自在欧美一区| 国产成人精品一区二区三区四区 | 国产婷婷精品av在线| 琪琪一区二区三区| 日韩欧美国产一区在线观看| 色综合中文字幕| 精品久久人人做人人爱| 国产精品免费视频一区| 国产做a爰片久久毛片| 国产一区二区三区免费| 欧美色成人综合| 亚洲色图都市小说| 日日夜夜一区二区| 午夜日韩在线电影| 国产一区二区0| 精品美女在线播放| 狠狠色综合播放一区二区| 久久久不卡网国产精品二区| 国产成人精品免费网站| 亚洲摸摸操操av| 色网综合在线观看| 美脚の诱脚舐め脚责91| 国产视频一区二区在线观看| 一本久久综合亚洲鲁鲁五月天| 日本在线播放一区二区三区| 久久精品一区二区三区四区| 成人影视亚洲图片在线| 亚洲最新视频在线播放| 欧美日韩国产精品自在自线| 激情深爱一区二区| 亚洲免费在线视频一区 二区| 欧美一区二区女人| 95精品视频在线| 玖玖九九国产精品| 亚洲欧洲精品一区二区精品久久久 | 懂色av一区二区三区蜜臀| 亚洲欧洲精品一区二区精品久久久| 欧美日韩精品二区第二页| 国产高清不卡一区二区| 亚洲成精国产精品女| 中文字幕av一区 二区| 在线播放亚洲一区| 成人免费毛片aaaaa**| 美国毛片一区二区三区| 亚洲精品视频在线观看免费| 精品国产第一区二区三区观看体验| 91免费视频网址| 国产99久久精品| 美美哒免费高清在线观看视频一区二区 | 亚洲欧美日韩久久| 国产片一区二区| 精品久久国产97色综合| 制服丝袜亚洲精品中文字幕| 99久久精品久久久久久清纯| 国产精品亚洲а∨天堂免在线| 日本在线播放一区二区三区| 亚洲综合图片区| 亚洲免费av观看| 国产精品久久久久天堂| 久久久国产精品麻豆| 欧美一级日韩不卡播放免费| 欧美网站大全在线观看| 91美女视频网站| 成人激情动漫在线观看| 国产精品影视在线观看| 韩国女主播一区| 蜜桃视频第一区免费观看| 亚洲国产一区二区在线播放| 一个色综合av| 亚洲午夜一二三区视频| 亚洲另类春色校园小说| 亚洲免费在线观看| 亚洲欧美国产77777| 中文字幕在线不卡| 国产精品高潮呻吟久久| 亚洲精品一区二区三区四区高清| 91精品国产美女浴室洗澡无遮挡| 欧美体内she精高潮| 欧美成人性战久久| 日韩精品一区二区三区四区视频| 在线视频你懂得一区| 91亚洲国产成人精品一区二三| 丁香亚洲综合激情啪啪综合| 成人精品视频一区二区三区尤物| 成熟亚洲日本毛茸茸凸凹| 国产在线麻豆精品观看| 蜜桃视频第一区免费观看| 免费高清不卡av| 日本vs亚洲vs韩国一区三区 | 亚洲一区二区精品视频| 亚洲精品欧美在线| 亚洲成人免费在线| 麻豆国产欧美一区二区三区| 精品一区二区三区在线播放视频 | 国产成人在线观看| www.成人网.com| 在线精品视频免费观看| 欧美老肥妇做.爰bbww| 精品国产一区二区三区久久久蜜月| 欧美一区二区三区免费| 国产一区二区免费视频| 日韩视频免费直播| 欧美老女人在线| 欧美精品99久久久**| 久久一二三国产| 国产精品嫩草久久久久| 亚洲综合图片区| 狠狠网亚洲精品| 99视频精品在线| 欧美日韩在线不卡| 精品美女在线播放| 中文字幕一区二区三区乱码在线| 一区二区三区日韩欧美| 免费观看91视频大全| av电影天堂一区二区在线| 在线免费不卡电影| 日韩三级电影网址| 国产精品夫妻自拍| 日韩影院精彩在线| 国产黄人亚洲片| 色婷婷综合久久久久中文一区二区| 717成人午夜免费福利电影| 欧美一a一片一级一片| 欧美一区永久视频免费观看| 欧美成人一区二区| 亚洲私人黄色宅男| 麻豆精品国产传媒mv男同| 色综合咪咪久久| 日韩欧美一级精品久久| 亚洲少妇30p| 狠狠网亚洲精品| 欧美男同性恋视频网站| 最近日韩中文字幕| 国产精品影视在线观看| 欧美另类高清zo欧美| 自拍偷在线精品自拍偷无码专区| 久久国产欧美日韩精品| 在线看一区二区| 中文字幕一区视频| 国产91在线观看| 欧美成人性福生活免费看| 亚洲电影在线免费观看| 成人影视亚洲图片在线| 久久久精品影视| 久久精品久久99精品久久| 99re这里都是精品| 制服丝袜亚洲精品中文字幕| 国产区在线观看成人精品| 久久国产三级精品| 日韩视频一区二区在线观看| 亚洲欧美视频在线观看视频| 国产99精品国产| 国产日韩v精品一区二区| 精品一区二区久久| 欧美一区二区三区精品| 亚洲国产精品久久人人爱蜜臀| 99久久婷婷国产综合精品电影| 中文字幕精品在线不卡| 国产裸体歌舞团一区二区| 日韩视频一区二区| 麻豆成人免费电影| 欧美成人女星排名| 蜜桃久久久久久| 欧美v日韩v国产v| 蜜桃视频一区二区三区在线观看| 欧美一区二区三区不卡| 肉肉av福利一精品导航| 欧美一三区三区四区免费在线看 | 波多野结衣在线aⅴ中文字幕不卡| 欧美大尺度电影在线| 久久成人精品无人区| 日韩美女主播在线视频一区二区三区 | 高清不卡一二三区| 国产三区在线成人av| 成人性视频免费网站| 综合久久久久综合| 欧美亚日韩国产aⅴ精品中极品| 亚洲一区二区视频| 91麻豆精品国产| 国产在线看一区| 久久网站最新地址| 成人午夜激情片| 1000部国产精品成人观看| 91小视频在线| 日韩经典中文字幕一区| 亚洲精品一区二区三区福利| 国产超碰在线一区| 亚洲激情图片小说视频| 欧美人动与zoxxxx乱| 韩国精品一区二区| 中文字幕在线不卡国产视频| 欧美性淫爽ww久久久久无| 麻豆精品国产传媒mv男同| 中日韩av电影| 欧美性生活久久| 国模大尺度一区二区三区| 中文字幕一区在线观看| 欧美一级高清片| 成人污污视频在线观看| 午夜天堂影视香蕉久久|