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

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

?? hssdrc_access_manager.v

?? SDRAM 控制器 Verilog實現
?? V
?? 第 1 頁 / 共 2 頁
字號:
//
// Project      : High-Speed SDRAM Controller with adaptive bank management and command pipeline
// 
// Project Nick : HSSDRC
// 
// Version      : 1.0-beta 
//  
// Revision     : $Revision: 1.1 $ 
// 
// Date         : $Date: 2008-03-06 13:52:43 $ 
// 
// Workfile     : hssdrc_access_manager.v
// 
// Description  : sdram bank access manager
// 
// HSSDRC is licensed under MIT License
// 
// Copyright (c) 2007-2008, Denis V.Shekhalev (des00@opencores.org) 
// 
// Permission  is hereby granted, free of charge, to any person obtaining a copy of
// this  software  and  associated documentation files (the "Software"), to deal in
// the  Software  without  restriction,  including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the  Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
// 
// The  above  copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// 
// THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR  A  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT  HOLDERS  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN  AN  ACTION  OF  CONTRACT,  TORT  OR  OTHERWISE,  ARISING  FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//


// used command sequenceces 
// 1. {pre a -> act a -> rw a} -> {pre a -> act a -> rw a }
//                             -> {rw a }               
//                             -> {pre_all -> refr}
// 2. {pre a -> act a -> rw a} -> {pre b -> act b -> rw b }
//                             -> {act b -> rw b}
//                             -> {rw b }               
//                             -> {pre_all -> refr}
// 3. {pre_all -> refr} -> refr 
//                      -> act 
//
// just need to control : 
// +-------------------+-------------------------+--------------------------+
// | command           | sequental decoder part  | concurent/pipeline part  |
// +===================+=========================+==========================+
// | pre [0] ->        | act [0]                 |             act [1,2,3]  |
// | pre [0] ->        |                         |             pre [1,2,3]  |
// +-------------------+-------------------------+--------------------------+
// | pre [1] ->        | act [1]                 |             act [0,2,3]  |
// | pre [1] ->        |                         |             pre [0,2,3]  | 
// +-------------------+-------------------------+--------------------------+
// | pre [2] ->        | act [2]                 |             act [0,1,3]  |
// | pre [2] ->        |                         |             pre [0,1,3]  | 
// +-------------------+-------------------------+--------------------------+
// | pre [3] ->        | act [3]                 |             act [0,1,2]  |
// | pre [3] ->        |                         |             pre [0,1,2]  | 
// +-------------------+-------------------------+--------------------------+
// | act [0] ->        | write [0]               |                          |  
// | act [0] ->        |                         |    act [1,2,3]           |  
// | act [0] ->        |                         |  pre [0,1,2,3]           |  
// | act [0] ->        | read  [0]               |                          |    
// +-------------------+-------------------------+--------------------------+  
// | act [1] ->        | write [1]               |                          |  
// | act [1] ->        |                         |    act [0,2,3]           |  
// | act [1] ->        |                         |  pre [0,1,2,3]           |  
// | act [1] ->        | read  [1]               |                          |    
// +-------------------+-------------------------+--------------------------+  
// | act [2] ->        | write [2]               |                          |  
// | act [2] ->        |                         |    act [0,1,3]           |  
// | act [2] ->        |                         |  pre [0,1,2,3]           |  
// | act [2] ->        | read  [2]               |                          |    
// +-------------------+-------------------------+--------------------------+  
// | act [3] ->        | write [3]               |                          |  
// | act [3] ->        |                         |    act [0,1,2]           |  
// | act [3] ->        |                         |  pre [0,1,2,3]           |  
// | act [3] ->        | read  [3]               |                          |    
// +-------------------+-------------------------+--------------------------+
// | write/read [0] -> |                         |  pre [0,1,2,3]           |
// | write/read [0] -> |                         |    act [1,2,3]           |
// | write/read [0] -> |                         |  write[0,1,2,3]          |
// | write/read [0] -> |                         |  read [0,1,2,3]          |
// +-------------------+-------------------------+--------------------------+
// | write/read [1] -> |                         |  pre [0,1,2,3]           |
// | write/read [1] -> |                         |    act [0,2,3]           |
// | write/read [1] -> |                         |  write[0,1,2,3]          |
// | write/read [1] -> |                         |  read [0,1,2,3]          |
// +-------------------+-------------------------+--------------------------+
// | write/read [2] -> |                         |  pre [0,1,2,3]           |
// | write/read [2] -> |                         |    act [0,1,3]           |
// | write/read [2] -> |                         |  write[0,1,2,3]          |
// | write/read [2] -> |                         |  read [0,1,2,3]          |
// +-------------------+-------------------------+--------------------------+
// | write/read [3] -> |                         |  pre [0,1,2,3]           |
// | write/read [3] -> |                         |    act [0,1,2]           |
// | write/read [3] -> |                         |  write[0,1,2,3]          |
// | write/read [3] -> |                         |  read [0,1,2,3]          |
// +-------------------+-------------------------+--------------------------+
// | pre_all  ->       | refr                    |                          | 
// |                   |                         |                          |
// +-------------------+-------------------------+--------------------------+
// | refr     ->       |                         | refr                     |
// | refr     ->       |                         | act[0,1,2,3]             |
// +-------------------+-------------------------+--------------------------+
//
//
//
// +-----------------+---------------+-----------------+---------------------+-----------+
// | past command    | control tread | current command | contol time value   | note      |
// +=================+===============+=================+=====================+===========+
// | act   [0]       |   0           | pre [0]         | Tras                |           |
// | write [0]       |   1           |                 | Twr + Burst         |  1,2,3    |
// | read  [0]       |   2           |                 |       Burst         |  bank     |
// | pre   [1,2,3]   |               |                 | 0                   |   is      |
// | act   [1,2,3]   |               |                 | 0                   |  same     |
// | write [1,2,3]   |               |                 | 0                   |           |
// | read  [1,2,3]   |               |                 | 0                   |           |
// +-----------------+---------------+-----------------+---------------------+-----------+
// | pre   [0]       |   3 [1]_      | act [0]         | Trp                 |           |
// | refr            |   4           |                 | Trfc                |  1,2,3    |
// | act   [0]       |   5           |                 | Trc                 |           |  
// | act   [1,2,3]   |   6           |                 | Trrd                |  bank     |
// | pre   [1,2,3]   |               |                 | 0                   |   is      |
// | write [1,2,3]   |               |                 | 0                   |  same     |
// | read  [1,2,3]   |               |                 | 0                   |           |
// +-----------------+---------------+-----------------+---------------------+-----------+
// | act   [0]       |   7 [1]_      | write [0]       | Trcd                |  1,2,3    |
// | write [0,1,2,3] |   8           |                 | Burst               |  bank     |
// | read  [0,1,2,3] |   9           |                 | Burst + CL + 1(?bta)|   is      |
// |                 |               |                 |                     |  same     |
// +-----------------+---------------+-----------------+---------------------+-----------+
// | act   [0]       |   10 [1]_     | read  [0]       | Trcd                |  1,2,3    |
// | write [0,1,2,3] |   11          |                 | Burst + 1(?bta)     |  bank     |
// | read  [0,1,2,3] |   12          |                 | Burst               |   is      |
// |                 |               |                 |                     |  same     |
// +-----------------+---------------+-----------------+---------------------+-----------+
// | pre_all         |   13          | refr            | Trp                 |           |
// | refr            |   14          |                 | Trfc                |           |
// +-----------------+---------------+-----------------+---------------------+-----------+
//
//  ..[1] Trp (pre -> act) & Trcd (act -> read/write) contolled internal in decoder FSM 
//

`include "hssdrc_timescale.vh"

`include "hssdrc_define.vh"
`include "hssdrc_timing.vh"

module hssdrc_access_manager (
  clk               ,
  reset             ,
  sclr              ,
  //
  arb_pre_all       , 
  arb_refr          ,
  arb_pre           ,
  arb_act           ,
  arb_read          ,
  arb_write         ,
  arb_ba            ,
  arb_burst         ,
  //
  am_pre_all_enable ,
  am_refr_enable    ,
  am_pre_enable     ,
  am_act_enable     ,
  am_read_enable    ,
  am_write_enable  
  );

  input wire clk;
  input wire reset;
  input wire sclr;

  //--------------------------------------------------------------------------------------------------
  // interface from output arbiter 
  //-------------------------------------------------------------------------------------------------- 

  input logic         arb_pre_all  ;
  input logic         arb_refr     ;
  input logic         arb_pre      ;
  input logic         arb_act      ;
  input logic         arb_read     ;
  input logic         arb_write    ;
  input ba_t          arb_ba       ;
  input sdram_burst_t arb_burst    ;

  //--------------------------------------------------------------------------------------------------
  // outputs 
  //-------------------------------------------------------------------------------------------------- 

  output logic       am_pre_all_enable  ;
  output logic       am_refr_enable     ;
  output logic [0:3] am_pre_enable      ;
  output logic [0:3] am_act_enable      ;
  output logic [0:3] am_read_enable     ;
  output logic [0:3] am_write_enable    ;


  //-------------------------------------------------------------------------------------------------- 
  // all timings is select using shift register techique. 
  // enable is 1'b1 level on output. 
  // all shift is shift rigth. 
  // shift register command load pattern is 'b{{x{1'b0}}, {y{1'b1}}} 
  //-------------------------------------------------------------------------------------------------- 

  //-------------------------------------------------------------------------------------------------- 
  // take into acount load shift register cycle 
  //-------------------------------------------------------------------------------------------------- 

  localparam int cTras_m1     =    cTras - 1;
  localparam int cTrfc_m1     =    cTrfc - 1;
//  localparam int  cTrc_m1     =     cTrc - 1; tras + trp contolled  
//  localparam int cTrcd_m1     =    cTrcd - 1; fsm contolled 
  localparam int  cTwr_m1     =     cTwr - 1;
  localparam int  cTrp_m1     =     cTrp - 1; 
  localparam int cTrrd_m1     =    cTrrd - 1;
  localparam int cSdramBL_m1  = cSdramBL - 1;

  //-------------------------------------------------------------------------------------------------- 
  // tread 0/1/2 : Tras (act -> pre) & Twr + Burst (write -> pre) & Burst (read -> write) 
  // Twr + Burst & Burst control via one register becouse write/read has atomic access
  //--------------------------------------------------------------------------------------------------  

  localparam int cPreActEnableLength  = max(cTwr_m1 + cSdramBL_m1, cTras_m1); 
  localparam int cPreRwEnableLength   = max(cTwr_m1 + cSdramBL_m1, cTras_m1);

  typedef logic [cPreActEnableLength-1:0]   pre_act_enable_srl_t; 
  typedef logic [cPreRwEnableLength-1 :0]   pre_rw_enable_srl_t; 

  // to pre load patterns
  localparam pre_act_enable_srl_t cPreActEnableInitValue  = {cPreActEnableLength{1'b1}}; 
  localparam pre_act_enable_srl_t cPreActEnableActValue   = PercentRelation(cTras_m1, cPreActEnableLength);

  // to pre load patterns
  localparam pre_rw_enable_srl_t  cPreRwEnableInitValue   = {cPreRwEnableLength{1'b1}};

  // Remember : burst already has -1 offset (!!!!)
  function automatic pre_rw_enable_srl_t PreRwEnableWriteValue (input sdram_burst_t burst);     
    PreRwEnableWriteValue = PercentRelation (cTwr_m1 + burst, cPreRwEnableLength);    
  endfunction

  function automatic pre_rw_enable_srl_t PreRwEnableReadValue (input sdram_burst_t burst);     
    PreRwEnableReadValue = PercentRelation (burst, cPreRwEnableLength); 
  endfunction

  // each bank has own control registers 
  pre_act_enable_srl_t pre_act_enable_srl [0:3]; 
  pre_rw_enable_srl_t  pre_rw_enable_srl  [0:3]; 

  wire [0:3] pre_enable ;

  genvar p; 

  generate  
    
    for (p = 0; p < 4; p++) begin : pre_enable_generate

      always_ff @(posedge clk or posedge reset) begin : pre_enable_shift_register 

        if (reset)
          pre_act_enable_srl [p] <= cPreActEnableInitValue;          
        else if (sclr) 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩夫妻久久| 六月丁香婷婷久久| 91猫先生在线| 成人深夜福利app| 一区二区三区在线视频播放| 日韩精品资源二区在线| 国产精品亚洲午夜一区二区三区| 国产精品久久久久毛片软件| 91老师片黄在线观看| 日韩av网站在线观看| 亚洲国产精品久久一线不卡| 久久久久久久精| 日韩一区二区三区视频在线观看| 欧美一区二区在线不卡| 欧美久久婷婷综合色| 欧美美女网站色| 69久久夜色精品国产69蝌蚪网| 国产一区二区福利| 婷婷综合在线观看| 一区二区三区四区亚洲| 国产精品你懂的在线欣赏| 欧美日韩国产高清一区| 99re热这里只有精品视频| 国产精品一区二区不卡| 麻豆成人91精品二区三区| 亚洲一区二区在线播放相泽| 夜夜爽夜夜爽精品视频| 国产精品久久久久9999吃药| 久久久美女毛片| 欧美电影免费观看高清完整版在| 91视频国产资源| 91精品国产综合久久蜜臀| 一本一本久久a久久精品综合麻豆| 成人精品免费视频| 亚洲色图19p| 欧美精品一区二区三区久久久| 欧美日韩成人高清| 欧美丝袜自拍制服另类| 综合久久久久久| av在线播放成人| 亚洲国产另类精品专区| 美女脱光内衣内裤视频久久影院| 国产一区二区精品久久99| 97精品电影院| 欧美一级搡bbbb搡bbbb| 国产婷婷一区二区| 亚洲午夜久久久久中文字幕久| 免费观看30秒视频久久| 激情五月婷婷综合网| 国产精品综合网| 91在线看国产| 日韩一区二区三区三四区视频在线观看 | 日本一区二区在线不卡| 久久久亚洲国产美女国产盗摄 | 韩国av一区二区三区在线观看| 亚洲女女做受ⅹxx高潮| 六月丁香婷婷色狠狠久久| 成人永久免费视频| 欧美日韩一区不卡| 国产精品拍天天在线| 午夜久久久久久久久久一区二区| 国产伦精品一区二区三区在线观看| 色先锋aa成人| 久久亚洲春色中文字幕久久久| 一区二区三区精品在线观看| 国产一区欧美日韩| 精品视频全国免费看| 中文字幕精品在线不卡| 日韩成人一级片| 色综合久久九月婷婷色综合| 久久免费偷拍视频| 日韩高清不卡一区二区| 色呦呦网站一区| 欧美激情在线观看视频免费| 蜜桃精品在线观看| 欧美体内she精高潮| 91极品美女在线| 婷婷综合另类小说色区| 欧美三级电影精品| 一区二区视频在线| 亚洲精品在线观看视频| 97久久精品人人爽人人爽蜜臀| 欧美国产日产图区| 国产成人免费视频网站| 亚洲日韩欧美一区二区在线| 精品三级在线观看| 国产在线播放一区| 一区二区三区在线视频观看58| 欧美一区二区啪啪| 欧美一区二区日韩| 欧美一区二区三区人| 波多野结衣中文一区| 国产精品日产欧美久久久久| 黄色日韩三级电影| 日韩制服丝袜av| 亚洲欧美另类图片小说| 国产日韩精品一区| 久久久夜色精品亚洲| 欧美高清www午色夜在线视频| 国产精品 日产精品 欧美精品| 日韩电影免费在线| 无码av中文一区二区三区桃花岛| 中文字幕一区二区5566日韩| 亚洲国产激情av| 国产午夜精品久久久久久免费视| 欧美日韩视频在线观看一区二区三区| 91猫先生在线| 欧美日韩一级片网站| 91精品国产手机| 精品久久人人做人人爰| 欧美国产视频在线| 亚洲精品免费看| 天涯成人国产亚洲精品一区av| 亚洲成人午夜电影| 亚洲欧美一区二区不卡| 亚洲第一久久影院| 国产精品国产三级国产| 国产午夜精品久久久久久免费视 | www.日韩精品| 一本大道久久a久久精二百| 国产一区在线精品| 三级亚洲高清视频| 亚洲高清在线视频| 亚洲人精品一区| 国产精品久久久久影院| av电影天堂一区二区在线| 亚洲人精品午夜| 中文字幕色av一区二区三区| 4hu四虎永久在线影院成人| 老司机免费视频一区二区| 亚洲成人手机在线| 日本伊人午夜精品| 国产精品一区二区在线播放| 成人自拍视频在线| 成人av综合一区| 在线免费观看日本一区| 日本福利一区二区| 欧美精品乱人伦久久久久久| 精品少妇一区二区三区在线视频| 国产亚洲一区二区在线观看| 亚洲天堂2014| 蜜桃av噜噜一区| 丁香五精品蜜臀久久久久99网站| 9久草视频在线视频精品| 欧美性大战xxxxx久久久| 日韩欧美国产综合一区| 中文av一区二区| 日韩综合一区二区| 成人黄色av电影| 欧美一区二区三区在线看| 国产精品乱码妇女bbbb| 日本不卡中文字幕| 不卡视频免费播放| 欧美一区二区三区视频在线观看| 亚洲美女一区二区三区| 亚洲美女少妇撒尿| 一区二区三区免费在线观看| 亚洲夂夂婷婷色拍ww47| 捆绑调教美女网站视频一区| 久久国产精品色婷婷| 成人免费高清在线| 色综合久久中文综合久久97| 7777精品伊人久久久大香线蕉最新版| 国产婷婷色一区二区三区| 亚洲国产成人av网| 亚洲一区二区视频在线| 国产欧美日韩在线视频| 日韩电影一区二区三区| 不卡的看片网站| 国产欧美精品国产国产专区| 日韩精品成人一区二区三区| 91首页免费视频| 一区二区三区**美女毛片| 狠狠狠色丁香婷婷综合激情| 97aⅴ精品视频一二三区| 成人精品免费视频| 久久精品一区蜜桃臀影院| 一区二区三区欧美日韩| 青草av.久久免费一区| 91免费视频观看| 欧美国产激情一区二区三区蜜月| 国产精品久久免费看| 成人在线视频一区| 国产精品美女久久久久aⅴ| 青娱乐精品在线视频| 成人精品一区二区三区四区| 久久久激情视频| 成人在线视频一区二区| 国产精品视频在线看| 色综合一区二区| 亚洲精品国产一区二区精华液| 色成人在线视频| 午夜欧美一区二区三区在线播放| 91精品国产综合久久精品麻豆| 全国精品久久少妇| 国产欧美精品在线观看| 在线亚洲精品福利网址导航| 免费人成精品欧美精品| 久久久久97国产精华液好用吗| 国产999精品久久久久久|