本發(fā)明涉及nandflash控制器,具體涉及一種基于fpga的nandflash控制器。
背景技術(shù):
:近年來(lái)隨著云計(jì)算的高速發(fā)展,存儲(chǔ)設(shè)備作為云計(jì)算中不可缺少的部分,需求量越來(lái)越大。nandflash因其單位價(jià)格存儲(chǔ)密度大,由其構(gòu)成的ssd已成為云計(jì)算存儲(chǔ)設(shè)備中,最為常用的高速大容量存儲(chǔ)單元。利用fpga設(shè)計(jì)實(shí)現(xiàn)nandflash控制器,具有很好的可移植性,大大提高系統(tǒng)的靈活性,可方便快速的搭建nandflash存儲(chǔ)系統(tǒng)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明針對(duì)nandflash控制,利用fpga實(shí)現(xiàn)nandflash控制器,該控制器可方便的在fpga器件中進(jìn)行移植,大大提高系統(tǒng)的靈活性,可方便快速的搭建nandflash的存儲(chǔ)系統(tǒng)。本發(fā)明的技術(shù)方案是:一種基于fpga的nandflash控制器,包括nandflash芯片,還包括:配置寄存器組,以及對(duì)配置寄存器組進(jìn)行配置的控制接口;進(jìn)行時(shí)序操作的異步模式狀態(tài)機(jī)或同步模塊狀態(tài)機(jī);對(duì)異步模式狀態(tài)機(jī)、同步模式狀態(tài)機(jī)進(jìn)行切換的接口切換模塊;對(duì)數(shù)據(jù)進(jìn)行寫入或讀取的數(shù)據(jù)接口;對(duì)數(shù)據(jù)進(jìn)行暫存的ram芯片;將數(shù)據(jù)由ram存儲(chǔ)格式轉(zhuǎn)換為fifo模塊的ram與fifo轉(zhuǎn)換模塊;所述控制接口的輸出端與配置寄存器組的輸入端連接,配置寄存器組的輸出端分別與異步模式狀態(tài)機(jī)、同步模式狀態(tài)機(jī)的輸入端連接,異步模式狀態(tài)機(jī)、同步模式狀態(tài)機(jī)的輸出端分別與接口切換模塊的輸入端連接,接口切換模塊的輸出端與nandflash芯片連接;所述數(shù)據(jù)接口的輸出端與ram芯片輸入端連接,ram芯片的輸出端與ram與fifo轉(zhuǎn)換模塊的輸入端連接,ram與fifo轉(zhuǎn)換模塊的輸出端也接口切換模塊的輸入端連接。進(jìn)一步地,控制接口采用標(biāo)準(zhǔn)axi-lite接口。進(jìn)一步地,控制接口包括:第一控制接口,為讀寫使能信號(hào);第二控制接口,用于尋址寄存器;第三控制接口,用于配置寄存器。進(jìn)一步地,數(shù)據(jù)接口采用標(biāo)準(zhǔn)ram接口。進(jìn)一步地,數(shù)據(jù)接口包括:第一數(shù)據(jù)接口,為寫入數(shù)據(jù)包頭,標(biāo)志數(shù)據(jù)包起始位置;第二數(shù)據(jù)接口,為寫入數(shù)據(jù)包尾,標(biāo)志數(shù)據(jù)包結(jié)束位置;第三數(shù)據(jù)接口,為寫入數(shù)據(jù)有效信號(hào);第四數(shù)據(jù)接口,用于寫入數(shù)據(jù);第五數(shù)據(jù)接口,為寫入允許信號(hào);第六數(shù)據(jù)接口,為讀取數(shù)據(jù)包頭,標(biāo)志數(shù)據(jù)包起始位置;第七數(shù)據(jù)接口,為讀取數(shù)據(jù)包尾,標(biāo)志數(shù)據(jù)包結(jié)束位置;第八數(shù)據(jù)接口,為讀取數(shù)據(jù)有效信號(hào);第九數(shù)據(jù)接口,用于讀取數(shù)據(jù);第十?dāng)?shù)據(jù)接口,為讀取允許信號(hào)。進(jìn)一步地,nandflash芯片上設(shè)置nandflash端接口,所述nandflash端接口采用nofi2.0標(biāo)準(zhǔn)接口。進(jìn)一步地,nandflash端接口包括:第一nandflash端接口,為nandflash片選信號(hào);第二nandflash端接口,為地址使能信號(hào);第三nandflash端接口,為命令使能信號(hào);第四nandflash端接口,異步模式下為寫入使能信號(hào),同步模式下為clk時(shí)鐘信號(hào);第五nandflash端接口,異步模式下為讀取使能信號(hào),同步模式下為1為寫入,0為讀取;第六nandflash端接口,為數(shù)據(jù)輸入輸出接口;第七nandflash端接口,異步模式下無(wú)作用,同步模式下為數(shù)據(jù)選擇信號(hào)。進(jìn)一步地,配置寄存器組包括:第一寄存器,用于地址周期到數(shù)據(jù)周期的保持時(shí)間配置寄存器;第二寄存器,用于列選擇變換建立時(shí)間配置寄存器;第三寄存器,用于片選高電平保持時(shí)間配置寄存器;第四寄存器,用于片選保持時(shí)間配置寄存器;第五寄存器,用于片選建立時(shí)間配置寄存器;第六寄存器,用于數(shù)據(jù)保持時(shí)間配置寄存器;第七寄存器,用于數(shù)據(jù)建立時(shí)間配置寄存器;第八寄存器,用于setfeature指令忙時(shí)間配置寄存器;第九寄存器,用于接口切換時(shí)間配置寄存器;第十寄存器,用于數(shù)據(jù)輸出準(zhǔn)備時(shí)間配置寄存器;第十一寄存器,用于器件復(fù)位時(shí)間配置寄存器;第十二寄存器,用于命令或者地址周期到數(shù)據(jù)輸出保持時(shí)間配置寄存器;第十三寄存器,用于寫保護(hù)到命令周期時(shí)間配置寄存器;第十四寄存器,用于擦除時(shí)間配置寄存器;第十五寄存器,用于多plane擦除時(shí)間配置寄存器;第十六寄存器,用于多plane編程時(shí)間配置寄存器;第十七寄存器,用于多plane讀取時(shí)間配置寄存器;第十八寄存器,用于cache編程時(shí)間配置寄存器;第十九寄存器,用于寫入時(shí)間配置寄存器;第二十寄存器,用于讀取時(shí)間配置寄存器。本發(fā)明提供的基于fpga的nandflash控制器,各個(gè)模塊均分布于fpga內(nèi)部,采用fpga作為核心的控制單元,提高了系統(tǒng)的靈活性。該控制器遵循nofi2.0協(xié)議,兼容nandflash的異步與同步模式,可以靈活配置寄存器組,實(shí)現(xiàn)不同模式,不同速率以及不同nandflash型號(hào)之間的兼容性,靈活方便。該控制器設(shè)計(jì)精巧,技術(shù)先進(jìn),使用方便簡(jiǎn)單,具有廣闊的應(yīng)用前景。附圖說(shuō)明圖1是本發(fā)明具體實(shí)施例結(jié)構(gòu)示意圖。圖中,1-控制接口,2-配置寄存器組,3-異步模式狀態(tài)機(jī),4-同步模式狀態(tài)機(jī),5-接口切換模塊,6-nandflash芯片,7-數(shù)據(jù)接口,8-ram芯片,9-ram與fifo轉(zhuǎn)換模塊。具體實(shí)施方式下面結(jié)合附圖并通過(guò)具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)闡述,以下實(shí)施例是對(duì)本發(fā)明的解釋,而本發(fā)明并不局限于以下實(shí)施方式。如圖1所示,本發(fā)明提供的基于fpga的nandflash控制器,包括nandflash芯片6和配置寄存器組2,以及:對(duì)配置寄存器組2進(jìn)行配置的控制接口1;進(jìn)行時(shí)序操作的異步模式狀態(tài)機(jī)3或同步模塊狀態(tài)機(jī);對(duì)異步模式狀態(tài)機(jī)3、同步模式狀態(tài)機(jī)4進(jìn)行切換的接口切換模塊5;對(duì)數(shù)據(jù)進(jìn)行寫入或讀取的數(shù)據(jù)接口7;對(duì)數(shù)據(jù)進(jìn)行暫存的ram芯片8;將數(shù)據(jù)由ram存儲(chǔ)格式轉(zhuǎn)換為fifo模塊的ram與fifo轉(zhuǎn)換模塊9。控制接口1的輸出端與配置寄存器組2的輸入端連接,配置寄存器組2的輸出端分別與異步模式狀態(tài)機(jī)3、同步模式狀態(tài)機(jī)4的輸入端連接,異步模式狀態(tài)機(jī)3、同步模式狀態(tài)機(jī)4的輸出端分別與接口切換模塊5的輸入端連接,接口切換模塊5的輸出端與nandflash芯片6連接;數(shù)據(jù)接口7的輸出端與ram芯片8輸入端連接,ram芯片8的輸出端與ram與fifo轉(zhuǎn)換模塊9的輸入端連接,ram與fifo轉(zhuǎn)換模塊9的輸出端也接口切換模塊5的輸入端連接。具體實(shí)施時(shí),將控制接口1連接于系統(tǒng)的控制總線,數(shù)據(jù)接口7連接于系統(tǒng)的數(shù)據(jù)總線,通過(guò)控制接口1,進(jìn)行配置寄存器組2的配置,通過(guò)數(shù)據(jù)接口7進(jìn)行數(shù)據(jù)的寫入,寫入的數(shù)據(jù)在ram芯片8中暫存。當(dāng)配置完成的時(shí),若配置異步模式,則異步狀態(tài)機(jī)工作;若配置為同步模式,則同步狀態(tài)機(jī)工作。同步與異步之間的切換,由接口切換模塊5完成。ram與fifo轉(zhuǎn)接模塊9負(fù)責(zé)將數(shù)據(jù)由ram存儲(chǔ)格式轉(zhuǎn)換為fifo模式,方便異步或者同步狀態(tài)機(jī)使用。讀取時(shí)首先通過(guò)控制接口1,配置寄存器組2,將命令配置為讀取,時(shí)間參數(shù)配置成相應(yīng)器件的時(shí)間值。讀取時(shí)若配置為異步模式則啟動(dòng)異步模式狀態(tài)機(jī)3,若配置為同步模式則啟動(dòng)同步模式狀態(tài)機(jī)4,將nandflash芯片6中的數(shù)據(jù)讀取。讀取的數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)通道,暫存在ram芯片8中,待合適時(shí),由數(shù)據(jù)接口7送出。在本實(shí)施中,控制接口1采用標(biāo)準(zhǔn)axi-lite接口,使用人員也可根據(jù)需要采用其他接口??刂平涌?具體包括第一控制接口、第二控制接口和第三控制接口,如表1所示。表1控制接口1控制接口1接口名稱功能描述第一控制接口control_wr讀寫使能信號(hào),高電平寫入,低電平讀出第二控制接口control_addr[7:0]8位地址線,用于尋址寄存器第三控制接口control_data[63:0]64位寬數(shù)據(jù)接口7,用該數(shù)據(jù)配置寄存器數(shù)據(jù)接口7采用標(biāo)準(zhǔn)ram接口,數(shù)據(jù)接口7包括第一數(shù)據(jù)接口~第十?dāng)?shù)據(jù)接口,如表2所示。表2數(shù)據(jù)接口7數(shù)據(jù)接口7接口名稱功能描述第一數(shù)據(jù)接口wr_data_sop寫入數(shù)據(jù)包頭,標(biāo)志數(shù)據(jù)包起始位置第二數(shù)據(jù)接口wr_data_eop寫入數(shù)據(jù)包尾,標(biāo)志數(shù)據(jù)包結(jié)束位置第三數(shù)據(jù)接口wr_data_vaild寫入數(shù)據(jù)有效,該信號(hào)為1時(shí),寫入數(shù)據(jù)有效第四數(shù)據(jù)接口wr_data[63:0]64位寫入數(shù)據(jù)第五數(shù)據(jù)接口wr_data_rdy寫入允許信號(hào),該信號(hào)為1時(shí),準(zhǔn)許寫入第六數(shù)據(jù)接口rd_data_sop讀取數(shù)據(jù)包頭,標(biāo)志數(shù)據(jù)包起始位置第七數(shù)據(jù)接口rd_data_eop讀取數(shù)據(jù)包尾,標(biāo)志數(shù)據(jù)包結(jié)束位置第八數(shù)據(jù)接口rd_data_vaild讀取數(shù)據(jù)有效,該信號(hào)為1時(shí),讀取數(shù)據(jù)有效第九數(shù)據(jù)接口rd_data[63:0]64位讀取數(shù)據(jù)第十?dāng)?shù)據(jù)接口rd_data_rdy讀取允許信號(hào),該信號(hào)為1時(shí),準(zhǔn)許讀取nandflash芯片6上設(shè)置nandflash端接口,nandflash端接口采用nofi2.0標(biāo)準(zhǔn)接口,nandflash端接口包括第一nandflash端接口包括~第七nandflash端接口,如表3所示。表3nandflash端接口nandflash端接口接口名稱功能描述第一nandflash端接口nand_cenandflash片選信號(hào)第二nandflash端接口nand_ale地址使能信號(hào)第三nandflash端接口nand_cle命令使能信號(hào)第四nandflash端接口nand_wr_clk異步模式下為寫入使能信號(hào),同步模式下為clk時(shí)鐘信號(hào)第五nandflash端接口nand_rd_wr異步模式下為讀取使能信號(hào),同步模式下為1為寫入,0為讀取第六nandflash端接口nand_dq[7:0]數(shù)據(jù)輸入輸出接口第七nandflash端接口nand_dqs異步模式下無(wú)作用,同步模式下為數(shù)據(jù)選擇信號(hào)本控制器可通過(guò)靈活配置寄存器組2,兼容各個(gè)廠家的不同器件,在本具體實(shí)施例中,配置寄存器組2如表4所示。表4配置寄存器組2寄存器寄存器名稱功能描述第一寄存器tadl[7:0]地址周期到數(shù)據(jù)周期的保持時(shí)間配置寄存器第二寄存器tccs[7:0]列選擇變換建立時(shí)間配置寄存器第三寄存器tceh[7:0]片選高電平保持時(shí)間配置寄存器第四寄存器tch[7:0]片選保持時(shí)間配置寄存器第五寄存器tcs[7:0]片選建立時(shí)間配置寄存器第六寄存器tdh[7:0]數(shù)據(jù)保持時(shí)間配置寄存器第七寄存器tds[7:0]數(shù)據(jù)建立時(shí)間配置寄存器第八寄存器tfeat[7:0]setfeature指令忙時(shí)間配置寄存器第九寄存器titc[7:0]接口切換時(shí)間配置寄存器第十寄存器trr[7:0]數(shù)據(jù)輸出準(zhǔn)備時(shí)間配置寄存器第十一寄存器trst[7:0]器件復(fù)位時(shí)間配置寄存器第十二寄存器twhr[7:0]命令或者地址周期到數(shù)據(jù)輸出保持時(shí)間配置寄存器第十三寄存器tww[7:0]寫保護(hù)到命令周期時(shí)間配置寄存器第十四寄存器tbers[31:0]擦除時(shí)間配置寄存器第十五寄存器tplebsy[31:0]多plane擦除時(shí)間配置寄存器第十六寄存器tplpbsy[31:0]多plane編程時(shí)間配置寄存器第十七寄存器tplrbsy[31:0]多plane讀取時(shí)間配置寄存器第十八寄存器tpcbsy[31:0]cache編程時(shí)間配置寄存器第十九寄存器tprog[31:0]寫入時(shí)間配置寄存器第二十寄存器tr[31:0]讀取時(shí)間配置寄存器以上公開(kāi)的僅為本發(fā)明的優(yōu)選實(shí)施方式,但本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的沒(méi)有創(chuàng)造性的變化,以及在不脫離本發(fā)明原理前提下所作的若干改進(jìn)和潤(rùn)飾,都應(yīng)落在本發(fā)明的保護(hù)范圍內(nèi)。當(dāng)前第1頁(yè)12