本發(fā)明涉及eMMC存儲控制器領(lǐng)域,特別是涉及一種eMMC的控制方法及基于FPGA的eMMC控制器。
背景技術(shù):
eMMC(embed Multi Media Card,嵌入式多媒體卡)為MMC(Multi Media Card,多媒體卡)協(xié)會所訂立的內(nèi)嵌式存儲器標(biāo)準(zhǔn)格式。eMMC以其電路簡單,成本低,開發(fā)容易越來越受到對存儲容量有較高要求的電子產(chǎn)品的青睞。
現(xiàn)有技術(shù)中,在使用eMMC時,由CPU控制實(shí)現(xiàn)對eMMC的操作。由于CPU在執(zhí)行多個軟件控制時,通過串行的方式實(shí)現(xiàn),CPU無法實(shí)現(xiàn)對多片片eMMC的并行控制。如CPU總線掛接兩片eMMC,則由該CPU控制對兩片eMMC的操作時,需要采用串行的方式先控制一片eMMC實(shí)現(xiàn)操作,之后再控制另一片eMMC實(shí)現(xiàn)操作,而無法同時實(shí)現(xiàn)對兩片eMMC的控制操作。
因此,亟需一種能夠同時實(shí)現(xiàn)對多片eMMC控制的控制方案。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種eMMC的控制方法及基于FPGA的eMMC控制器,實(shí)現(xiàn)多片eMMC的并行控制,技術(shù)方案如下:
一種eMMC的控制方法,應(yīng)用于基于FPGA的eMMC控制器,所述eMMC控制器與N片eMMC相連,N為大于1的正整數(shù);
所述控制方法包括:
向所述N片eMMC并行發(fā)送操作指令;
并行接收所述N片eMMC響應(yīng)所述操作指令分別發(fā)送的反饋信息,所述反饋信息指示每片eMMC是否成功實(shí)現(xiàn)所述操作指令;
根據(jù)所述反饋信息確定未成功實(shí)現(xiàn)所述操作指令的eMMC,并向所述未成功實(shí)現(xiàn)所述操作指令的eMMC并行發(fā)送所述操作指令,直到所述N片eMMC都成功實(shí)現(xiàn)所述操作指令。
可選地,當(dāng)所述操作指令為讀取指令時,所述讀取指令攜帶所述每片eMMC的標(biāo)識和所述該標(biāo)識對應(yīng)的eMMC的讀取起始地址和讀取結(jié)束地址;
所述反饋信息指示所述每片eMMC向所述eMMC控制器反饋數(shù)據(jù);
相應(yīng)的,確定所述N片eMMC都成功實(shí)現(xiàn)所述操作指令之后,還包括:
接收所述每片eMMC依據(jù)與該eMMC對應(yīng)的反饋信息反饋的數(shù)據(jù),所述數(shù)據(jù)為所述讀取起始地址至所述讀取結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù);
將接收的所述每片eMMC反饋的數(shù)據(jù)緩存至與所述每片eMMC對應(yīng)的數(shù)據(jù)緩存器中;
判斷所述每個數(shù)據(jù)緩存器的緩存狀態(tài)是否均為非空狀態(tài);
當(dāng)判斷結(jié)果為是時,并行發(fā)送N個所述數(shù)據(jù)緩存器中的數(shù)據(jù)給用戶;
當(dāng)判斷結(jié)果為否時,監(jiān)測不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài),直到不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài)變?yōu)榉强諣顟B(tài),并行發(fā)送N個所述數(shù)據(jù)緩存器中的數(shù)據(jù)給用戶。
可選地,當(dāng)所述操作指令為寫入指令時,所述寫入指令攜帶所述每片eMMC的標(biāo)識和與所述標(biāo)識對應(yīng)的eMMC的寫入起始地址和寫入結(jié)束地址;
所述反饋信息指示所述每片eMMC是否成功接收所述寫入指令;
相應(yīng)的,確定所述N片eMMC都成功實(shí)現(xiàn)所述操作指令之后,還包括:
將待寫入的數(shù)據(jù)分割成N個數(shù)據(jù)包,每個數(shù)據(jù)包的數(shù)據(jù)量為每片eMMC每次可寫入的數(shù)據(jù)量;
將所述N個數(shù)據(jù)包分別緩存至N個數(shù)據(jù)緩存器中,所述N個數(shù)據(jù)緩存器與所述N片eMMC一一對應(yīng);
判斷所述N個數(shù)據(jù)包的總數(shù)據(jù)量是否小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量;
當(dāng)判斷結(jié)果為是時,將所述待寫入的數(shù)據(jù)中未被緩存至所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)作為新的待寫入數(shù)據(jù),并將所述新的待寫入數(shù)據(jù)分割成N個所述數(shù)據(jù)包,直到分割后的所述數(shù)據(jù)包的總數(shù)據(jù)量等于所述待寫入數(shù)據(jù)的數(shù)據(jù)量;
當(dāng)判斷結(jié)果為否時,將緩存在所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)包并行發(fā)送至與所述N個數(shù)據(jù)緩存器對應(yīng)的所述N片eMMC中,以使所述N片eMMC將數(shù)據(jù)包分別寫入與所述每片eMMC對應(yīng)的由寫入起始地址和寫入結(jié)束地址構(gòu)成的數(shù)據(jù)存儲空間中。
可選地,將緩存在所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)包并行發(fā)送至與所述N個數(shù)據(jù)緩存器對應(yīng)的N片eMMC中,包括:
對并行發(fā)送的所述數(shù)據(jù)包中的每個數(shù)據(jù)包進(jìn)行冗余校驗(yàn);
將所述冗余校驗(yàn)后的校驗(yàn)數(shù)據(jù)附在所述每個數(shù)據(jù)包的結(jié)尾;
將帶有校驗(yàn)數(shù)據(jù)的所述數(shù)據(jù)包發(fā)送至所述N片eMMC中。
可選地,所述操作指令為擦除指令,所述擦除指令攜帶所述每片eMMC的標(biāo)識和與所述標(biāo)識對應(yīng)的eMMC的擦除起始地址和擦除結(jié)束地址;
所述反饋信息指示所述每片eMMC是否成功擦除從所述擦除起始地到所述擦除結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù);
相應(yīng)的,確定所述N片eMMC都成功實(shí)現(xiàn)所述操作指令之后,還包括:
向用戶返回指示對所述N片eMMC擦除成功的信息。
一種基于FPGA的eMMC控制器,所述eMMC控制器與N片eMMC相連,N為大于1的正整數(shù);
所述eMMC控制器包括:
第一發(fā)送單元,用于向所述N片eMMC并行發(fā)送操作指令;
第一接收單元,用于并行接收所述N片eMMC響應(yīng)所述操作指令分別發(fā)送的反饋信息,所述反饋信息指示每片eMMC是否成功實(shí)現(xiàn)所述操作指令;
確定單元,用于根據(jù)所述反饋信息確定未成功實(shí)現(xiàn)所述操作指令的eMMC,并向所述未成功實(shí)現(xiàn)所述操作指令的eMMC并行發(fā)送所述操作指令,直到所述N片eMMC都成功實(shí)現(xiàn)所述操作指令。
可選地,當(dāng)所述操作指令為讀取指令時,所述讀取指令攜帶所述每片eMMC的標(biāo)識和與所述標(biāo)識對應(yīng)的eMMC的讀取起始地址和讀取結(jié)束地址;
所述反饋信息指示所述每片eMMC向所述eMMC控制器反饋數(shù)據(jù);
相應(yīng)的,還包括:
第二接收單元,用于確定所述N片eMMC都成功實(shí)現(xiàn)所述操作指令之后,接收所述每片eMMC依據(jù)與該eMMC對應(yīng)的反饋信息反饋的數(shù)據(jù),所述數(shù)據(jù)為所述讀取起始地址至所述讀取結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù);
第一緩存單元,用于將接收的所述每片eMMC反饋的數(shù)據(jù)緩存至與所述每片eMMC對應(yīng)的數(shù)據(jù)緩存器中;
第一判斷單元,用于判斷所述每個數(shù)據(jù)緩存器的緩存狀態(tài)是否均為非空狀態(tài);
第二發(fā)送單元,用于當(dāng)所述第一判斷單元判斷每個數(shù)據(jù)緩存器的緩存狀態(tài)均為非空狀態(tài)時,并行發(fā)送N個所述數(shù)據(jù)緩存器中的數(shù)據(jù)給用戶;
監(jiān)測單元,用于當(dāng)所述第一判斷單元判斷每個數(shù)據(jù)緩存器中的緩存狀態(tài)不均為非空狀態(tài)時,監(jiān)測不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài),直到不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài)變?yōu)榉强諣顟B(tài),并行發(fā)送N個所述數(shù)據(jù)緩存器中的數(shù)據(jù)給用戶。
可選地,當(dāng)所述操作指令為寫入指令時,所述寫入指令攜帶所述每片eMMC的標(biāo)識和與所述標(biāo)識對應(yīng)的eMMC的寫入起始地址和寫入結(jié)束地址;
所述反饋信息指示所述每片eMMC是否成功接收所述寫入指令;
相應(yīng)的,還包括:
第一分割單元,用于確定所述N片eMMC都成功實(shí)現(xiàn)所述操作指令之后,將待寫入的數(shù)據(jù)分割成N個數(shù)據(jù)包,每個數(shù)據(jù)包的數(shù)據(jù)量為每片eMMC每次可寫入的數(shù)據(jù)量;
第二緩存單元,用于將所述N個數(shù)據(jù)包分別緩存至N個數(shù)據(jù)緩存器中,所述N個數(shù)據(jù)緩存器與所述N片eMMC一一對應(yīng);
第二判斷單元,用于判斷所述N個數(shù)據(jù)包的總數(shù)據(jù)量是否小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量;
第二分割單元,用于當(dāng)所述第二判斷單元判斷所述N個數(shù)據(jù)包的總數(shù)據(jù)量小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量時,將所述待寫入的數(shù)據(jù)中未被緩存至所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)作為新的待寫入數(shù)據(jù),并將所述新的待寫入數(shù)據(jù)分割成N片數(shù)據(jù)包,直到分割后的所述數(shù)據(jù)包的總數(shù)據(jù)量等于所述待寫入數(shù)據(jù)的數(shù)據(jù)量;
第三發(fā)送單元,用于當(dāng)所述第二判斷單元判斷所述N個數(shù)據(jù)包的總數(shù)據(jù)量不小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量時,將緩存在所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)包并行發(fā)送至與所述N個數(shù)據(jù)緩存器對應(yīng)的所述N片eMMC中,以使所述N片eMMC將數(shù)據(jù)包分別寫入與所述每片eMMC對應(yīng)的由寫入起始地址和寫入結(jié)束地址構(gòu)成的數(shù)據(jù)存儲空間中。
可選地,所述第三發(fā)送單元,包括:
校驗(yàn)單元,用于對并行發(fā)送的所述數(shù)據(jù)包中的每個數(shù)據(jù)包進(jìn)行冗余校驗(yàn);
重組單元,用于將所述冗余校驗(yàn)后的校驗(yàn)數(shù)據(jù)附在所述每個數(shù)據(jù)包的結(jié)尾;
發(fā)送子單元,用于將帶有校驗(yàn)數(shù)據(jù)的所述數(shù)據(jù)包發(fā)送至所述N片eMMC中。
可選地,所述操作指令為擦除指令,所述擦除指令攜帶所述每片eMMC的標(biāo)識和與所述標(biāo)識對應(yīng)的eMMC的擦除起始地址和擦除結(jié)束地址;
所述反饋信息指示所述每片eMMC是否成功擦除從所述擦除起始地到所述擦除結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù);
相應(yīng)的,還包括:
第四發(fā)送單元,用于確定所述N片eMMC都成功實(shí)現(xiàn)所述操作指令之后,向用戶返回指示對所述N片eMMC擦除成功的信息。
本發(fā)明實(shí)施例所提供的技術(shù)方案,應(yīng)用于基于FPGA的eMMC控制器,該eMMC控制器與N片eMMC相連,由于FPGA是基于硬件編程語言實(shí)現(xiàn)的器件,可以實(shí)現(xiàn)硬件模塊的并行使用與控制,因此,本申請的eMMC控制器能夠同時實(shí)現(xiàn)對多片eMMC的控制。進(jìn)一步地,本申請的方案根據(jù)每片eMMC的反饋狀態(tài)實(shí)現(xiàn)了N片eMMC在實(shí)現(xiàn)所述控制操作時的同步性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例所提供的一種eMMC的控制方法的一種流程示意圖;
圖2為本發(fā)明實(shí)施例所提供的一種eMMC的控制方法的另一種流程示意圖;
圖3為本發(fā)明實(shí)施例所提供的一種eMMC的控制方法的另一種流程示意圖;
圖4為本發(fā)明實(shí)施例所提供的一種eMMC的控制方法的另一種流程示意圖;
圖5為本發(fā)明實(shí)施例所提供的一種eMMC的控制方法的另一種流程示意圖;
圖6為本發(fā)明實(shí)施例所提供的一種基于FPGA的eMMC控制器的一種結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例所提供的一種基于FPGA的eMMC控制器的另一種結(jié)構(gòu)示意圖;
圖8為本發(fā)明實(shí)施例所提供的一種基于FPGA的eMMC控制器的另一種結(jié)構(gòu)示意圖;
圖9為本發(fā)明實(shí)施例所提供的一種基于FPGA的eMMC控制器的另一種結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例提供一種eMMC的控制方法及基于FPGA的eMMC控制器,實(shí)現(xiàn)了對N片eMMC的并行控制。
請參閱圖1,圖1為本申請實(shí)施例提供的eMMC的控制方法的一種實(shí)現(xiàn)流程圖,所述控制方法包括:
步驟S101、向N片eMMC并行發(fā)送操作指令。
本實(shí)施例的控制方法應(yīng)用于基于FPGA的eMMC控制器,該eMMC控制器與N片eMMC相連,N為大于1的正整數(shù)。
可選地,所述操作指令為復(fù)位指令、雙電壓模式設(shè)置指令、標(biāo)識號設(shè)定指令、尋址地址設(shè)定指令、工作功率設(shè)定指令、復(fù)位引腳使能指令、數(shù)據(jù)接口設(shè)定指令、工作模式設(shè)定指令、擦除指令、讀取指令和寫入指令中的至少一種。
步驟S102、并行接收所述N片eMMC響應(yīng)所述操作指令分別發(fā)送的反饋信息,所述反饋信息指示每片eMMC是否成功實(shí)現(xiàn)所述操作指令。
依據(jù)不同的操作指令,本實(shí)施例中的實(shí)現(xiàn)操作指令包括接收操作指令或執(zhí)行操作指令兩種情況,即,反饋信息指示每片eMMC是否成功接收或執(zhí)行操作指令。
步驟S103、根據(jù)所述反饋信息確定未成功實(shí)現(xiàn)所述操作指令的eMMC,并向所述未成功實(shí)現(xiàn)所述操作指令的eMMC并行發(fā)送所述操作指令,直到所述N片eMMC都成功實(shí)現(xiàn)所述操作指令。
本發(fā)明所提供的技術(shù)方案,應(yīng)用于基于FPGA的eMMC控制器,該控制器與N片eMMC相連,由于FPGA是基于硬件編程語言實(shí)現(xiàn)的器件,可以實(shí)現(xiàn)硬件模塊的并行使用與控制,因此,本申請的控制器能夠同時實(shí)現(xiàn)對多片eMMC的控制。進(jìn)一步地,本申請的方案根據(jù)每片eMMC的反饋狀態(tài)實(shí)現(xiàn)了N片eMMC在實(shí)現(xiàn)所述控制操作時的同步性。
請參閱圖2,圖2為本申請實(shí)施例提供的eMMC的控制方法的另一種實(shí)現(xiàn)流程圖,該實(shí)施例實(shí)現(xiàn)的是對eMMC的初始化流程,所述控制方法包括:
步驟S201、向N片eMMC并行發(fā)送復(fù)位指令。
本實(shí)施例的控制方法應(yīng)用于基于FPGA的eMMC控制器,該eMMC控制器與N片eMMC相連,N為大于1的正整數(shù)。
步驟S202、并行接收所述N片eMMC響應(yīng)所述復(fù)位指令分別發(fā)送的狀態(tài)字,所述狀態(tài)字的值指示每片eMMC是否復(fù)位成功。
步驟S203、根據(jù)所述狀態(tài)字的值判斷是否有未成功復(fù)位的eMMC,若是,執(zhí)行步驟S204,否則,執(zhí)行步驟S205。
步驟S204、向所述未成功復(fù)位的eMMC并行發(fā)送復(fù)位指令,直到所述N片eMMC都成功執(zhí)行所述復(fù)位指令。
步驟S205、向所述N片eMMC并行發(fā)送雙電壓模式設(shè)置指令。
所述雙電壓模式設(shè)置指令用于設(shè)置每片eMMC的工作電壓兼容1.8V和3.3V。
步驟S206、并行接收所述N片eMMC響應(yīng)所述雙電壓模式設(shè)置指令分別發(fā)送的狀態(tài)信息,所述狀態(tài)信息指示每片eMMC是否成功配置雙電壓模式。
步驟S207、根據(jù)所述狀態(tài)信息判斷是否有未成功配置所述雙電壓模式的eMMC,若是,執(zhí)行步驟S208,否則,執(zhí)行步驟S209。
步驟S208、向所述未成功配置雙電壓模式的eMMC并行發(fā)送所述雙電壓模式設(shè)置指令,直到所述N片eMMC都成功配置所述雙電壓模式。
步驟S209、向所述N片eMMC并行發(fā)送高速工作模式設(shè)定指令,所述高速工作模式設(shè)定指令用于為所述N片eMMC設(shè)定高速工作模式。
eMMC在高速工作模式下的最大單片寫入帶寬為200MB/s。
步驟S210、并行接收所述N片eMMC響應(yīng)所述高速工作模式設(shè)定指令分別發(fā)送的反饋信息,所述反饋信息指示每片eMMC是否成功設(shè)定所述高速工作模式。
步驟S211、根據(jù)所述反饋信息判斷是否有未成功設(shè)定所述高速工作模式的eMMC,若是,執(zhí)行步驟S212,否則,結(jié)束流程。
步驟S212、向所述未成功設(shè)定所述高速工作模式的eMMC并行發(fā)送所述高速工作模式設(shè)定指令,直到所述N片eMMC都成功設(shè)定所述高速工作模式。
需要說明的是,在步驟S208與步驟S209之間還可以依次包括對所述N片eMMC設(shè)定統(tǒng)一標(biāo)識號、設(shè)定統(tǒng)一尋址地址、設(shè)定工作功率、設(shè)定復(fù)位引腳使能、設(shè)定數(shù)據(jù)接口的過程,且實(shí)現(xiàn)上述過程的指令依次為標(biāo)識號設(shè)定指令、尋址地址設(shè)定指令、工作功率設(shè)定指令、復(fù)位引腳使能指令、工作模式設(shè)定指令。對上述每一過程的執(zhí)行流程均可以參照上一實(shí)施例中步驟S101-步驟S103的實(shí)現(xiàn),鑒于流程執(zhí)行相似,此處不多加介紹。
本實(shí)施例的技術(shù)方案實(shí)現(xiàn)的是對N片eMMC的初始化流程,該初始化流程包括多個操作過程,對于每個操作過程,本實(shí)施例均實(shí)現(xiàn)了對N片eMMC的并行控制,并通過每片eMMC的反饋信息實(shí)現(xiàn)了N片eMMC在實(shí)現(xiàn)一操作指令后再實(shí)現(xiàn)另一操作指令,以此保證了N片eMMC實(shí)現(xiàn)操作指令的同步性。
在對所述N片eMMC完成初始化后,根據(jù)用戶的需求可以分別實(shí)現(xiàn)對所述N片eMMC的讀、寫、擦操作,以下分別進(jìn)行介紹:
請參閱圖3,圖3為本申請實(shí)施例提供的eMMC的控制方法的另一種實(shí)現(xiàn)流程圖,所述控制方法包括:
步驟S301、向所述N片eMMC并行發(fā)送讀取指令。
本實(shí)施例的控制方法應(yīng)用于基于FPGA的eMMC控制器。
所述讀取指令攜帶每片eMMC的標(biāo)識和與該標(biāo)識對應(yīng)的eMMC的讀取起始地址和讀取結(jié)束地址。
步驟S302、并行接收所述N片eMMC響應(yīng)所述讀取指令分別發(fā)送的反饋信息,所述反饋信息指示所述每片eMMC向所述eMMC控制器反饋數(shù)據(jù)。
步驟S303、根據(jù)所述反饋信息判斷是否有未成功接收所述讀取指令的eMMC,若是,執(zhí)行步驟S304,否則,執(zhí)行步驟S305。
步驟S304、向所述未成功接收讀取指令的eMMC并行發(fā)送所述讀取指令,直到所述N片eMMC都成功接收所述讀取指令。
步驟S305、接收所述每片eMMC依據(jù)與該eMMC對應(yīng)的反饋信息反饋的數(shù)據(jù)。
所述數(shù)據(jù)為所述讀取起始地址至所述讀取結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù)。
對于每片eMMC,當(dāng)成功接收到讀取指令后,將讀取起始地址至讀取結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù)發(fā)送給eMMC控制器。
步驟S306、將接收的所述每片eMMC反饋的數(shù)據(jù)緩存至與所述每片eMMC對應(yīng)的數(shù)據(jù)緩存器中。
由于不同的eMMC向eMMC控制器反饋數(shù)據(jù)的時間可能不同,為了在用戶側(cè)實(shí)現(xiàn)數(shù)據(jù)讀取的同步性,本實(shí)施例中在接收到每片eMMC反饋的數(shù)據(jù)包后,先將數(shù)據(jù)包緩存至與每片eMMC對應(yīng)的數(shù)據(jù)緩存器中。
由于各eMMC之間反饋數(shù)據(jù)的時間差不超過8192個時鐘周期,因此,將每個數(shù)據(jù)緩存器的深度設(shè)定為8192個位寬。
步驟S307、判斷每個數(shù)據(jù)緩存器的緩存狀態(tài)是否均為非空狀態(tài),若是,執(zhí)行步驟S308,否則,執(zhí)行步驟S309。
數(shù)據(jù)緩存器的非空狀態(tài)指示該數(shù)據(jù)緩存器中存儲有數(shù)據(jù)。
步驟S308、并行發(fā)送N個所述數(shù)據(jù)緩存器中的數(shù)據(jù)給用戶。
步驟S309、監(jiān)測不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài),直到不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài)變?yōu)榉强諣顟B(tài),并執(zhí)行步驟S308。
需要說明的是,當(dāng)某一eMMC對應(yīng)的讀取起始地址和讀取結(jié)束地址構(gòu)成的數(shù)據(jù)存儲空間中無數(shù)據(jù)時,該eMMC仍然會執(zhí)行讀取指令,只是向eMMC控制器反饋的數(shù)據(jù)為空數(shù)據(jù)包,當(dāng)數(shù)據(jù)存儲器中僅存儲有空數(shù)據(jù)包時,該數(shù)據(jù)存儲器的緩存狀態(tài)也為非空狀態(tài)。
本實(shí)施例的技術(shù)方案實(shí)現(xiàn)的是從N片eMMC讀數(shù)據(jù)的操作,具體地,當(dāng)N片eMMC成功接收讀取指令后,向eMMC控制器反饋數(shù)據(jù),由于不同eMMC反饋數(shù)據(jù)的時間不一定同步,因此,本實(shí)施例的方案通過eMMC控制器中的數(shù)據(jù)緩存器緩存eMMC反饋的數(shù)據(jù)包,并當(dāng)N個數(shù)據(jù)緩存器的緩存狀態(tài)均為非空狀態(tài)時,才向用戶并行發(fā)送數(shù)據(jù),以此實(shí)現(xiàn)了向用戶反饋數(shù)據(jù)的同步。
請參閱圖4,圖4為本申請實(shí)施例提供的eMMC的控制方法的另一種實(shí)現(xiàn)流程圖,所述控制方法包括:
步驟S401、向所述N片eMMC并行發(fā)送寫入指令,所述寫入指令攜帶每片eMMC的標(biāo)識和與該標(biāo)識對應(yīng)的eMMC的寫入起始地址和寫入結(jié)束地址。
本實(shí)施例的控制方法應(yīng)用于基于FPGA的eMMC控制器。
步驟S402、并行接收所述N片eMMC響應(yīng)所述寫入指令分別發(fā)送的反饋信息,所述反饋信息指示所述每片eMMC是否成功接收所述寫入指令。
步驟S403、根據(jù)所述反饋信息判斷是否有未成功接收所述寫入指令的eMMC,若是,執(zhí)行步驟S404,否則,執(zhí)行步驟S405。
步驟S404、向所述未成功接收寫入指令的的eMMC并行發(fā)送所述寫入指令,直到所述N片eMMC都成功接收所述寫入指令。
步驟S405、將待寫入的數(shù)據(jù)分割成N個數(shù)據(jù)包,每個數(shù)據(jù)包的數(shù)據(jù)量為每片eMMC每次可寫入的數(shù)據(jù)量。
由于每片eMMC每次寫入的數(shù)據(jù)大小為512B,因此,在將數(shù)據(jù)寫入eMMC之前,需要先將數(shù)據(jù)分割成N個數(shù)據(jù)大小為512B的數(shù)據(jù)包。
步驟S406、將所述N個數(shù)據(jù)包分別緩存至N個數(shù)據(jù)緩存器中。
為了保證寫入操作的同步性,將分割的N個數(shù)據(jù)包分別緩存至N個數(shù)據(jù)緩存器中,所述N個數(shù)據(jù)緩存器與所述N片eMMC一一對應(yīng)。
步驟S407、判斷N個數(shù)據(jù)包的總數(shù)據(jù)量是否小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量,當(dāng)判斷結(jié)果為是時,執(zhí)行步驟S408,否則,執(zhí)行步驟S409。
步驟S408、將所述待寫入的數(shù)據(jù)中未被緩存至所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)作為新的待寫入數(shù)據(jù),并對該新的待寫入數(shù)據(jù)分割成N個數(shù)據(jù)包,直到將所有的待寫入數(shù)據(jù)分割完,并執(zhí)行步驟S409。
需要說明的是,當(dāng)新的待寫入數(shù)據(jù)的數(shù)據(jù)量不能表示為N*512B的整數(shù)倍時,差的數(shù)據(jù)量用0補(bǔ)充。如,新的待寫入數(shù)據(jù)的數(shù)據(jù)量為(N-1)*512B,差的數(shù)量為512B,此時差的512B的數(shù)據(jù)用0補(bǔ)充。
步驟S409、將緩存在所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)包并行發(fā)送至與所述N個數(shù)據(jù)緩存器對應(yīng)的N片eMMC中,以使所述N片eMMC將數(shù)據(jù)包分別寫入與每片eMMC對應(yīng)的由寫入起始地址和寫入結(jié)束地址構(gòu)成的數(shù)據(jù)存儲空間中。
可選的,為了及時可靠地將數(shù)據(jù)寫入eMMC中,將緩存在所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)包并行發(fā)送至與所述N個數(shù)據(jù)緩存器對應(yīng)的N片eMMC中,包括:
對并行發(fā)送的所述數(shù)據(jù)包中的每個數(shù)據(jù)包進(jìn)行冗余校驗(yàn);
將冗余校驗(yàn)后的校驗(yàn)數(shù)據(jù)附在所述每個數(shù)據(jù)包的結(jié)尾;
將帶有校驗(yàn)數(shù)據(jù)的數(shù)據(jù)包發(fā)送至所述N片eMMC中。
本實(shí)施例的技術(shù)方案實(shí)現(xiàn)的是對N片eMMC寫入數(shù)據(jù)的操作,具體地,當(dāng)反饋信息指示N片eMMC成功接收寫入指令后,對待寫入數(shù)據(jù)進(jìn)行分割,每次分割出N個數(shù)據(jù)包,每個數(shù)據(jù)包的數(shù)據(jù)量為每片eMMC每次可寫入的數(shù)據(jù)量,為了實(shí)現(xiàn)寫入數(shù)據(jù)操作的同步性,將分割出的N個數(shù)據(jù)包分別緩存至與N片eMMC對應(yīng)的N個數(shù)據(jù)緩存器中,并將N個數(shù)據(jù)緩存器中的數(shù)據(jù)發(fā)給用戶。
請參閱圖5,圖5為本申請實(shí)施例提供的eMMC的控制方法的另一種實(shí)現(xiàn)流程圖,所述控制方法包括:
步驟S501、向所述N片eMMC并行發(fā)送擦除指令,所述擦除指令攜帶每片eMMC的標(biāo)識和與該標(biāo)識對應(yīng)的eMMC的擦除起始地址和擦除結(jié)束地址。
本實(shí)施例的控制方法應(yīng)用于基于FPGA的eMMC控制器。
步驟S502、并行接收所述N片eMMC響應(yīng)所述擦除指令分別發(fā)送的反饋信息,所述反饋信息指示所述每片eMMC是否成功擦除從所述擦除起始地到所述擦除結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù)。
步驟S503、根據(jù)所述反饋信息判斷是否有未成功擦除的eMMC,若是,執(zhí)行步驟S504,否則,執(zhí)行步驟S505。
步驟S504、向所述未成功執(zhí)行所述擦除指令的eMMC并行發(fā)送所述擦除指令,直到所述N片eMMC都成功執(zhí)行所述擦除指令,并執(zhí)行步驟S505。
步驟S505、向用戶返回指示對所述N片eMMC擦除成功的信息。
本實(shí)施例的技術(shù)方案實(shí)現(xiàn)的是對N片eMMC擦除數(shù)據(jù)的操作,具體地,通過反饋信息指示N片eMMC是否成功執(zhí)行擦除指令,若否,則繼續(xù)向未成功執(zhí)行所述擦除指令的eMMC并行發(fā)送所述擦除指令,直到N片eMMC都成功執(zhí)行所述擦除指令,而后向用戶返回指示對N片eMMC擦除成功的信息,以此實(shí)現(xiàn)了擦除操作的同步。
下面對本申請實(shí)施例提供的基于FPGA的eMMC控制器進(jìn)行描述,下文描述的eMMC控制器與上文描述的eMMC的控制方法可相互對應(yīng)參照。
請參閱圖6,圖6為本申請實(shí)施例提供的基于FPGA的eMMC控制器的一種實(shí)現(xiàn)結(jié)構(gòu)示意圖,所述eMMC控制器與N片eMMC相連,N為大于1的正整數(shù),所述eMMC控制器包括:
第一發(fā)送單元610,用于向所述N片eMMC并行發(fā)送操作指令。
可選地,所述操作指令為復(fù)位指令、雙電壓模式設(shè)置指令、標(biāo)識號設(shè)定指令、尋址地址設(shè)定指令、工作功率設(shè)定指令、復(fù)位引腳使能指令、數(shù)據(jù)接口設(shè)定指令、工作模式設(shè)定指令、擦除指令、讀取指令和寫入指令中的至少一種。
第一接收單元620,用于并行接收所述N片eMMC響應(yīng)所述操作指令分別發(fā)送的反饋信息,所述反饋信息指示每片eMMC是否成功實(shí)現(xiàn)所述操作指令。
確定單元630,用于根據(jù)所述反饋信息確定未成功實(shí)現(xiàn)所述操作指令的eMMC,并向所述未成功實(shí)現(xiàn)所述操作指令的eMMC并行發(fā)送所述操作指令,直到所述N片eMMC都成功實(shí)現(xiàn)所述操作指令。
本發(fā)明所提供的技術(shù)方案,應(yīng)用于基于FPGA的eMMC控制器,該控制器與N片eMMC相連,由于FPGA是基于硬件編程語言實(shí)現(xiàn)的器件,可以實(shí)現(xiàn)硬件模塊的并行使用與控制,因此,本申請的eMMC控制器能夠同時實(shí)現(xiàn)對多片eMMC的控制。進(jìn)一步地,本申請的方案根據(jù)每片eMMC的反饋狀態(tài)實(shí)現(xiàn)了N片eMMC在實(shí)現(xiàn)所述控制操作時的同步性。
請參閱圖7,圖7為本申請實(shí)施例提供的基于FPGA的eMMC控制器的另一種實(shí)現(xiàn)結(jié)構(gòu)示意圖,該eMMC控制器包括:
第一發(fā)送單元710、用于向N片eMMC并行發(fā)送讀取指令。
所述讀取指令攜帶每片eMMC的標(biāo)識和與該標(biāo)識對應(yīng)的eMMC的讀取起始地址和讀取結(jié)束地址。
本實(shí)施例的eMMC控制器與N片eMMC相連,N為大于1的正整數(shù)。
第一接收單元720、用于并行接收所述N片eMMC響應(yīng)所述讀取指令分別發(fā)送的反饋信息,所述反饋信息指示所述每片eMMC向所述eMMC控制器反饋數(shù)據(jù)。
第三判斷單元730、用于根據(jù)所述反饋信息判斷是否有未成功接收所述讀取指令的eMMC。
確定單元740、用于當(dāng)所述第三判斷單元730根據(jù)所述反饋信息判斷有未成功接收所述讀取指令的eMMC時,確定未成功接收所述讀取指令的eMMC,并向所述未成功接收讀取指令的的eMMC并行發(fā)送所述讀取指令,直到所述N片eMMC都成功接收所述讀取指令。
第二接收單元750、用于當(dāng)所述第三判斷單元730根據(jù)所述反饋信息判斷沒有未成功接收所述讀取指令的eMMC時,接收所述每片eMMC依據(jù)與該eMMC對應(yīng)的反饋信息反饋的數(shù)據(jù)。
所述數(shù)據(jù)為所述讀取起始地址至所述讀取結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù)。
第一緩存單元760、用于將接收的所述每片eMMC反饋的數(shù)據(jù)緩存至與所述每片eMMC對應(yīng)的數(shù)據(jù)緩存器中。
第一判斷單元770、用于判斷每個數(shù)據(jù)緩存器的緩存狀態(tài)是否均為非空狀態(tài)。
第二發(fā)送單元780、用于當(dāng)所述第一判斷單元770判斷每個數(shù)據(jù)緩存器中的緩存狀態(tài)均為非空狀態(tài)時,并行發(fā)送N個所述數(shù)據(jù)緩存器中的數(shù)據(jù)給用戶。
監(jiān)測單元790、用于當(dāng)所述第一判斷單元770判斷每個數(shù)據(jù)緩存器中的緩存狀態(tài)不均為非空狀態(tài)時,監(jiān)測不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài),直到不是非空狀態(tài)的數(shù)據(jù)緩存器的緩存狀態(tài)變?yōu)榉强諣顟B(tài),并并行發(fā)送N個所述數(shù)據(jù)緩存器中的數(shù)據(jù)給用戶。
本實(shí)施例的技術(shù)方案實(shí)現(xiàn)的是從N片eMMC讀數(shù)據(jù)的操作,具體地,當(dāng)N片eMMC成功接收讀取指令后,向eMMC控制器反饋數(shù)據(jù),由于不同eMMC反饋數(shù)據(jù)的時間不一定同步,因此,本實(shí)施例的方案通過eMMC控制器中的數(shù)據(jù)緩存器緩存eMMC反饋的數(shù)據(jù)包,并當(dāng)N個數(shù)據(jù)緩存器的緩存狀態(tài)均為非空狀態(tài)時,才向用戶并行發(fā)送數(shù)據(jù),以此實(shí)現(xiàn)了向用戶反饋數(shù)據(jù)的同步。
請參閱圖8,圖8為本申請實(shí)施例提供的基于FPGA的eMMC控制器的另一種實(shí)現(xiàn)結(jié)構(gòu)示意圖,該eMMC控制器包括:
第一發(fā)送單元810、用于向N片eMMC并行發(fā)送寫入指令,所述寫入指令攜帶每片eMMC的標(biāo)識和與該標(biāo)識對應(yīng)的eMMC的寫入起始地址和寫入結(jié)束地址。
本實(shí)施例的eMMC控制器與N片eMMC相連,N為大于1的正整數(shù)。
第一接收單元820、用于并行接收所述N片eMMC響應(yīng)所述寫入指令分別發(fā)送的反饋信息,所述反饋信息指示所述每片eMMC是否成功接收所述寫入指令。
第三判斷單元830、用于根據(jù)所述反饋信息判斷是否有未成功接收所述寫入指令的eMMC。
確定單元840、用于當(dāng)所述第三判斷單元830根據(jù)所述反饋信息判斷有未成功接收所述寫入指令的eMMC時,向所述未成功接收寫入指令的eMMC并行發(fā)送所述寫入指令,直到所述N片eMMC都成功接收所述寫入指令。
第一分割單元850、用于當(dāng)所述第三判斷單元830根據(jù)所述反饋信息判斷沒有未成功接收所述寫入指令的eMMC時,將待寫入的數(shù)據(jù)分割成N個數(shù)據(jù)包,每個數(shù)據(jù)包的數(shù)據(jù)量為每片eMMC每次可寫入的數(shù)據(jù)量。
由于每片eMMC每次寫入的數(shù)據(jù)大小為512B,因此,在將數(shù)據(jù)寫入eMMC之前,需要先數(shù)據(jù)分割成N個數(shù)據(jù)大小為512B的數(shù)據(jù)包。
第二緩存單元860、用于將所述N個數(shù)據(jù)包分別緩存至N個數(shù)據(jù)緩存器中。
為了保證寫入操作的同步性,將分割的N個數(shù)據(jù)包分別緩存至N個數(shù)據(jù)緩存器中,所述N個數(shù)據(jù)緩存器與所述N片eMMC一一對應(yīng)。
第二判斷單元870、用于判斷N個數(shù)據(jù)包的總數(shù)據(jù)量是否小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量。
第二分割單元880、用于當(dāng)所述第二判斷單元870判斷所述N個數(shù)據(jù)包的總數(shù)據(jù)量小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量時,將所述待寫入的數(shù)據(jù)中未被緩存至所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)作為新的待寫入數(shù)據(jù),并對該新的待寫入數(shù)據(jù)分割成N個數(shù)據(jù)包,直到將所有的待寫入數(shù)據(jù)分割完。
第三緩存單元890、用于當(dāng)所述第二判斷單元870判斷所述N個數(shù)據(jù)包的總數(shù)據(jù)量不小于所述待寫入的數(shù)據(jù)的數(shù)據(jù)量時,將緩存在所述N個數(shù)據(jù)緩存器中的數(shù)據(jù)包并行發(fā)送至與所述N個數(shù)據(jù)緩存器對應(yīng)的N片eMMC中,以使所述N片eMMC將數(shù)據(jù)包分別寫入與每片eMMC對應(yīng)的由寫入起始地址和寫入結(jié)束地址構(gòu)成的數(shù)據(jù)存儲空間中。
可選的,為了及時可靠地將數(shù)據(jù)寫入eMMC中,所述第三發(fā)送單元,包括:
校驗(yàn)單元,用于對并行發(fā)送的所述數(shù)據(jù)包中的每個數(shù)據(jù)包進(jìn)行冗余校驗(yàn);
重組單元,用于將冗余校驗(yàn)后的校驗(yàn)數(shù)據(jù)附在所述每個數(shù)據(jù)包的結(jié)尾;
發(fā)送子單元,用于將帶有校驗(yàn)數(shù)據(jù)的數(shù)據(jù)包發(fā)送至所述N片eMMC中。
本實(shí)施例的技術(shù)方案實(shí)現(xiàn)的是對N片eMMC寫入數(shù)據(jù)的操作,具體地,當(dāng)反饋信息指示N片eMMC成功接收寫入指令后,對待寫入數(shù)據(jù)進(jìn)行分割,每次分割出N個數(shù)據(jù)包,每個數(shù)據(jù)包的數(shù)據(jù)量為每片eMMC每次可寫入的數(shù)據(jù)量,為了實(shí)現(xiàn)寫入數(shù)據(jù)操作的同步性,將分割出的N個數(shù)據(jù)包分別緩存至與N片eMMC對應(yīng)的N個數(shù)據(jù)緩存器中,并將N個數(shù)據(jù)緩存器中的數(shù)據(jù)發(fā)給用戶。
請參閱圖9,圖9為本申請實(shí)施例提供的基于FPGA的eMMC控制器的另一種實(shí)現(xiàn)結(jié)構(gòu)示意圖,所述eMMC控制器包括:
第一發(fā)送單元910、用于向N片eMMC并行發(fā)送擦除指令,所述擦除指令攜帶每片eMMC的標(biāo)識和與該標(biāo)識對應(yīng)的eMMC的擦除起始地址和擦除結(jié)束地址。
本實(shí)施例的eMMC控制器與N片eMMC相連,N為大于1的正整數(shù)。
第一接收單元920、用于并行接收所述N片eMMC響應(yīng)所述擦除指令分別發(fā)送的反饋信息,所述反饋信息指示所述每片eMMC是否成功擦除從所述擦除起始地到所述擦除結(jié)束地址所構(gòu)成的數(shù)據(jù)存儲空間中的數(shù)據(jù)。
第三判斷單元930、用于根據(jù)所述反饋信息判斷是否有未成功擦除的eMMC。
確定單元940、用于當(dāng)所述第三判斷單元930根據(jù)所述反饋信息判斷有未成功擦除的eMMC時,向所述未成功執(zhí)行所述擦除指令的eMMC并行發(fā)送所述擦除指令,直到所述N片eMMC都成功執(zhí)行所述擦除指令。
第四發(fā)送單元950、用于當(dāng)所述第三判斷單元930根據(jù)所述反饋信息判斷沒有未成功擦除的eMMC時,向用戶返回指示對所述N片eMMC擦除成功的信息。
本實(shí)施例的技術(shù)方案實(shí)現(xiàn)的是對N片eMMC擦除數(shù)據(jù)的操作,具體地,通過反饋信息指示N片eMMC是否成功執(zhí)行擦除指令,若否,則繼續(xù)向未成功執(zhí)行所述擦除指令的的eMMC并行發(fā)送所述擦除指令,直到N片eMMC都成功執(zhí)行所述擦除指令,而后向用戶返回指示對N片eMMC擦除成功的信息,以此實(shí)現(xiàn)了擦除操作的同步。
對于裝置或系統(tǒng)實(shí)施例而言,由于其基本相應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置或系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實(shí)施。
在本發(fā)明所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,在沒有超過本申請的精神和范圍內(nèi),可以通過其他的方式實(shí)現(xiàn)。當(dāng)前的實(shí)施例只是一種示范性的例子,不應(yīng)該作為限制,所給出的具體內(nèi)容不應(yīng)該限制本申請的目的。例如,所述單元或子單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或多個子單元結(jié)合一起。另外,多個單元可以或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。
另外,所描述系統(tǒng),裝置和方法以及不同實(shí)施例的示意圖,在不超出本申請的范圍內(nèi),可以與其它系統(tǒng),模塊,技術(shù)或方法結(jié)合或集成。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
以上所述僅是本發(fā)明的具體實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。