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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sd_sig.v

?? 已經(jīng)成功的FPGA 控制的SDRAM控制器代碼.只要修改你需要的寬度就可以了.
?? V
字號(hào):
// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------
// Copyright (c) 2001 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
//
// --------------------------------------------------------------------
// Revision History :
//---------------------------------------------------------------------
// Ver  | Author    | Mod. Date | Changes Made:
//---------------------------------------------------------------------
// 0.1  | tpf       | 11/23/98  | birth
// 1.0  | tpf       |  3/19/98  | Release
//---------------------------------------------------------------------

`timescale 1 ns /  100 ps

/*
This is the signal module for the synchronous DRAM controller.  It 
monitors the output of the state machine vectors and outputs the 
appropriate signals at the right time.
*/

module sd_sig(  add,
                wr_l,
                byte_en,
                term_l,
                sdram_cycle,
                state_cntr,
                sdram_mode_reg,
                sdram_cmnd,
                rst_l,                 
                clk,
                sd_add,
                sd_ba,
                sd_cs0_l,
                sd_cs1_l,
                sd_ras_l,
                sd_cas_l,
                sd_we_l,
                sd_cke,
                sd_dqm,
                ack_l);

//---------------------------------------------------------------------
// inputs

input  [24:0]	add;
input           wr_l;
input  [3:0]    byte_en;
input           term_l;
input  [3:0]    sdram_cycle;
input  [3:0]    state_cntr;
input  [11:0]   sdram_mode_reg;
input  [1:0]    sdram_cmnd;
input           rst_l;           
input           clk;
     
//---------------------------------------------------------------------
// outputs     
     
output [11:0]   sd_add;
output [1:0]    sd_ba;
output          sd_cs0_l;
output          sd_cs1_l;
output          sd_ras_l;
output          sd_cas_l;
output          sd_we_l;
output          sd_cke;
output [3:0]    sd_dqm;
output          ack_l;
				
//---------------------------------------------------------------------
// registers

reg    [11:0]   sd_add;
reg    [1:0]    sd_ba;
reg             sd_cs0_l;
reg             sd_cs1_l;
reg             sd_ras_l;
reg             sd_cas_l;
reg             sd_we_l;
reg             sd_cke;
reg    [3:0]    sd_dqm;
reg             ack_l;
reg             term_lcatch;
reg             term_ldly;
				
//---------------------------------------------------------------------
// equations

// this is for 32 bit wide array
// address bits 0-1 are not used

always @(posedge clk or negedge rst_l)
   if (!rst_l)
        sd_add <= #1 12'h400;                           // precharge
   else if (sdram_cycle[1] && (state_cntr == 4'b0) 
                           && (sdram_cmnd == 2'b11))
        sd_add <= #1 sdram_mode_reg;
   else if (sdram_cycle[2] && (state_cntr == 4'b0000))  // ras time
        sd_add <= #1 add[21:10];
   else if (sdram_cycle[2] && (state_cntr == 4'b0010))  // cas time
        sd_add <= #1 {4'hf,add[9:2]};
   else
        sd_add <= #1 12'h400;                           // precharge

// bank addresses
always @(posedge clk or negedge rst_l)
   if (!rst_l)
        sd_ba <= #1 2'b00;
   else if (sdram_cycle[2] && (state_cntr == 4'b0000))  // ras time
        sd_ba <= #1 add[23:22];
   else if (sdram_cycle[2] && (state_cntr == 4'b0010))  // cas time
        sd_ba <= #1 add[23:22];
   else
        sd_ba <= #1 2'b00;

// chip select 0
always @(posedge clk or negedge rst_l)
   if (!rst_l)
        sd_cs0_l <= #1 1'b1;
   else if (sdram_cycle[1] && (state_cntr == 4'b0000))  // cmd cycle
        sd_cs0_l <= #1 1'b0;
   else if (sdram_cycle[2] && (state_cntr == 4'b0000))  // ras time
        sd_cs0_l <=  #1 add[24];
   else if (sdram_cycle[2] && (state_cntr == 4'b0010))  // cas time
        sd_cs0_l <= #1 add[24];
   else if (sdram_cycle[3] &&
    (state_cntr == 4'b0000))                            // refresh time
        sd_cs0_l <= #1 1'b0;
   else if (term_lcatch && sdram_cycle[2] && !add[24])   // term cycle
        sd_cs0_l <= #1 1'b0;
   else
        sd_cs0_l <= #1 1'b1;

// chip select 1
always @(posedge clk or negedge rst_l)
   if (!rst_l)
        sd_cs1_l <= #1 1'b1;
   else if (sdram_cycle[1] && (state_cntr == 4'b0000))  // cmd cycle
        sd_cs1_l <= #1 1'b0;
   else if (sdram_cycle[2] && (state_cntr == 4'b0000))  // ras time
        sd_cs1_l <=  #1 ~add[24];
   else if (sdram_cycle[2] && (state_cntr == 4'b0010))  // cas time
        sd_cs1_l <= #1 ~add[24];
   else if (sdram_cycle[3] && (state_cntr == 4'b0000))  // refresh time
        sd_cs1_l <= #1 1'b0;
   else if (term_lcatch && sdram_cycle[2] && add[24])    // term cycle
        sd_cs1_l <= #1 1'b0;
   else
        sd_cs1_l <= #1 1'b1;

// ras
always @(posedge clk or negedge rst_l)
   if (!rst_l)      
        sd_ras_l <= #1 1'b1;
   else if ((sdram_cycle[1] && (state_cntr == 4'b0000))  // cmd cycle
      ||    (sdram_cycle[2] && (state_cntr == 4'b0000))  // ras time
      ||    (sdram_cycle[3] && (state_cntr == 4'b0000))) // refresh time
        sd_ras_l <= #1 1'b0;
   else
        sd_ras_l <= #1 1'b1;

// cas
always @(posedge clk or negedge rst_l)
   if (!rst_l)      
        sd_cas_l <= #1 1'b1;
   else if ((sdram_cycle[1] && (state_cntr == 4'b0) && sdram_cmnd[1])
      ||    (sdram_cycle[2] && (state_cntr == 4'b0010)) // cas time
      ||    (sdram_cycle[3] && (state_cntr == 4'b0000)))// refresh time
          sd_cas_l <= #1 1'b0;
   else
          sd_cas_l <= #1 1'b1;

// we
always @(posedge clk or negedge rst_l)
   if (!rst_l)      
        sd_we_l <= #1 1'b1;
   else if ((sdram_cycle[1] && (state_cntr == 4'b0) 
                            && sdram_cmnd[0])           // cmd cycle
      ||    (sdram_cycle[2] && (state_cntr == 4'b0010)
                            && !wr_l)                   // cas time
      ||    (sdram_cycle[2] && term_lcatch))             // terminate
        sd_we_l <= #1 1'b0;
   else
        sd_we_l <= #1 1'b1;

// clock enable
always @(posedge clk or negedge rst_l)      
   if (!rst_l)
        sd_cke <= #1 1'b0;
   else
        sd_cke <= #1 1'b1;
      
// data mask
always @(posedge clk or negedge rst_l)
   if (!rst_l)            
        sd_dqm <= #1 4'b0;
   else if (sdram_cycle[2] && (state_cntr  == 4'b0010))
        sd_dqm <= #1 byte_en;     
   else if (state_cntr == 4'b1010)                  // burst = 8
        sd_dqm <= #1 4'b0;
      
// acknowledge
always @(posedge clk or negedge rst_l)
   if (!rst_l)
        ack_l <= #1 1'b1;
   else if (sdram_cycle[2] && (state_cntr == 4'b0010) && !wr_l)
        ack_l <= #1 1'b0;      
// for cas latency 2 use state_cntr == 4'b0011
// for cas latency 3 use state_cntr == 4'b0100
   else if (sdram_cycle[2] && (state_cntr == 4'b0011) &&  wr_l) 
        ack_l <= #1 1'b0;
   else if ((state_cntr == 4'b1010) && !wr_l)
        ack_l <= #1 1'b1;
// change for burst size other than 8
// for cas latency 2 use state_cntr == 4'b1011
// for cas latency 3 use state_cntr == 4'b1100
   else if ((state_cntr == 4'b1011) &&  wr_l)
        ack_l <=  #1 1'b1;
// if the cycle terminates        
   else if (!sdram_cycle[2])    
      
        ack_l <= #1 1'b1;

// terminate catch -- only want 1 tick wide pulse
        
always @(posedge clk or negedge rst_l)
    if (!rst_l) 
        term_ldly   <= #1 1'b0;
    else 
        term_ldly   <= #1 ~term_l;   

always @(posedge clk or negedge rst_l)
    if (!rst_l) 
        term_lcatch <= #1 1'b0;
    else if (!term_l && !term_ldly)
        term_lcatch <= #1 1'b1;
    else
        term_lcatch <= #1 1'b0;    
      
endmodule      

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久婷婷国产综合精品青草| 日韩欧美一级片| 色域天天综合网| 欧美亚洲综合色| 欧美一区二区三区四区在线观看| 精品国产乱码久久久久久闺蜜| 国产午夜一区二区三区| 亚洲欧美一区二区在线观看| 亚洲高清视频在线| 国产美女一区二区三区| 色噜噜狠狠成人网p站| 日韩一区二区电影网| 国产精品美女久久久久高潮| 亚洲午夜三级在线| 国产精品18久久久久久久久久久久| 91日韩精品一区| 91精品国产丝袜白色高跟鞋| 亚洲国产高清aⅴ视频| 日日摸夜夜添夜夜添精品视频| 国产乱国产乱300精品| 欧洲av一区二区嗯嗯嗯啊| 久久美女高清视频| 五月激情丁香一区二区三区| 国产91丝袜在线18| 91精品国产欧美日韩| 一区二区三区日韩在线观看| 风间由美性色一区二区三区| 欧美一级夜夜爽| 亚洲午夜久久久| 97aⅴ精品视频一二三区| 久久久久久久久久看片| 三级在线观看一区二区| 91精品办公室少妇高潮对白| 国产日韩欧美激情| 久久99国产精品尤物| 日韩精品中文字幕在线一区| 亚洲精品视频自拍| 成人精品国产福利| 精品国产乱码久久| 蜜臀av性久久久久蜜臀aⅴ | 国产欧美精品一区二区三区四区| 五月天丁香久久| 欧美日韩国产在线观看| 一区二区三区四区亚洲| av在线一区二区| 久久久99久久精品欧美| 日本欧美在线看| 欧美日韩中文精品| 亚洲国产人成综合网站| 在线观看av不卡| 亚洲一区二区四区蜜桃| 欧洲日韩一区二区三区| 亚洲综合在线电影| 欧美亚洲图片小说| 亚洲h动漫在线| 欧美高清视频一二三区 | 在线免费精品视频| 一区二区三区影院| 欧美亚洲综合一区| 午夜精品免费在线| 日韩精品自拍偷拍| 国产成人av自拍| ㊣最新国产の精品bt伙计久久| 成人免费视频视频在线观看免费| 2017欧美狠狠色| 成人va在线观看| 一区二区三区小说| 日韩一区二区在线观看视频| 久久99精品一区二区三区三区| 精品国产污污免费网站入口| 国产成人精品午夜视频免费 | 亚洲成人资源网| 91精品国产综合久久久蜜臀图片| 亚洲mv在线观看| 精品人伦一区二区色婷婷| 国产一区欧美一区| 亚洲伦在线观看| 欧美高清www午色夜在线视频| 毛片一区二区三区| 中文字幕在线不卡| 欧美日韩国产经典色站一区二区三区| 久久精品二区亚洲w码| 成人免费在线视频| 欧美高清视频一二三区 | 日韩欧美自拍偷拍| 国产99久久精品| 国产在线视视频有精品| 亚洲三级在线免费观看| 日韩无一区二区| 波多野结衣在线aⅴ中文字幕不卡| 一区二区三区欧美| wwwwww.欧美系列| 色丁香久综合在线久综合在线观看| 午夜不卡av在线| 欧美韩国日本综合| 日韩欧美色综合| 在线看不卡av| 久久精品日韩一区二区三区| 欧美色男人天堂| 国产91精品露脸国语对白| 午夜国产精品影院在线观看| 国产精品国产三级国产有无不卡 | 91亚洲国产成人精品一区二区三| 亚洲午夜在线视频| 国产欧美精品一区aⅴ影院| 欧美久久一区二区| 色噜噜狠狠成人中文综合| 国产福利一区二区| 久久国产三级精品| 三级不卡在线观看| 亚洲第一av色| 亚洲私人影院在线观看| thepron国产精品| 国产精品2024| 精品在线免费观看| 奇米在线7777在线精品| 国产精品国产自产拍在线| 精品国产一区二区三区不卡| 欧美日韩一区三区四区| 色婷婷亚洲精品| 91视频在线看| 91亚洲精品乱码久久久久久蜜桃 | 成人av电影在线| 懂色中文一区二区在线播放| 国产网站一区二区| 日韩一卡二卡三卡| 欧美酷刑日本凌虐凌虐| 欧美日精品一区视频| 欧美午夜精品免费| 欧美日韩免费一区二区三区| 亚洲一二三四区不卡| 一区av在线播放| 亚洲成av人片一区二区梦乃| 亚洲综合一区二区精品导航| 亚洲色图色小说| 亚洲男人都懂的| 亚洲精品成人精品456| 一区二区三区中文字幕| 亚洲国产wwwccc36天堂| 日韩精品电影一区亚洲| 免费精品视频在线| 极品美女销魂一区二区三区免费| 狠狠色丁香久久婷婷综合_中| 久久精品国产精品亚洲红杏| 国产精品自在在线| 成人免费视频视频| 欧美无砖专区一中文字| 欧美日韩激情在线| 精品91自产拍在线观看一区| 国产精品网站一区| 一区二区不卡在线视频 午夜欧美不卡在 | 一区av在线播放| 日本不卡视频一二三区| 国产专区欧美精品| 成人av在线影院| 欧美色区777第一页| 精品区一区二区| 国产精品女主播在线观看| 一区二区三区欧美久久| 久久疯狂做爰流白浆xx| 成人av电影在线| 91.麻豆视频| 国产亲近乱来精品视频| 亚洲一区二区三区爽爽爽爽爽 | 国内外成人在线| 成人高清免费观看| 欧美日韩高清不卡| 久久先锋影音av| 樱花草国产18久久久久| 久久www免费人成看片高清| av一区二区三区在线| 日韩一级视频免费观看在线| 国产精品色在线| 久久99国产精品尤物| 色综合久久天天综合网| 亚洲精品一区二区三区福利| 亚洲精品乱码久久久久久日本蜜臀| 日本一不卡视频| 91丨porny丨首页| 欧美不卡在线视频| 亚洲乱码中文字幕| 国产精品一区二区免费不卡 | 精品蜜桃在线看| 一区二区三区自拍| 国产v综合v亚洲欧| 日韩一区二区三区四区| 亚洲与欧洲av电影| www.成人在线| 久久在线免费观看| 日韩影院免费视频| 91精品办公室少妇高潮对白| 欧美激情艳妇裸体舞| 经典三级在线一区| 538在线一区二区精品国产| 亚洲视频 欧洲视频| 成人av高清在线| 日本一区二区三区国色天香 | 国产精品一二三| 精品福利一区二区三区免费视频| 视频在线观看91|