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

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

?? sdr_ctrl.v

?? 可以用的通用SDRAM控制器,可以用在FPGA上,是SDR類型的
?? V
字號:
// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------
// Copyright (c) 2004 by Lattice Semiconductor Corporation
// --------------------------------------------------------------------
//
// Permission:
//
//   Lattice Semiconductor grants permission to use this code for use
//   in synthesis for any Lattice programmable logic product.  Other
//   use of this code, including the selling or duplication of any
//   portion is strictly prohibited.
//
// Disclaimer:
//
//   This VHDL or Verilog source code is intended as a design reference
//   which illustrates how these types of functions can be implemented.
//   It is the user's responsibility to verify their design for
//   consistency and functionality through the use of formal
//   verification methods.  Lattice Semiconductor provides no warranty
//   regarding the use or functionality of this code.
//
// --------------------------------------------------------------------
//
//                     Lattice Semiconductor Corporation
//                     5555 NE Moore Court
//                     Hillsboro, OR 97214
//                     U.S.A
//
//                     TEL: 1-800-Lattice (USA and Canada)
//                          408-826-6000 (other locations)
//
//                     web: http://www.latticesemi.com/
//                     email: techsupport@latticesemi.com
//
// --------------------------------------------------------------------
//
// This is the main control module of the SDR SDRAM controller
// reference design.
//
// --------------------------------------------------------------------
//
// Revision History :
// --------------------------------------------------------------------
//   Ver  :| Author            :| Mod. Date :| Changes Made:
//   V0.1 :|                   :| 06/29/04  :| Pre-Release
// --------------------------------------------------------------------

`timescale 1ns / 100ps

module sdr_ctrl(
  sys_CLK,
  sys_RESET,
  sys_R_Wn,
  sys_ADSn,
  sys_DLY_100US,
  sys_REF_REQ,
  sys_REF_ACK,
  sys_CYC_END,
  sys_INIT_DONE,
  iState,
  cState,
  clkCNT
);

`include "sdr_par.v"

//---------------------------------------------------------------------
// inputs
//
input        sys_CLK;
input        sys_RESET;
input        sys_R_Wn;
input        sys_ADSn;
input        sys_DLY_100US;
input        sys_REF_REQ;

//---------------------------------------------------------------------
// outputs
//
output       sys_REF_ACK;
output       sys_CYC_END;
output       sys_INIT_DONE;
output [3:0] iState;
output [3:0] cState;
output [3:0] clkCNT;

//---------------------------------------------------------------------
// registers
//
reg          sys_INIT_DONE;  // indicates sdr initialization is done

reg [3:0]    iState;        // INIT_FSM state variables
reg [3:0]    cState;        // CMD_FSM state variables
reg          sys_REF_ACK;
reg          sys_CYC_END;

reg [3:0]    clkCNT;
reg          syncResetClkCNT; // reset clkCNT to 0

//---------------------------------------------------------------------
// local definitions
//
`define endOf_tRP          clkCNT == NUM_CLK_tRP
`define endOf_tRFC         clkCNT == NUM_CLK_tRFC
`define endOf_tMRD         clkCNT == NUM_CLK_tMRD
`define endOf_tRCD         clkCNT == NUM_CLK_tRCD
`define endOf_Cas_Latency  clkCNT == NUM_CLK_CL
`define endOf_Read_Burst   clkCNT == NUM_CLK_READ - 1
`define endOf_Write_Burst  clkCNT == NUM_CLK_WRITE
`define endOf_tDAL         clkCNT == NUM_CLK_WAIT

//---------------------------------------------------------------------
// INIT_FSM state machine
//
always @(posedge sys_CLK or posedge sys_RESET)
  if (sys_RESET) begin
     iState <= #tDLY i_NOP;
  end else
    case (iState)
      i_NOP:   // wait for 100 us delay by checking sys_DLY_100US
               if (sys_DLY_100US) iState <= #tDLY i_PRE;
      i_PRE:   // precharge all
               iState <= #tDLY (NUM_CLK_tRP == 0) ? i_AR1 : i_tRP;
      i_tRP:   // wait until tRP satisfied
               if (`endOf_tRP) iState <= #tDLY i_AR1;
      i_AR1:   // auto referesh
               iState <= #tDLY (NUM_CLK_tRFC == 0) ? i_AR2 : i_tRFC1;
      i_tRFC1: // wait until tRFC satisfied
               if (`endOf_tRFC) iState <= #tDLY i_AR2;
      i_AR2:   // auto referesh
               iState <= #tDLY (NUM_CLK_tRFC == 0) ? i_MRS : i_tRFC2;
      i_tRFC2: // wait until tRFC satisfied
               if (`endOf_tRFC) iState <= #tDLY i_MRS;
      i_MRS:   // load mode register
               iState <= #tDLY (NUM_CLK_tMRD == 0) ? i_ready : i_tMRD;
      i_tMRD:  // wait until tMRD satisfied
               if (`endOf_tMRD) iState <= #tDLY i_ready;
      i_ready: // stay at this state for normal operation
               iState <= #tDLY i_ready;
      default:
               iState <= #tDLY i_NOP;
    endcase

//
// sys_INIT_DONE generation
//
always @(posedge sys_CLK or posedge sys_RESET)
  if (sys_RESET) begin
     sys_INIT_DONE <= #tDLY 0;
  end else
    case (iState)
      i_ready: sys_INIT_DONE <= #tDLY 1;
      default: sys_INIT_DONE <= #tDLY 0;
    endcase

//---------------------------------------------------------------------
// CMD_FSM state machine
//
always @(posedge sys_CLK or posedge sys_RESET)
  if (sys_RESET) begin
     cState <= #tDLY c_idle;
  end else
    case (cState)
      c_idle:   // wait until refresh request or addr strobe asserted
                if (sys_REF_REQ && sys_INIT_DONE) cState <= #tDLY c_AR;
                else if (!sys_ADSn && sys_INIT_DONE) cState <= #tDLY c_ACTIVE;
      c_ACTIVE: // assert row/bank addr
                if (NUM_CLK_tRCD == 0)
                   cState <= #tDLY (sys_R_Wn) ? c_READA : c_WRITEA;
                else cState <= #tDLY c_tRCD;
      c_tRCD:   // wait until tRCD satisfied
                if (`endOf_tRCD)
                   cState <= #tDLY (sys_R_Wn) ? c_READA : c_WRITEA;
      c_READA:  // assert col/bank addr for read with auto-precharge
                cState <= #tDLY c_cl;
      c_cl:     // CASn latency
                if (`endOf_Cas_Latency) cState <= #tDLY c_rdata;
      c_rdata:  // read cycle data phase
                if (`endOf_Read_Burst) cState <= #tDLY c_idle;
      c_WRITEA: // assert col/bank addr for write with auto-precharge
                cState <= #tDLY c_wdata;
      c_wdata:  // write cycle data phase
                if (`endOf_Write_Burst) cState <= #tDLY c_tDAL;
      c_tDAL:   // wait until (tWR + tRP) satisfied before issuing next
                // SDRAM ACTIVE command
                if (`endOf_tDAL) cState <= #tDLY c_idle;
      c_AR:     // auto-refresh
                cState <= #tDLY (NUM_CLK_tRFC == 0) ? c_idle : c_tRFC;
      c_tRFC:   // wait until tRFC satisfied
                if (`endOf_tRFC) cState <= #tDLY c_idle;
      default:
                cState <= #tDLY c_idle;
    endcase

//
// sys_REF_ACK generation
//
always @(posedge sys_CLK or posedge sys_RESET)
  if (sys_RESET) begin
     sys_REF_ACK <= #tDLY 0;
  end else
    case (cState)
      c_idle:
         if (sys_REF_REQ && sys_INIT_DONE) sys_REF_ACK <= #tDLY 1;
         else sys_REF_ACK <= #tDLY 0;
      c_AR:
         if (NUM_CLK_tRFC == 0) sys_REF_ACK <= #tDLY 0;
         else sys_REF_ACK <= #tDLY 1;
      default:
         sys_REF_ACK <= #tDLY 0;
    endcase

//
// sys_CYC_END generation
//
always @(posedge sys_CLK or posedge sys_RESET)
  if (sys_RESET) begin
     sys_CYC_END <= #tDLY 1;
  end else
    case (cState)
      c_idle:
         if (sys_REF_REQ && sys_INIT_DONE) sys_CYC_END <= #tDLY 1;
         else if (!sys_ADSn && sys_INIT_DONE) sys_CYC_END <= #tDLY 0;
         else sys_CYC_END <= #tDLY 1;
      c_ACTIVE,
      c_tRCD,
      c_READA,
      c_cl,
      c_WRITEA,
      c_wdata:
         sys_CYC_END <= #tDLY 0;
      c_rdata:
         sys_CYC_END <= #tDLY (`endOf_Read_Burst) ? 1 : 0;
      c_tDAL:
         sys_CYC_END <= #tDLY (`endOf_tDAL) ? 1 : 0;
      default:
         sys_CYC_END <= #tDLY 1;
    endcase

//---------------------------------------------------------------------
// Clock Counter
//
always @(posedge sys_CLK)
  if (syncResetClkCNT) clkCNT <= #tDLY 0;
  else clkCNT <= #tDLY clkCNT + 1;

//
// syncResetClkCNT generation
//
always @(iState or cState or clkCNT)
  case (iState)
    i_PRE:
         syncResetClkCNT <= #tDLY (NUM_CLK_tRP == 0) ? 1 : 0;
    i_AR1,
    i_AR2:
         syncResetClkCNT <= #tDLY (NUM_CLK_tRFC == 0) ? 1 : 0;
    i_NOP:
         syncResetClkCNT <= #tDLY 1;
    i_tRP:
         syncResetClkCNT <= #tDLY (`endOf_tRP) ? 1 : 0;
    i_tMRD:
         syncResetClkCNT <= #tDLY (`endOf_tMRD) ? 1 : 0;
    i_tRFC1,
    i_tRFC2:
         syncResetClkCNT <= #tDLY (`endOf_tRFC) ? 1 : 0;
    i_ready:
         case (cState)
           c_ACTIVE:
                syncResetClkCNT <= #tDLY (NUM_CLK_tRCD == 0) ? 1 : 0;
           c_idle:
                syncResetClkCNT <= #tDLY 1;
           c_tRCD:
                syncResetClkCNT <= #tDLY (`endOf_tRCD) ? 1 : 0;
           c_tRFC:
                syncResetClkCNT <= #tDLY (`endOf_tRFC) ? 1 : 0;
           c_cl:
                syncResetClkCNT <= #tDLY (`endOf_Cas_Latency) ? 1 : 0;
           c_rdata:
                syncResetClkCNT <= #tDLY (clkCNT == NUM_CLK_READ) ? 1 : 0;
           c_wdata:
                syncResetClkCNT <= #tDLY (`endOf_Write_Burst) ? 1 : 0;
           default:
                syncResetClkCNT <= #tDLY 0;
         endcase
    default:
         syncResetClkCNT <= #tDLY 0;
  endcase

endmodule






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产制服丝袜高跟| 亚洲最新视频在线播放| 亚洲女爱视频在线| 久久99国产乱子伦精品免费| 99久久免费视频.com| 日韩欧美中文字幕一区| 亚洲免费观看在线观看| 国产精品原创巨作av| 欧美精品视频www在线观看| 国产精品嫩草99a| 精品一区二区免费视频| 欧美日本国产视频| 最新久久zyz资源站| 久久99国产精品久久99| 91精品国产综合久久香蕉麻豆| 最新国产精品久久精品| 国产剧情一区二区三区| 精品久久一二三区| 日韩av在线发布| 欧美日韩精品一区二区三区蜜桃 | 色综合中文字幕| 国产农村妇女毛片精品久久麻豆| 日韩中文字幕一区二区三区| 91蝌蚪国产九色| 国产精品色哟哟网站| 国产伦精品一区二区三区免费| 欧美一区二区日韩一区二区| 午夜激情久久久| 欧美精品久久99久久在免费线 | 亚洲一区免费观看| 成人av网站在线| 亚洲国产电影在线观看| 国产成人精品亚洲777人妖| 精品日韩欧美一区二区| 麻豆精品视频在线| 日韩欧美第一区| 久久99在线观看| 久久综合九色综合97_久久久| 日韩国产精品久久久| 日韩久久精品一区| 激情综合网天天干| 久久精品夜色噜噜亚洲a∨| 国产成人夜色高潮福利影视| 国产亚洲精品bt天堂精选| 国产一二三精品| 国产免费观看久久| 一道本成人在线| 视频一区视频二区中文字幕| 这里只有精品免费| 国产在线精品不卡| 国产精品麻豆99久久久久久| 成人高清免费在线播放| 亚洲视频精选在线| 欧美久久久久久久久久| 久久精品二区亚洲w码| 国产日韩高清在线| 91日韩精品一区| 日本三级韩国三级欧美三级| 欧美电影免费观看高清完整版在| 国产宾馆实践打屁股91| 亚洲日本在线视频观看| 91麻豆精品国产91久久久久久| 韩国v欧美v亚洲v日本v| 1区2区3区国产精品| 91精品国产综合久久国产大片| 久久成人麻豆午夜电影| 亚洲欧美怡红院| 欧美一区二区久久| 成人免费av网站| 日本不卡不码高清免费观看| 国产亚洲成aⅴ人片在线观看 | 国产精品国产三级国产专播品爱网 | av不卡一区二区三区| 亚洲一区二区综合| 色偷偷一区二区三区| 激情文学综合网| 亚洲一区二区三区在线播放| 精品国产乱码久久久久久蜜臀| 99久久er热在这里只有精品15| 偷拍与自拍一区| 国产精品福利av| 欧美一区二区网站| 一本到不卡免费一区二区| 免费在线观看成人| 一区二区在线观看视频| 久久久久久亚洲综合影院红桃| 欧洲一区在线电影| 国产成人精品亚洲午夜麻豆| 日韩av中文在线观看| 亚洲美腿欧美偷拍| 中文字幕高清一区| 精品国产1区二区| 欧美一区二区在线看| 在线视频你懂得一区二区三区| 国产成人8x视频一区二区| 日韩成人午夜电影| 亚洲国产综合人成综合网站| 中文字幕高清不卡| 国产欧美一区二区在线| 日韩精品中文字幕一区二区三区| 色视频成人在线观看免| av成人老司机| 99久久精品国产网站| 国产精品一品二品| 精品亚洲成a人| 久久99精品网久久| 美女视频黄久久| 蜜臀久久久99精品久久久久久| 亚洲一区二区av电影| 亚洲免费观看视频| 国产精品成人网| 国产精品的网站| 日韩理论片一区二区| 亚洲欧美在线观看| 亚洲视频在线观看一区| 亚洲激情在线播放| 夜夜嗨av一区二区三区中文字幕| 一区在线观看视频| 国产精品久久久久影院老司| 国产精品免费视频观看| 国产精品国产三级国产普通话三级 | 国产综合色视频| 久久成人免费日本黄色| 韩国av一区二区三区| 国产在线精品一区二区三区不卡| 国产美女在线精品| 国产精品一卡二卡在线观看| 粉嫩一区二区三区在线看| 成人黄色软件下载| 欧美亚洲国产一区在线观看网站| 在线视频国产一区| 8x8x8国产精品| 国产丝袜欧美中文另类| 亚洲婷婷综合久久一本伊一区| 亚洲视频 欧洲视频| 亚洲一区二区三区四区的| 日本成人在线视频网站| 激情久久五月天| 成人综合激情网| 在线观看亚洲a| 日韩免费一区二区| 亚洲欧美综合色| 日韩二区在线观看| 国产一区二区三区在线观看免费| 成人网页在线观看| 91蜜桃在线免费视频| 欧美伦理视频网站| 久久精品欧美日韩| 亚洲一区二区三区激情| 久久国产婷婷国产香蕉| 91在线一区二区| 日韩一区二区三区三四区视频在线观看| 精品国产百合女同互慰| 综合婷婷亚洲小说| 国产在线精品一区二区不卡了 | 亚洲欧洲精品成人久久奇米网| 亚洲综合丁香婷婷六月香| 免费成人av资源网| 99re66热这里只有精品3直播| 欧美放荡的少妇| 国产精品夫妻自拍| 国产资源精品在线观看| 在线观看成人免费视频| 久久蜜桃香蕉精品一区二区三区| 亚洲国产aⅴ天堂久久| 国产精品亚洲成人| 欧美一区中文字幕| 亚洲激情六月丁香| 成人黄色av电影| 精品噜噜噜噜久久久久久久久试看| 一区二区三区精品| 成人黄色av网站在线| 欧美精品一区二区三区蜜臀| 亚洲成人动漫av| 91玉足脚交白嫩脚丫在线播放| 日韩精品中文字幕一区二区三区 | 久久爱另类一区二区小说| av电影在线观看不卡| 久久久久久久久岛国免费| 奇米影视7777精品一区二区| 91美女片黄在线| 国产精品国产三级国产aⅴ入口| 国内精品国产三级国产a久久| 91精品国产综合久久久蜜臀粉嫩 | 精品乱人伦小说| 五月天激情综合网| 欧美日韩一区二区在线观看视频 | 精品国产乱码久久久久久蜜臀 | 亚洲视频一二三| 99免费精品在线观看| 精品88久久久久88久久久| 免费在线视频一区| 欧美精品久久久久久久多人混战 | 国产精品麻豆99久久久久久| 国产一区二区不卡| 久久看人人爽人人| 国内精品免费**视频| 精品日韩99亚洲| 激情文学综合网| 久久久久久久久久电影|