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

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

?? generate_ddr_sim_model.pl

?? 基于NIOS II的ddr2控制器,配有詳細的文檔,經驗證后可使用.
?? PL
?? 第 1 頁 / 共 5 頁
字號:
               lhs => $dqs,
               rhs => "dqs_temp",
               sim_delay => $rtl_board_delay,
           }),
           e_assign->new
           ({ 
               lhs => $dq,
               rhs => "dq_temp",
               sim_delay => $rtl_board_delay,
           }),

         );

    $module->add_contents
    (        
         e_process->new
         ({
             comment => "Pipelining registers for burst counting",
             contents =>
             [
                e_assign->news 
                (
                    # ["write_valid"  => "write_cmd"],
                    ["write_valid_r"  => "write_valid"],
                    ["read_valid_r" => "read_valid"],
                    ["write_valid_r2" => "write_valid_r"],
                    ["write_valid_r3" => "write_valid_r2"],
                    ["write_to_ram_r" => "write_to_ram"],
                    ["read_valid_r2" => "read_valid_r"],
                    ["read_valid_r3" => "read_valid_r2"],
                    ["read_valid_r4" => "read_valid_r3"],
                ),
             ],
         }), 
    );
         
         
    if ($local_burst_length == 4) 
    {
        # Memory BL8, local bl4 support
        $module->add_contents
        (        
             e_assign->new(["write_to_ram" => "write_valid || write_valid_r || write_valid_r2 || write_valid_r3"]),
             e_assign->new(["dq_valid" => "read_valid_r || read_valid_r2 || read_valid_r3 || read_valid_r4"]),
         );
    }
    elsif ($local_burst_length == 2) {
        # Memory BL4, local bl2 support
        $module->add_contents
        (
             e_assign->new(["write_to_ram" => "write_valid || write_valid_r"]),
             e_assign->new(["dq_valid" => "read_valid_r || read_valid_r2"]),
         );
    } 
    else { 
        # No burst support
        $module->add_contents
        (        
             e_assign->new(["write_to_ram" => "write_valid"]),
             e_assign->new(["dq_valid" => "read_valid_r"]),
         );
    };
         
        
    $module->add_contents
    (
 
         # e_process->new
         # ({
             # comment => " ",
             # contents =>
             # [
                # e_assign->news 
            # (
                # ["dq_valid" => "read_valid"],
            # ),
             # ],
         # }), 
    
         e_assign->new(["dqs_valid" => "dq_valid || dqs_valid_temp"]),
    
         e_process->new
         ({
             comment => " ",
             clock_level => "0",
             contents =>
             [
                e_assign->news 
            (
                ["dqs_valid_temp" => "read_valid"],
            ),
             ],
         }), 
         
      # -- rising edge capture 
      # process (ddr_dqs(0))
      # begin
          # -- 
          # if rising_edge(ddr_dqs(0)) then 
            # dq_captured(7 DOWNTO 0) <= ddr_dq(7 DOWNTO 0);
            # dm_captured(0 DOWNTO 0) <= ddr_dm(0 DOWNTO 0);
          # end if;
      # end process;
    
         e_process->new
         ({
             comment => "capture first half of write data with rising edge of DQS, for simulation use only 1 DQS pin",
             clock   => $default_pin_prefix."dqs[0]",
             contents => 
             [
                e_assign->news
                (
                  ["dq_captured[".($dq_width-1).":0]" => $default_pin_prefix."dq[".($dq_width-1).":0]"],
                  ["dm_captured[".($dm_width-1).":0]" => $default_pin_prefix."dm[".($dm_width-1).":0]"],
                ),
             ]
         }),
    
      # -- falling edge capture 
      # process (ddr_dqs(0))
      # begin
          # -- 
          # if falling_edge(ddr_dqs(0)) then 
            # dq_captured(23 DOWNTO 16) <= ddr_dq(7 DOWNTO 0);
            # dm_captured(2 DOWNTO 2) <= ddr_dm(0 DOWNTO 0);
          # end if;
      # end process;
    
         e_process->new
         ({
             comment => "capture second half of write data with falling edge of DQS, for simulation use only 1 DQS pin",
             clock   => $default_pin_prefix."dqs[0]",
             clock_level => 0,
             contents => 
             [
                e_assign->news
                (
                  ["dq_captured[".($dq_width*2-1).":".($dq_width)."]" => $default_pin_prefix."dq[".($dq_width-1).":0]"],
                  ["dm_captured[".($dm_width*2-1).":".($dm_width)."]" => $default_pin_prefix."dm[".($dm_width-1).":0]"],
                ),
             ]
         }),
    
     );

         
    $module->add_contents
    (
       # there will always be at least DM[0]
        e_process->new
         ({
             comment => "Support for incomplete writes, do a read-modify-write with mem_bytes and the write data",
             contents => [ 
                e_if->new
                ({
                      # condition => "write_valid",
                      condition => "write_to_ram",
                      then => [e_assign->news (["rmw_temp[7:0]","dm_captured[0] ? mem_bytes[7 : 0] : dq_captured[7 : 0]"],),],
                }),
             ],
         }),
    );
    
    # now do the rest of DM pins
    if ($mem_mask_width > 1) {
        for (1 .. ($mem_mask_width-1)) 
        {
            $byte_lane = $_;
            $lanes{$byte_lane} = (($byte_lane*8)+7).":".($byte_lane*8);
            $module->add_contents
            (
                e_process->new
                 ({
                     contents => [ 
                        e_if->new
                        ({
                              # condition => "write_valid",
                              condition => "write_to_ram",
                              then => [e_assign->news (["rmw_temp[$lanes{$byte_lane}]" => "dm_captured[$byte_lane] ? "."mem_bytes[$lanes{$byte_lane}] : "."dq_captured[$lanes{$byte_lane}]"],),],
                        }),
                     ],
                 }),
            );
        } # for (0 to ($dm_width-1))
    } # if dm_width > 1
    
    # ["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]"],

    $module->add_contents
    (
         # e_assign->new(["mem_bytes" => "(rmw_address == wr_addr_delayed) ? rmw_temp : read_data"]),
         e_assign->new(["mem_bytes" => "(rmw_address == wr_addr_delayed_r) ? rmw_temp : read_data"]),
         # e_assign->new(["rmw_address", "(write_valid) ? wr_addr_delayed : read_addr_delayed"]),
         e_assign->new(["rmw_address", "(write_to_ram) ? wr_addr_delayed : read_addr_delayed"]),

         e_signal->news
             (
              {name => "read_addr", width => $read_addr_width, never_export => 1},
              {name => "read_valid",width => 1,                never_export => 1},
              ),
    
             e_mux->new
             ({
                 comment=> "use index to select which pipeline stage drives addr",
                 type   => "selecto",
                 selecto=> "index",
                 lhs    => "read_addr_delayed",
                 table  => 
                 [
                      0 => "rd_addr_pipe_0",
                      1 => "rd_addr_pipe_1",
                      2 => "rd_addr_pipe_2",
                      3 => "rd_addr_pipe_3",
                      4 => "rd_addr_pipe_4",
                      5 => "rd_addr_pipe_5",
                 ],
             }),
    
             e_mux->new
             ({
                 comment=> "use index to select which pipeline stage drives valid",
                 type   => "selecto",
                 selecto=> "index",
                 lhs    => "read_valid",
                 table  => 
                     [
                      0 => "rd_valid_pipe[0]",
                      1 => "rd_valid_pipe[1]",
                      2 => "rd_valid_pipe[2]",
                      3 => "rd_valid_pipe[3]",
                      4 => "rd_valid_pipe[4]",
                      5 => "rd_valid_pipe[5]",
                      ],
             }),
    
             e_mux->new
             ({
                 comment=> "DDR2 has variable write latency too, so use index to select which pipeline stage drives valid",
                 type   => "selecto",
                 selecto=> "index",
                 lhs    => "write_valid",
                 table  => 
                     [
                      0 => "wr_valid_pipe[0]",
                      1 => "wr_valid_pipe[1]",
                      2 => "wr_valid_pipe[2]",
                      3 => "wr_valid_pipe[3]",
                      4 => "wr_valid_pipe[4]",
                      5 => "wr_valid_pipe[5]",
                      ],
             }),
             e_mux->new
             ({
                 comment=> "DDR2 has variable write latency too, so use index to select which pipeline stage drives addr",
                 type   => "selecto",
                 selecto=> "index",
                 lhs    => "wr_addr_delayed",
                 table  => 
                 [
                      0 => "wr_addr_pipe_0",
                      1 => "wr_addr_pipe_1",
                      2 => "wr_addr_pipe_2",
                      3 => "wr_addr_pipe_3",
                      4 => "wr_addr_pipe_4",
                      5 => "wr_addr_pipe_5",
                 ],
             }),         
    
    
             );
             
    
        print "# Finished creating memory model\n";
             
        # Produce some output.
        # print "\&make_sodimm: sim_model_base = $sim_model_base\n";
        # print "\&make_sodimm: about to generate output...\n";
        # $project->_verbose(1);
        $project->output();
    } else {
        print "# Skipping creation of memory model because do_generation = $do_generation\n";
        
    }
    
} # &make_sodimm

&make_ddr_sim_model(@ARGV);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产cao| 国产亚洲午夜高清国产拍精品| 日韩影视精彩在线| 欧美精品一区二区三区四区| 成人a级免费电影| 一二三区精品福利视频| 日韩免费高清av| 成人h动漫精品一区二区| 亚洲成人自拍一区| 久久久99精品久久| 欧美三级三级三级爽爽爽| 国产曰批免费观看久久久| 亚洲欧洲av色图| 精品久久久久久无| 欧美吻胸吃奶大尺度电影| 国产精品亚洲人在线观看| 夜夜揉揉日日人人青青一国产精品 | 亚洲国产精品麻豆| 久久久亚洲国产美女国产盗摄| 91高清视频免费看| 国产成人免费视频精品含羞草妖精| 亚洲丶国产丶欧美一区二区三区| 中文字幕欧美三区| 精品国偷自产国产一区| 欧美吻胸吃奶大尺度电影| 久久精品二区亚洲w码| 中文字幕在线不卡| 精品国产人成亚洲区| 精品视频在线看| www..com久久爱| 久99久精品视频免费观看| 一区二区欧美国产| 国产精品污www在线观看| 欧美一二三在线| 欧美午夜不卡在线观看免费| 波多野结衣中文字幕一区二区三区| 男男gaygay亚洲| 亚洲第一会所有码转帖| 最新欧美精品一区二区三区| 久久久五月婷婷| 日韩欧美不卡在线观看视频| 欧美日韩一区二区在线视频| 国产丝袜在线精品| 91精品国产日韩91久久久久久| 欧亚一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 高清国产一区二区| 国产精品亚洲视频| 国产精品1区2区| 国产一区二区女| 美日韩一级片在线观看| 欧美a级一区二区| 日本视频一区二区三区| 视频一区欧美日韩| 一区二区三区日本| 国产精品私房写真福利视频| 欧美成人伊人久久综合网| 欧美一区二区播放| 日韩一区二区三| 欧美videos中文字幕| 日韩一级大片在线| 欧美成人a∨高清免费观看| 欧美mv和日韩mv的网站| 日韩精品一区二区三区在线| 91精品国产综合久久精品麻豆| 69堂国产成人免费视频| 欧美一区二区三区四区在线观看 | 国产精品入口麻豆九色| 国产欧美一区二区精品秋霞影院 | 国产欧美一区二区三区沐欲| 国产日韩欧美综合一区| 国产女同性恋一区二区| 中文字幕亚洲在| 亚洲日本丝袜连裤袜办公室| 亚洲精品大片www| 午夜欧美大尺度福利影院在线看| 日日夜夜精品免费视频| 老鸭窝一区二区久久精品| 精品一区二区久久| 波多野结衣在线一区| 在线观看三级视频欧美| 欧美乱熟臀69xxxxxx| 精品日韩99亚洲| 国产精品系列在线| 亚洲激情自拍视频| 亚洲综合在线视频| 免费观看在线色综合| 久久精品久久综合| 麻豆精品一区二区av白丝在线| 国产自产高清不卡| 韩国精品一区二区| aaa欧美日韩| 日韩欧美综合在线| 国产精品嫩草99a| 五月激情六月综合| 国产精品夜夜爽| 色老头久久综合| 日韩亚洲欧美高清| 国产精品久久久99| 日韩电影免费在线| 成人av在线影院| 7777精品久久久大香线蕉| 国产日韩精品一区二区三区| 一区二区三区四区高清精品免费观看 | 成人免费毛片嘿嘿连载视频| 在线免费观看日韩欧美| 精品国产一区二区精华| 一区二区在线电影| 国产自产高清不卡| 精品视频免费在线| 久久蜜桃av一区精品变态类天堂| 伊人色综合久久天天人手人婷| 久久国产精品99久久人人澡| 91蜜桃网址入口| 精品欧美一区二区三区精品久久 | 97aⅴ精品视频一二三区| 91精品蜜臀在线一区尤物| 国产精品二三区| 久久国产乱子精品免费女| 国产欧美综合色| 免费高清在线视频一区·| 91精彩视频在线| 久久精品视频在线免费观看| 肉丝袜脚交视频一区二区| 色综合久久天天| 国产精品午夜电影| 国产一区二区在线观看视频| 欧美情侣在线播放| 国产精品天美传媒| 久久超碰97中文字幕| 欧美三级电影在线观看| 国产精品二三区| 国产成人精品午夜视频免费| 精品国产乱码91久久久久久网站| 亚洲午夜久久久久久久久电影网| 国产精品2024| 欧美精品一区二区蜜臀亚洲| 日本欧美一区二区三区乱码| 欧美日韩国产一级二级| 亚洲精品第一国产综合野| 99久久精品免费| 国产精品美女久久久久aⅴ国产馆| 久久爱另类一区二区小说| 欧美一级午夜免费电影| 免费欧美在线视频| 91精品一区二区三区在线观看| 亚洲一二三区不卡| 欧美主播一区二区三区| 综合网在线视频| 99精品国产91久久久久久| 国产精品二三区| 91视频免费观看| 亚洲精选视频在线| 色呦呦国产精品| 亚洲免费av高清| 91福利资源站| 亚洲第一主播视频| 91 com成人网| 日本亚洲天堂网| 欧美大片一区二区三区| 精品一区二区综合| 亚洲国产日韩在线一区模特| 欧美午夜影院一区| 午夜视频一区在线观看| 91精品国产综合久久久久久| 日韩不卡一二三区| 日韩精品中文字幕一区二区三区| 日本欧美肥老太交大片| 91精品黄色片免费大全| 麻豆精品国产91久久久久久| 日韩欧美电影一区| 精品一区二区综合| 日本一区二区免费在线| 菠萝蜜视频在线观看一区| 亚洲欧洲成人精品av97| 在线观看一区二区精品视频| 日韩精彩视频在线观看| 日韩欧美国产一区二区在线播放 | 亚洲美女一区二区三区| 欧洲日韩一区二区三区| 日韩国产在线观看| 精品福利视频一区二区三区| 成人免费不卡视频| 亚洲一区电影777| 欧美一区二区高清| zzijzzij亚洲日本少妇熟睡| 免费观看日韩电影| 成人免费在线播放视频| 欧美大片一区二区| 欧美在线观看一二区| 国产精品一卡二| 日韩国产成人精品| 亚洲精品高清在线观看| 国产欧美日韩在线| 欧美一区三区四区| 日本伦理一区二区| 粉嫩一区二区三区在线看| 蜜臀av在线播放一区二区三区| 亚洲三级在线免费| 久久久www成人免费毛片麻豆 |