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

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

?? generate_ddr_sim_model.pl

?? 基于NIOS II的ddr2控制器,配有詳細的文檔,經驗證后可使用.
?? PL
?? 第 1 頁 / 共 5 頁
字號:
                                                  ),
                                                ],
                                   else      => ["write_cmd" => "1'b0"],
                               }),
                               
                               e_if->new({
                                   comment   => " This is an activate - store the chip/row/bank address in the same order as the DDR controller",
                                   condition => "(cmd_code == 3'b011)",
                                   then      => ["open_rows[current_row]" => "a"],
                               }),
                               
                               e_if->new({
                                   comment   => "Load mode register - set CAS latency, burst mode and length",
                                   condition => "(cmd_code == 3'b000 && ba == 2'b00)",
                                   then      => 
                                    [
                                        e_assign->news
                                            (["burstmode" => "a[3]"],
                                             ["burstlength" => "a[2:0] << 1"],
                                             # ["wr_addr_pipe_0" => "0"], # otherwise if the first write is partial it breaks!
                                            ),
                                    
                                         e_if->new({
                                            comment    => "Decode CAS Latency from bits a[6..4]",
                                            condition  => "(a[6:4] == 3'b011)",
                                            then       => 
                                            [
                                                e_assign->news (["index" => "3'b010" ],)
                                            ],
                                            else       => 
                                            [
                                                 e_if->new({
                                                    comment    => "CAS Latency = 4.0 ",
                                                    condition  => "(a[6:4] == 3'b100)",
                                                    then       => 
                                                    [
                                                        e_assign->news
                                                        (["index" => "3'b011" ],)
                                                    ],
                                                    else =>
                                                    [
                                                        e_assign->news
                                                        (["index" => "3'b100" ],)
                                                    ],
                                                }),                                            
                                                ],
                                         }),
                                     ],   
                                           
                               }),
                               
                               
                               e_assign->news
                               (
                    
                    ["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[5:1]" => "rd_valid_pipe[4:0]"],
                    ["rd_valid_pipe[0]" => "(cmd_code == 3'b101)"],
                    
                    ["wr_addr_pipe_5"  => "wr_addr_pipe_4"],
                    ["wr_addr_pipe_4"  => "wr_addr_pipe_3"],
                    ["wr_addr_pipe_3"  => "wr_addr_pipe_2"],
                    ["wr_addr_pipe_2"  => "wr_addr_pipe_1"],
                    ["wr_addr_pipe_1"  => "wr_addr_pipe_0"],
    
                    ["wr_valid_pipe[5:1]" => "wr_valid_pipe[4:0]"],
                    ["wr_valid_pipe[0]" => "(cmd_code == 3'b100)"],
                    
                    # ["write_valid_r"  => "write_valid"],
                    # ["write_valid_r2"  => "write_valid_r"],
                    ["wr_addr_delayed_r"  => "wr_addr_delayed"],
                               ),
                               ],
                           }),
                      ],
              }),
             );

       if ($local_burst_length > 1)
       {
           my $burstcounter_size = $local_burst_length / 2; # burst length count need to wrap within a burst length, so we need a suitable sized counter
        
        # Burst support - make the wr_addr keep counting 
        $module->add_contents
            (
             e_process->new
             ({
                 comment => " Burst support - make the wr_addr & rd_addr keep counting",
                 contents => 
                     [
                           e_if->new({ # WRITES
                               comment => " Reset write address otherwise if the first write is partial it breaks!",
                               condition => "(cmd_code == 3'b000 && ba == 2'b00)",
                               then      => 
                               [
                                    e_assign->news ( ["wr_addr_pipe_0" => "0"], 
                                                     ["wr_burst_counter" => "0"], ),
                               ],
                               else => 
                               [
                                    e_if->new({
                                       condition => "(cmd_code == 3'b100)",
                                       then      => 
                                       [
                                           e_assign-> news 
                                           (
                                                 ["wr_addr_pipe_0"   => "{ba,open_rows[current_row],addr_col}"],
                                                 ["wr_burst_counter[".($read_addr_width-1).":".($burstcounter_size)."]" => "{ba,open_rows[current_row],addr_col[".($col_width-2).":".($burstcounter_size)."]}"],
                                                 ["wr_burst_counter[".($burstcounter_size-1).":0]" => "addr_col[".($burstcounter_size-1).":0] + 1"],
                                           ),
                                       ],
                                       else => 
                                       [
                                           e_if->new({
                                               # condition => "(write_cmd == 1'b1) || (write_to_ram == 1'b1)",
                                               condition => "(write_cmd || write_to_ram)",
                                               then      => 
                                               [
                                                   # e_assign-> news (["wr_addr_pipe_0" => "{ba,open_rows[current_row],addr_col}"],),
                                                   e_assign-> news (["wr_addr_pipe_0" => "wr_burst_counter"],),
                                                   e_assign-> news (["wr_burst_counter[".($burstcounter_size-1).":0]" => "wr_burst_counter[".($burstcounter_size-1).":0] + 1"],),
                                               ],
                                               else      => 
                                               [
                                                    e_assign-> news (["wr_addr_pipe_0" => "0"],),
                                               ],
                                           }),
                                       
                                       ],
                                   }),
                                       
                               ],
                        }),

                           e_if->new({  # READS
                               comment => " Reset read address otherwise if the first write is partial it breaks!",
                               condition => "(cmd_code == 3'b000 && ba == 2'b00)",
                               then      => 
                               [
                                    e_assign->news ( ["rd_addr_pipe_0" => "0"], ),
                               ],
                               else => 
                               [
                                    e_if->new({
                                       condition => "(cmd_code == 3'b101)",
                                       then      => 
                                       [
                                           e_assign-> news 
                                           (
                                                 ["rd_addr_pipe_0"   => "{ba,open_rows[current_row],addr_col}"],
                                                 ["rd_burst_counter[".($read_addr_width-1).":".($burstcounter_size)."]" => "{ba,open_rows[current_row],addr_col[".($col_width-2).":".($burstcounter_size)."]}"],
                                                 ["rd_burst_counter[".($burstcounter_size-1).":0]" => "addr_col[".($burstcounter_size-1).":0] + 1"],
                                           ),
                                       ],
                                       else => 
                                       [
                                           e_if->new({
                                               condition => "(read_cmd || dq_valid || read_valid)",
                                               then      => 
                                               [
                                                   e_assign-> news (["rd_addr_pipe_0" => "rd_burst_counter"],),
                                                   e_assign-> news (["rd_burst_counter[".($burstcounter_size-1).":0]" => "rd_burst_counter[".($burstcounter_size-1).":0] + 1"],),
                                               ],
                                               else      => 
                                               [
                                                    e_assign-> news (["rd_addr_pipe_0" => "0"],),
                                               ],
                                           }),
                                       
                                       ],
                                   }),
                                       
                               ],
                           }), # end of READS
                        
                       ], # end of contents
                 }),
             );
       } 
       else {
            
        $module->add_contents # no Burst support
           (
             e_process->new
             ({
                 contents => 
                 [
                       e_if->new({
                           comment => " Reset write address otherwise if the first write is partial it breaks!",
                           condition => "(cmd_code == 3'b000 && ba == 2'b00)",
                           then      => 
                           [
                                e_assign->news ( ["wr_addr_pipe_0" => "0"],), 
                           ],
                           else => 
                           [
                                e_if->new({
                                   condition => "(cmd_code == 3'b100)",
                                   then      => 
                                   [
                                       e_assign-> news 
                                       (
                                             ["wr_addr_pipe_0"   => "{ba,open_rows[current_row],addr_col}"],
                                       ),
                                   ],
                               }),
                                   
                             ],
                        }),
                        e_if->new({
                           comment => "Read request so store the read address",
                           condition => "(cmd_code == 3'b101)",
                           then      => 
                           [
                               e_assign-> news 
                               (
                                     ["rd_addr_pipe_0"   => "{ba,open_rows[current_row],addr_col}"],
                               ),
                           ],
                       }),
                       
                               
                   ],
              }),
           );           
       } # if local_burst_length > 1
             
             
        # Assign Outputs:
        # if ($mem_mask_width > 1) {
        #     for (0 .. ($mem_mask_width - 1)) {
        #         $module->add_contents
        #             (
        #              e_assign->new
        #              (
        #               ["read_temp[$lanes{$_}]" => "mask[$_] ? ".
        #                "8'bz : read_data[$lanes{$_}]"]
        #               ),
        #              );
        #     } # for mask-bits
        # } else {
        #     $module->add_contents
        #         (
        #          e_assign->new
        #          (
        #           ["read_temp" => "mask ? 8'bz : read_data"]
        #           ),
        #          );
        # }
        
     # process (clk)
      # begin
        # if clk'event and clk = '1' then
          # first_half_dq <= read_data(31 DOWNTO 16);
          # second_half_dq <= read_data(15 DOWNTO 0);
       # end if;
      # end process;
        
        $module->add_contents
        (
         e_process->new
         ({
             comment => " read data transition from single to double clock rate",
             contents =>
             [
               e_assign->news 
               (
                  ["first_half_dq" => "read_data[".($dq_width*2-1).":".$dq_width."]"],
                  ["second_half_dq" => "read_data[".($dq_width-1).":0]"],
               ),
             ],
         }),
    
         #  dq <= A_WE_StdLogicVector((std_logic'(clk) = '0'), first_half_dq, second_half_dq);
         e_assign->new([read_dq => "clk  ? second_half_dq : first_half_dq"]),
         
          # ddr_dqs <= A_WE_StdLogicVector((std_logic'(dqs_valid) = '1'), A_REP(clk, 2), A_REP(std_logic'('Z'), 2));
          # ddr_dq <= A_WE_StdLogicVector((std_logic'(dq_valid) = '1'), read_dq, A_REP(std_logic'('Z'), 16));
          # e_assign->new([$dqs  => "dqs_valid ? {".$dqs_width."{clk}} : {".$dqs_width."{1'bz}}"]),
           #e_assign->new([$dq   => "dq_valid  ? read_dq : {".$dq_width."{1'bz}}"]),
         e_assign->new([dqs_temp   => "dqs_valid ? {".$dqs_width."{clk}} : {".$dqs_width."{1'bz}}"]),
         e_assign->new([dq_temp    => "dq_valid  ? read_dq : {".$dq_width."{1'bz}}"]),

         # model the board trace delay
           e_assign->new
           ({

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国av在线一区| 国产精品久久久久影院亚瑟| 欧美精品一区二区三区在线| 久久久久97国产精华液好用吗| 国产精品天天看| 亚洲小少妇裸体bbw| 韩国v欧美v日本v亚洲v| 97se狠狠狠综合亚洲狠狠| 精品视频在线视频| 久久久综合精品| 一区二区在线看| 精品午夜久久福利影院| 一道本成人在线| 日韩亚洲欧美成人一区| 中文字幕中文在线不卡住| 污片在线观看一区二区| 成人午夜激情片| 7777精品伊人久久久大香线蕉 | 一区二区三区四区高清精品免费观看| 亚洲v精品v日韩v欧美v专区| 国产精品性做久久久久久| 欧美亚洲综合另类| 婷婷一区二区三区| 成人激情av网| 欧美一级高清大全免费观看| 亚洲欧美在线观看| 激情六月婷婷综合| 欧美色网一区二区| 国产精品少妇自拍| 精品一区二区免费在线观看| 一本久道中文字幕精品亚洲嫩| www精品美女久久久tv| 亚洲h动漫在线| 99久久免费国产| 久久免费电影网| 日本中文字幕一区二区视频| 色天使久久综合网天天| 国产日韩欧美精品一区| 秋霞成人午夜伦在线观看| 色婷婷av久久久久久久| 国产精品嫩草久久久久| 韩国一区二区视频| 欧美一区二区在线看| 一区二区三区精品在线| 不卡在线观看av| 久久精品亚洲国产奇米99| 免费成人小视频| 欧美区一区二区三区| 亚洲精品乱码久久久久久| 成人中文字幕电影| 久久久一区二区| 韩国精品一区二区| 欧美大尺度电影在线| 日本不卡一二三区黄网| 欧美日韩一区二区在线观看视频| 综合久久给合久久狠狠狠97色| 国产精品一二三区在线| 欧美videos大乳护士334| 日韩电影免费在线看| 欧美色手机在线观看| 亚洲一区二区成人在线观看| 色妞www精品视频| 成人免费在线播放视频| 成人性生交大片免费看视频在线| 亚洲精品一区二区精华| 国产老妇另类xxxxx| 精品少妇一区二区三区在线播放 | 欧美一区二区视频网站| 亚洲一线二线三线视频| 欧美性三三影院| 亚洲国产一区二区视频| 欧美亚洲一区二区三区四区| 一区二区三区波多野结衣在线观看| 91丨porny丨户外露出| 日韩毛片精品高清免费| 色老综合老女人久久久| 亚洲综合在线免费观看| 欧美三级视频在线| 婷婷亚洲久悠悠色悠在线播放 | 欧美亚洲国产怡红院影院| 一区二区三区在线视频播放| 91搞黄在线观看| 午夜影院久久久| 欧美丰满少妇xxxbbb| 免费欧美日韩国产三级电影| 精品少妇一区二区三区在线播放| 国产一区二区三区免费在线观看| 久久久高清一区二区三区| 成人高清视频在线| 亚洲免费观看视频| 欧美三级蜜桃2在线观看| 免费视频最近日韩| 久久久久久黄色| 91丨porny丨在线| 亚洲bdsm女犯bdsm网站| 日韩精品中文字幕在线不卡尤物| 国产一二三精品| 中文字幕在线一区免费| 91国内精品野花午夜精品| 日本女优在线视频一区二区| 欧美v日韩v国产v| 成人福利在线看| 亚洲一二三专区| 精品国产精品网麻豆系列 | 一区视频在线播放| 欧美在线免费播放| 久久99久久久欧美国产| 亚洲国产高清在线| 欧美在线视频日韩| 狠狠色丁香婷综合久久| 中文字幕一区不卡| 欧美精品一二三| 国产激情一区二区三区| 亚洲免费在线观看视频| 欧美一级久久久久久久大片| 国产91丝袜在线18| 亚洲一区二区美女| 久久久久久久久97黄色工厂| 欧美色图第一页| 国产经典欧美精品| 亚洲国产精品人人做人人爽| 久久综合九色综合欧美亚洲| 色88888久久久久久影院按摩 | 久久久久久黄色| 欧美三级在线视频| 成人免费高清视频在线观看| 午夜精品一区二区三区电影天堂 | 成人激情午夜影院| 石原莉奈在线亚洲二区| 亚洲国产精品传媒在线观看| 欧美三区免费完整视频在线观看| 欧美v国产在线一区二区三区| 99视频一区二区三区| 人人狠狠综合久久亚洲| 亚洲人成网站在线| 久久无码av三级| 欧美日本国产视频| 91麻豆免费看| 国产福利一区二区三区视频| 视频一区国产视频| 亚洲色图一区二区三区| 国产视频一区在线播放| 4438亚洲最大| 在线看国产日韩| 99久久久国产精品| 国产在线精品免费av| 天堂影院一区二区| 亚洲美女偷拍久久| 中文字幕av资源一区| 日韩一区二区三区精品视频| 在线观看免费成人| 成人精品免费视频| 国产一区二区三区电影在线观看| 亚洲成人tv网| 亚洲三级久久久| 国产精品国产三级国产aⅴ中文 | 国产在线精品一区二区不卡了| 天天综合色天天综合色h| 亚洲乱码精品一二三四区日韩在线| 久久综合九色综合97婷婷女人| 91精品国产免费| 欧美日韩精品福利| 一本一道综合狠狠老| 岛国精品在线播放| 国产白丝精品91爽爽久久| 激情伊人五月天久久综合| 日本最新不卡在线| 日日摸夜夜添夜夜添国产精品| 亚洲精品写真福利| 亚洲嫩草精品久久| 亚洲欧美色综合| 亚洲视频1区2区| 亚洲精品伦理在线| 亚洲人午夜精品天堂一二香蕉| 中文字幕 久热精品 视频在线| 久久久久久久久久久黄色| 久久久综合激的五月天| 久久久噜噜噜久噜久久综合| 日韩欧美国产综合一区| 欧美成人伊人久久综合网| 欧美日韩国产综合视频在线观看 | 日韩国产欧美一区二区三区| 亚洲成人精品影院| 亚洲午夜免费视频| 亚洲综合激情网| 亚洲电影一级片| 免费av成人在线| 久久99深爱久久99精品| 国产精品综合二区| 成人午夜av影视| 99国产精品视频免费观看| av亚洲产国偷v产偷v自拍| 99精品视频一区二区三区| 日本黄色一区二区| 欧美高清视频在线高清观看mv色露露十八| 欧美无乱码久久久免费午夜一区 | 亚洲一级电影视频| 日本va欧美va欧美va精品| 狠狠色丁香婷婷综合| 国产寡妇亲子伦一区二区|