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

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

?? command.v

?? SDRAM控制器Verilog員代碼
?? V
?? 第 1 頁 / 共 3 頁
字號:
//  Issue the appropriate command if the sdram is not currently busy   如果SDRAM空閑,則發(fā)出適當?shù)膬?nèi)部命令 
//包含一個用戶命令與刷新請求的仲裁器。如何仲裁請看本模塊開頭的介紹
                if ((REF_REQ == 1 | REFRESH == 1) & command_done == 0 & do_refresh == 0 & rp_done == 0         // Refresh若隱藏的刷新請求信號有效或REFRESH命令有效,且SDRAM空閑,rp_done指示沒有正在進行的讀寫及刷新命令,當前沒有do_reada、do_writea內(nèi)部命令發(fā)出,同時do_refresh未發(fā)出,則發(fā)出do_refresh(賦1)
                        & do_reada == 0 & do_writea == 0)                                                      
                        do_refresh <= 1;                                   
                else
                        do_refresh <= 0;                                                                       //否則為0
                       

                if ((READA == 1) & (command_done == 0) & (do_reada == 0) & (rp_done == 0) & (REF_REQ == 0))    // READA若READA命令有效,且SDRAM空閑,rp_done指示沒有正在進行的讀寫及刷新命令,刷新請求信號無效,同時do_reada未發(fā)出,則發(fā)出do_reada(賦1)。
                        do_reada <= 1;
                else
                        do_reada <= 0;                                                                         //否則為0
                    
                if ((WRITEA == 1) & (command_done == 0) & (do_writea == 0) & (rp_done == 0) & (REF_REQ == 0))  // WRITEA若WRITEA命令有效,且SDRAM空閑,rp_done指示沒有正在進行的讀寫及刷新命令,刷新請求信號無效,同時do_writea未發(fā)出,則發(fā)出do_writea(賦1),do_writea和do_writea1用在不同always塊中
                begin
                        do_writea <= 1;
                        do_writea1 <= 1;
                end
                else
                begin
                        do_writea <= 0;
                        do_writea1 <= 0;                                                                       //否則為0
                end
                if ((PRECHARGE == 1) & (command_done == 0) & (do_precharge == 0))                              // PRECHARGE若PRECHARGE命令有效,且SDRAM空閑,同時do_precharge未發(fā)出,則發(fā)出do_precharge,即do_precharge賦1,
                        do_precharge <= 1;
                else
                        do_precharge <= 0;                                                                     //否則為0
 
                if ((LOAD_MODE == 1) & (command_done == 0) & (do_load_mode == 0))                              // LOADMODE若LOAD_MODE命令有效,且SDRAM空閑,同時do_load_mode未發(fā)出,則發(fā)出do_load_mode,即do_load_mode賦1,
                        do_load_mode <= 1;
                else
                        do_load_mode <= 0;                                                                     //否則為0
                                               
// set command_delay shift register and command_done flag
// The command delay shift register is a timer that is used to ensure that
// the SDRAM devices have had sufficient time to finish the last command.
//設置命令延遲移位寄存器和SDRAM忙標志,命令延遲移位寄存器確保SDRAM有足夠時間完成上一個命令操作
//對讀寫及刷新命令,最大突發(fā)長度為8個字,因此需要8個時鐘周期完成讀寫操作,同時由于在讀寫命令之前,控制器首先要給出ACTIVATE命令,而ACTIVATE命令與讀寫命令之間延遲最大為3個時鐘周期,這樣就要求控制器至少在(8+1)+(3+2)=14個時鐘周期內(nèi)不能對用戶給出的新的讀寫刷新命令作出反應;但在9個時鐘周期后,控制器可對其他命令作出響應如precharge命令,從而可以終止讀寫操作。
//對其他命令設置為8+1=9個時鐘周期內(nèi)控制器不能響應新的命令。


                if ((do_refresh == 1) | (do_reada == 1) | (do_writea == 1) | (do_precharge == 1)
                     | (do_load_mode))                                                                         //如果有任何一個內(nèi)部命令被發(fā)出,則command_delay賦全1,command_done置位(表示SDRAM忙),rw_flag賦值為do_reada(若do_reada為1即讀操作命令有效,則rw_flag賦1;否則若do_reada為0,則rw_flag賦0,表明不是讀操作命令)
                begin
                        command_delay <= 8'b11111111;
                        command_done  <= 1;
                        rw_flag <= do_reada;                                                  

                end
                
                else                                                                                           //否則,命令延遲移位寄存器進行向右移位操作,最低位移出給command_done,最高位補0。在移位期間只要命令延遲移位寄存器不為0,command_done就始終為1(可保持9個時鐘周期為1),因此不會有新的內(nèi)部命令被發(fā)出,保證SDRAM有足夠時間完成上一個命令操作
                begin
                        command_done        <= command_delay[0];                // the command_delay shift operation
                        command_delay[6:0]  <= command_delay[7:1];                                
                        command_delay[7]    <= 0;
                end 
                
 
 // start additional timer that is used for the refresh, writea, reada commands  
 //用于refresh, writea, reada命令的附加的移位寄存器rp_shift,保證SDRAM有足夠時間完成上一次讀寫及刷新命令,因為這三個命令的執(zhí)行需要更多的時間,還須隱含執(zhí)行ACTIVATE命令            
                if (command_delay[0] == 0 & command_done == 1)                  //若命令延遲移位寄存器最低位為0且command_done == 1,則附加的移位寄存器rp_shift賦全1,rp_done 置位(表示讀寫忙)
                begin
                        rp_shift <= 4'b1111;
                        rp_done <= 1;
                end
                else                                                            //否則,附加的移位寄存器rp_shift進行右移位操作,最低位移出給rp_done,最高位補0。在移位期間只要附加的移位寄存器不為0,rp_done就始終為1(可保持5個時鐘周期為1),因此不會有新的讀、寫、刷新內(nèi)部命令被發(fā)出(但別的內(nèi)部命令可以發(fā)出,比如do_precharge命令,這條命令可以終止正在進行的讀寫及刷新命令)
                begin
                        rp_done         <= rp_shift[0];
                        rp_shift[2:0]   <= rp_shift[3:1];
                        rp_shift[3]     <= 0;
                end
        end
end


// logic that generates the OE signal for the data path module該always塊產(chǎn)生輸出使能信號OE,輸出給data path module
// For normal burst write the duration of OE is dependent on the configured burst length.在正常的突發(fā)寫入操作中,OE的持續(xù)時間取決于配置的REG1的burst length位段
// For page mode accesses(SC_PM=1) the OE signal is turned on at the start of the write command在頁寫入訪問模式中,OE在write命令開始時有效并且保持到檢測到PRECHARGE命令
// and is left on until a PRECHARGE(page burst terminate) is detected.
//(時鐘信號CLK上升沿)
always @(posedge CLK or negedge RESET_N)
begin
        if (RESET_N == 0)                                             //復位,清除oe_shift、oe1、oe2、OE
        begin
                oe_shift <= 0;
                oe1      <= 0;
                oe2      <= 0;
                OE       <= 0;
        end
        else
        begin
                if (SC_PM == 0)                                       //若SC_PM == 0,說明是正常的突發(fā)寫入操作,則
                begin
                        if (do_writea1 == 1)						  //若do_writea1 == 1,即內(nèi)部寫命令有效(首先會執(zhí)行ACTIVATE命令),則
                        begin                                         //  Set the shift register to the appropriate value based on burst length.根據(jù)SC_BL(burst length)的值設置輸出移位寄存器oe_shift
                                if (SC_BL == 1)                       //若burst length==1(突發(fā)寫入長度為1個字),則oe_shift取值為0,進行一次移位操作后會使oe1清0,即輸出使能信號能持續(xù)一個時鐘周期
                                        oe_shift <= 0;                
                                else if (SC_BL == 2)                  //若burst length==2(突發(fā)寫入長度為2個字),則oe_shift取值為1,進行兩次移位操作后會使oe1清0,即輸出使能信號能持續(xù)兩個時鐘周期
                                        oe_shift <= 1;
                                else if (SC_BL == 4)                  //若burst length==4(突發(fā)寫入長度為4個字),則oe_shift取值為7,進行四次移位操作后會使oe1清0,即輸出使能信號能持續(xù)四個時鐘周期
                                        oe_shift <= 7;
                                else if (SC_BL == 8)                  //若burst length==8(突發(fā)寫入長度為8個字),則oe_shift取值為127,進行八次移位操作后會使oe1清0,即輸出使能信號能持續(xù)八個時鐘周期           
                                        oe_shift <= 127;
                                oe1 <= 1;                             //oe1置位
                        end
                        else                                          //否則若do_writea1 != 1,即執(zhí)行完ACTIVATE命令,則
                        begin
                                oe_shift[6:0] <= oe_shift[7:1];       // Do the shift operation輸出移位寄存器oe_shift進行向右移位操作,最高位補0,最低位移進oe1,oe1移進oe2,oe2移進oe3,oe3移進oe4
                                oe_shift[7]   <= 0;
                                oe1  <= oe_shift[0];
                                oe2  <= oe1;
                                oe3  <= oe2;
                                oe4   <= oe3;
                                if (SC_RC == 2)                       //若SC_RC == 2,即RAS to CAS Delay為2個時鐘周期,則oe3(oe1延遲2個時鐘周期的結果)賦給OE,否則必有SC_RC == 3(因為根據(jù)SDRAM資料,RAS to CAS Delay即tRCD只能取3CLKs或2CLKs),即RAS to CAS Delay為3個時鐘周期,則oe4(oe1延遲3個時鐘周期的結果)賦給OE
                                        OE <= oe3;
                                else
                                        OE <= oe4;
                        end
                end
                else												  //否則若SC_PM == 1,說明是頁寫入訪問模式,則
                begin
                        if (do_writea1 == 1)                                    // OE generation for page mode accesses 若do_writea1 == 1,即內(nèi)部寫命令有效,則oe4置位
                                oe4   <= 1;
                        else if (do_precharge == 1 | do_reada == 1 | do_refresh)// 否則若內(nèi)部寫命令無效,而內(nèi)部命令do_precharge或do_reada或do_refresh有效,則oe4清除
                                oe4   <= 0;
                        OE <= oe4;                                              // oe4賦給OE
                end
                               
        end
end




// This always block tracks the time between the activate command and the
// subsequent WRITEA or READA command, RC.  The shift register is set using
// the configuration register setting SC_RC. The shift register is loaded with
// a single '1' with the position within the register dependent on SC_RC.
// When the '1' is shifted out of the register it sets so_rw which triggers
// a writea or reada command
//這個always塊監(jiān)測控制SDRAM執(zhí)行ACTIVATE命令和接下來的WRITEA or READA命令之間的時間間隔。當用戶輸入WRITEA or READA命令后,command module發(fā)出內(nèi)部命令do_reada == 1 | do_writea == 1,此時觸發(fā)SDRAM執(zhí)行ACTIVATE命令,然后等到do_rw==1時才觸發(fā)SDRAM執(zhí)行WRITEA or READA命令,等待的時間由SC_RC決定(必須保證CAS有效時才觸發(fā)SDRAM執(zhí)行WRITEA or READA命令),由本always塊監(jiān)測控制。
//讀寫移位寄存器用配置寄存器REG1中的SC_RC位段加載。讀寫移位寄存器中1加載的位置取決于SC_RC位段,當1移出讀寫移位寄存器時,do_rw被置位,該信號將觸發(fā)一個writea or reada命令
//(時鐘信號CLK上升沿)
always @(posedge CLK or negedge RESET_N)
begin
        if (RESET_N == 0)                                        //復位,清除rw_shift、do_rw
        begin
                rw_shift <= 0;
                do_rw    <= 0;
        end
        
        else
        begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷亚洲婷婷| 91精品国产综合久久久久久久久久| 亚洲一区二区精品视频| 精品美女在线播放| 在线观看不卡一区| 丁香五精品蜜臀久久久久99网站| 性做久久久久久久免费看| 国产精品国产自产拍高清av王其 | 欧美理论片在线| proumb性欧美在线观看| 极品少妇一区二区三区精品视频| 一区二区激情视频| 国产精品国产三级国产aⅴ中文| 欧美电影免费观看高清完整版在线| 色偷偷久久一区二区三区| 国产91精品露脸国语对白| 老司机精品视频在线| 五月天激情综合网| 一区二区三区日韩欧美精品| 中文字幕巨乱亚洲| 久久久久久久久久久电影| 欧美一区二区女人| 91麻豆精品国产自产在线观看一区| 色婷婷av久久久久久久| 99久久精品国产导航| 国产suv精品一区二区883| 国产精品中文字幕日韩精品| 国内精品不卡在线| 狠狠狠色丁香婷婷综合激情| 久久精品国产精品亚洲综合| 日本不卡的三区四区五区| 水野朝阳av一区二区三区| 亚洲国产精品天堂| 午夜电影一区二区| 日日夜夜精品视频天天综合网| 一区二区三区在线看| 一区二区在线观看视频| 亚洲一区二区四区蜜桃| 亚洲一区二区免费视频| 偷拍一区二区三区四区| 日本美女一区二区| 久久66热偷产精品| 国产一区二区三区蝌蚪| 狠狠色丁香九九婷婷综合五月| 国产在线精品国自产拍免费| 国产一区二区三区不卡在线观看| 国产剧情一区二区| 成人午夜激情影院| 99riav一区二区三区| 欧美亚洲免费在线一区| 91精品视频网| 久久综合网色—综合色88| 久久精品视频免费| 亚洲免费在线观看| 亚洲精品午夜久久久| 亚洲6080在线| 国产在线乱码一区二区三区| 床上的激情91.| 色偷偷久久人人79超碰人人澡| 在线免费观看日本一区| 3d动漫精品啪啪1区2区免费| 久久久久久毛片| 成人免费在线视频| 午夜成人免费视频| 国产精品一区二区三区99| 韩国av一区二区| eeuss鲁片一区二区三区在线看| 91福利视频网站| 日韩欧美高清在线| 18欧美亚洲精品| 日韩成人精品视频| 成人听书哪个软件好| 欧美日韩精品三区| 久久蜜臀精品av| 亚洲图片欧美综合| 国产黄人亚洲片| 欧美性生活影院| 26uuuu精品一区二区| 亚洲伦理在线免费看| 国内外成人在线| 在线日韩av片| 国产日产欧美一区二区视频| 亚洲午夜私人影院| 激情成人综合网| 欧美体内she精视频| 国产农村妇女毛片精品久久麻豆 | 欧美视频在线不卡| 久久久久久久久久美女| 亚洲永久精品大片| 国产一区二区美女诱惑| 欧美视频一二三区| 国产精品久久福利| 国产一区二区免费看| 欧美日韩国产高清一区二区三区| 国产精品毛片大码女人| 美女视频一区二区| 欧美三级韩国三级日本一级| 国产精品成人免费精品自在线观看| 青椒成人免费视频| 在线视频你懂得一区二区三区| 久久综合九色综合欧美98| 香蕉加勒比综合久久| 成人的网站免费观看| 久久综合九色综合欧美就去吻 | 99久久夜色精品国产网站| 精品99久久久久久| 三级亚洲高清视频| 在线日韩国产精品| 亚洲啪啪综合av一区二区三区| 国产精品亚洲а∨天堂免在线| 69堂精品视频| 婷婷丁香激情综合| 欧洲精品中文字幕| 亚洲精品高清在线| 99久久伊人久久99| 亚洲国产精品激情在线观看| 精彩视频一区二区三区| 91精品国产综合久久久蜜臀图片| 一区二区三区**美女毛片| 97se亚洲国产综合在线| 国产精品久久久久7777按摩| 成人午夜av影视| 国产精品免费看片| 成人国产精品免费观看动漫| 久久精品人人做| 国产精品456露脸| 久久久影视传媒| 国产精品中文字幕日韩精品 | 中文字幕中文字幕在线一区| 国产乱码精品一区二区三区av | 久久嫩草精品久久久精品| 久久精品国产网站| 欧美mv日韩mv国产网站| 久色婷婷小香蕉久久| 欧美电视剧免费观看| 久久99国内精品| 26uuu欧美| 国产成人精品aa毛片| 中文字幕第一页久久| 波多野洁衣一区| 亚洲欧美一区二区三区国产精品| 色偷偷成人一区二区三区91| 亚洲小说欧美激情另类| 欧美日韩国产电影| 免费观看在线综合| 精品成人佐山爱一区二区| 国产不卡高清在线观看视频| 国产精品蜜臀av| 色网站国产精品| 日本亚洲免费观看| 久久综合99re88久久爱| 丁香五精品蜜臀久久久久99网站| 亚洲人成在线观看一区二区| 欧亚一区二区三区| 国产精品视频麻豆| 色婷婷av一区二区| 美女性感视频久久| 中文字幕欧美三区| 欧美在线观看视频一区二区| 青青草成人在线观看| 亚洲美女免费视频| 欧美性猛片aaaaaaa做受| 日韩av一区二区三区| 久久精品欧美一区二区三区不卡| va亚洲va日韩不卡在线观看| 午夜精品久久久久久久久久久| 日韩欧美另类在线| 国产九九视频一区二区三区| 亚洲欧美经典视频| 欧美成人a视频| 色天天综合久久久久综合片| 久久国产综合精品| 亚洲色图视频免费播放| 欧美一级免费观看| jlzzjlzz亚洲女人18| 婷婷中文字幕综合| 日本一区二区三区久久久久久久久不| 一本色道久久加勒比精品 | 精品亚洲免费视频| 国产精品国产三级国产aⅴ原创| 欧美日本免费一区二区三区| 国产精品1024| 婷婷久久综合九色国产成人| 亚洲国产精品国自产拍av| 在线成人免费视频| 99久久婷婷国产精品综合| 七七婷婷婷婷精品国产| 国产精品青草久久| 欧美一区二区视频免费观看| 不卡视频免费播放| 久久精品国产精品亚洲综合| 一区二区三区在线播| 国产亚洲欧美一区在线观看| 欧美色视频一区| 99re成人在线| 成人性生交大合| 精品一二三四区| 喷水一区二区三区| 亚洲自拍另类综合| 综合久久综合久久|