基于FPGA的多MCU讀寫NANDFlash的實現方法
【專利摘要】本發明提供一種基于FPGA的多MCU讀寫NANDFlash的實現方法,利用FPGA強大的邏輯運算和方便的時序電路設計能力,巧妙地設計控制開關Act_A、Act_B……Act_N寄存器型變量作為MCU_1、MCU_2……MCU_N選通NANDFlash的開關,Act_A、Act_B……Act_N只有高低電平兩種狀態,彼此互鎖,同一時刻只能有一個控制開關為高電平狀態,保證同一時刻只有一個MCU讀寫NANDFlash;利用FPGA作為中間橋梁,不僅簡化了硬件電路結構,降低了成本,也解決了越來越多的電子設備以及工業領域中多MCU訪問存儲設備沖突的問題;同時FPGA又能方便地進行時序電路的設計,使得多MCU讀寫NANDFlash的控制程序具有廣泛的移植性,大大簡化了編程的難度。
【專利說明】基于FPGA的多MCU讀寫NANDFI ash的實現方法 【技術領域】
[0001 ]本發明屬于電子設計自動化領域,具體設及一種基于FPGA的多MCU讀寫NANDFlash 的實現方法。 【【背景技術】】
[0002] 如今與人們生活息息相關的電子產品,小到優盤,閃存卡、電腦、W及數碼相機、手 機等各類隨身移動的閃存式數碼存儲產品,大到固態硬盤等產品最重要的組成部分之一正 是NANDFlash閃存忍片。非易失性NANDFlash存儲忍片具有存儲密度高、功耗低、忍片引腳兼 容性好、掉電不丟失數據、短時間內不需要重新刷新數據等特性。隨著忍片的集成度越來越 高,加之越來越多的電子設備對數據存儲提出了更高的要求,NANDFlash在最近幾年得到了 突飛猛進的發展,容量不斷增大,單位容量的成本也大幅下降,生產工藝也在不斷進步, NANDFlash的應用領域勢必也會越來越多。
[0003] 多功能的電子設備往往設有多個MCU,使用時會出現多個MCU訪問同一NANDFlash 的情況,但由于NANDFlash沒有單獨的地址和數據總線,NANDFlash使用復雜的I/O 口來串行 地存取數據,8個I/O引腳用來傳送控制、地址和數據信息。理論上每個NANDFlash只能連接 一個MCU,當需要多個MCU訪問NANDFlash時,會出現引腳不足的現象,若每個MCU配置一個 NANDFlash,既使得硬件電路圖變得復雜,同時也增加了成本。 【
【發明內容】
】
[0004] 為了克服上述現有技術存在的缺陷和不足,本發明提供了一種基于FPGA的多MCU 讀寫NANDFlash的實現方法,采用FPGA作中間橋梁,既解決了多MCU訪問同一NANDFlash的問 題,方便了數據的存儲,同時也簡化了系統結構和布局布線,降低了成本。
[0005] 為達到上述目的,本發明所述的基于FPGA的多MCU讀寫NANDFlash的實現方法,主 要包括W下步驟:
[0006] 1)硬件設計上采用FPGA作中間橋梁,將多個MCU模塊分布于FPGA周圍,從當線方式 與FPGA進行數據交換;
[0007] 2)軟件上實現多MCU模塊讀寫NANDFlash的控制,在FPGA中首先進行尋址設計,通 過MCU模塊與FPGA通訊地址總線的高四位地址和地址鎖存信號ALE來設計16個片選信號CS [16],片選信號CS[ 16]負責選通需要讀寫的MCU模塊;利用MCU模塊的低五位地址和地址鎖 存信號ALE設計32個尋址信號MOJportL[32],尋址信號MOJportL[32]負責選通每個MCU模塊 里的讀寫控制;
[000引 3)在FPGA中的NANDFlash讀寫模塊中,設計控制開關Act_A、Act_B……Act_N寄存 器型變量作為MCU_1、MCU_2……MCU_N選通NANDFlash的開關,控制開關Act_A、Act_B…… Act_N只有高低電平兩種狀態,彼此互鎖,同一時刻只能有一個為高電平狀態,保證同一時 刻只有一個MCU讀寫NANDFlasho
[0009] 進一步,所述步驟2)中在FPGA中利用MCU_n與FPGA通訊的讀信號畑與片選信號CS
[n]進行或運算構成讀選通信號RD_n;利用MCU_n與FPGA通訊的寫信號WR與片選信號CS[n] 進行或運算構成寫選通信號WR_n。
[0010] 進一步,在MCU_n讀寫NANDFlash之前,首先檢測此時有沒有其它MCU模塊正在訪問 NANDFlash,在MCU_n中執行到該檢測程序時,相應的FPGA中的讀選通信號RD_n和尋址信號 MOJportL_n_[ i ]進行按位與運算觸發讀控制信號Act_n_RD,如果此時沒有其它MCU訪問 NANDFlash,即其它n-1個控制開關Act_5為低電平,Act_R表示除4(3*_11之外其它所有控 制開關Act,控制開關Act_n在讀控制信號Act_n_RD的上升沿和控制開關Act_5為低電平的 情況下被置為高電平,當MClLn讀取到控制開關4(3*_11信號為高電平時才會執行后續讀寫操 作,否則會報錯跳出程序;
[00川 MCU_n的控制開關Act_n若為高電平,同時會將其它的MCU的控制開關Act_5鎖為 低電平,控制開關Act_n為高電平,FPGA中NANDFlash模塊的輸入輸出信號選通到FPGA中 MCU_n模塊相對應的信號。
[001 ^ 進一步,MCU_n訪問完NANDFlash后,MCU_n會向FPGA發送Ac t_n的清零指令,利用寫 信號WR_n和尋址信號MCUpoパL_n_[i]觸發FPGA中的清零信號Act_n_Clr,清零信號Act_n_ Clr將控制開關Act_n置為低電平,此時MCU_n訪問NANDFlash完畢,其它等待的MCU檢測到此 時的狀態便可訪問NANDFlas。
[001 ;3] 4)當出現兩個MCU(MCU_i、MCU_ j,已設定MCU_i讀寫優先級高于MCU_j)在同一時刻 同時訪問NANDFlash時,運兩個MCU的讀控制開關Act_i_RD、Act」_RD同時被置為高電平,由 于運兩個MCU的控制開關Act_i、Act」初始狀態均為低電平,隨即運兩個控制開關Act_i、 Act」被觸發為高電平,由于MCU_i讀寫優先級高于MCU_j,MCU_i的控制開關Act_i為高電平 的同時會將MCU_j的清零信號Act_j_Clr置為高電平,高電平的清零信號Act_j_Clr又會將 控制開關Act」置為低電平,即Act_i為高電平,Act」為低電平,實現了高優先級的MClU優 先訪問NANDFlash,待MCU_i訪問完NANDFlash后MCU_j再訪問NANDFlash,保證了同一時刻只 有一個MCU讀寫NANDFlash。當出現兩個W上的MCU在同一時刻同時訪問NANDFlash時,原理 相同。
[0014]本發明具有W下有益效果:
[001引本發明所述的基于FPGA的多MCU讀寫NANDFlash的實現方法實現多MCU讀寫 NANDFlash的過程中,利用FPGA強大的邏輯運算和方便的時序電路設計能力,巧妙地設計控 制開關Act_A、Act_B……Act_N寄存器型變量作為MCU_1、MCU_2……MCU_N選通NANDFlash的 開關,Act_A、Act_B……Act_N只有高低電平兩種狀態,彼此互鎖,同一時刻只能有一個控制 開關為高電平狀態,保證同一時刻只有一個MCU讀寫NANDFlash。
[0016] 進一步,任意一個MCU讀寫完NANDFlash后,該MCU都會發送相應的清零指令,將控 制開關Act_n置為低電平,保證其它MCU可W順利讀寫NANDFlash。
[0017] FPGA具有多達上百個的I/O引腳,可W連接大量的外設,同時FPGA又能方便地進行 時序電路的設計,利用FPGA作為中間橋梁,不僅簡化了硬件電路結構,降低了成本,也解決 了越來越多的電子設備W及工業領域中多MCU訪問存儲設備沖突的問題。同時FPGA又能方 便地實現時序電路,使得多MCU讀寫NANDFlash的控制程序具有廣泛的移植性,大大簡化了 編程的難度。 【【附圖說明】】
[0018]圖1為本發明的系統結構原理圖。
[0019]圖2為本發明中實施例一的RTL邏輯電路圖。
[0020] 圖3為本發明中實施例一的仿真實驗結果圖。 【【具體實施方式】】
[0021] 下面結合附圖和實施例對本發明作進一步的詳細說明,但不限于運些實施例。
[0022] 本發明所述的基于FPGA的多MCU讀寫NANDFlash的實現方法,主要包括W下步驟:
[002;3] 1)硬件設計上采用FPGA作中間橋梁,結合FPGA具有上百個I/O引腳的特點,將多個 MCU分布于FPGA周圍,W總線方式與FPGA進行數據交換。
[0024] 2)軟件上實現多MCU讀寫NANDFlash的控制,主要是針對FPGA進行時序電路的設 計。利用FPGA自身強大的邏輯關系,在FPGA中編寫可調用的模塊化單元。由于FPGA中要進行 多種功能的控制,不同功能模塊要依靠不同的讀寫地址來實現,因此在FPGA中首先進行尋 址設計,通過MCU與FPGA通訊地址總線的高四位地址和地址鎖存信號ALE來設計片選信號CS [16](2~4 = 16個片選信號),CS[16]主要負責選通需要讀寫的MCU模塊;利用MCU的低五位地 址和地址鎖存信號ALE來設計尋址信號MCUpOTtL[32] (2~5 = 32個尋址信號),MCUportL[32] 主要負責選通每個MCU模塊里更詳細的讀寫控制。
[00巧]3)在FPGA中的NANDF1 aSh讀寫模塊中,巧妙地設計了控制開關Act_A、Act_B…… Act_N寄存器型變量作為MCU_1、MCU_2……MCU_N選通NANDFlash的開關,控制開關Act_A、 Act_B……Act_N只有高低電平兩種狀態,彼此互鎖,同一時刻只能有一個為高電平狀態,保 證同一時刻只有一個MCU讀寫NANDFlasho
[0026] 為實現上述選通功能,在FPGA中首先利用MCU_n(n = l、2、3……N)與FPGA通訊的讀 信號RD與片選信號CS進行或運算構成讀選通信號RD_n,由于RD和CS均是低電平有效,采用 或運算保證構成的讀選通信號畑_n也是低電平有效;利用寫信號WR與片選信號CS進行或運 算構成寫選通信號WR_n,同理WR和CS均是低電平有效,采用或運算保證構成的寫選通信號 WR_n也是低電平有效。MCU_n讀寫NANDFlash之前,首先要檢測此時有沒有其它MCU正在訪問 NANDFlash,在MCU_n中執行到該檢測程序時,相應的FPGA中的讀選通信號RD_n和尋址信號 MOJportL_n_[i](與MCU_n程序設計中讀此狀態的地址0x[CS]00i相對應)進行按位與運算 觸發讀控制信號Act_n_RD,如果此時沒有其它MCU訪問NANDFlash,即其它n-1個控制開關 義姊_5為低電平(Act_5表示除4(3*_11之外其它所有控制開關Act),控制開關Act_n在讀控 審IJ信號Act_n_RD的上升沿和控制開關為低電平的情況下被置為高電平。當MCU_n讀 取到控制開關Act_n信號為高電平時才會執行后續讀寫操作,否則會報錯跳出程序。
[0027] MCU_n的控制開關Act_n若為高電平,同時會將其它的MCU的控制開關ActJT鎖為 低電平,Act_^PAct_n的互鎖可W保證一個MCU訪問NANDFlash時其它MCU只能等待,保證 了讀寫的完整性。控制開關Act_n為高電平,FPGA中NANDFlash模塊的輸入輸出信號選通到 FPGA中MCU_n模塊相對應的信號。
[002引 MCU_n訪問完NANDFlash后,MCU_n會向FPGA發送Act_n的清零指令,利用寫信號WR_ n和尋址信號MOJportL_n_[ i ]觸發FPGA中的清零信號Act_n_Clr,清零信號Act_n_Clr將控 制開關Act_n置為低電平,此時MCU_n訪問NANDFlash完畢,其它等待的MCU檢測到此時的狀 態便可訪問NANDFlasho
[0029] 4)當出現兩個MCU(MCU_i、MCU_j,i、j = 1、2、3……N,已設定MCU_i讀寫優先級高于 MCU_j)在同一時刻同時訪問NANDFlash時,運兩個MCU的讀控制開關Act_i_畑、Act」_畑同 時被置為高電平,由于運兩個MCU的控制開關Act_i、Act」初始狀態均為低電平,隨即控制 開關Act_i、Act」被觸發為高電平,由于MCU_i讀寫優先級高于MCU_j,MCU_i的控制開關 Act_i為高電平的同時會將MCU」的清零信號Act」_Clr置為高電平,高電平的清零信號 Act」_Clr又會將控制開關Act」置為低電平,即Act_i為高電平,Act」為低電平,實現了高 優先級的MCU_i優先訪問NANDFlash,待MCU_i訪問完NANDFlash后MCU_j再訪問NANDFlash, 保證了同一時刻只有一個MCU讀寫NANDFlash。當出現兩個W上的MCU在同一時刻同時訪問 NANDFlash時,原理相同。
[0030] 實施例一
[0031] 參考圖1及圖2, W兩個MCU讀寫NANDFlash為例進行說明,在FPGA中設計 Act_B信號作為選通MCU_1和MCU_2的控制開關,Act_A和Act_B信號均是高電平有效,二者互 鎖,實現一個MCU訪問NANDF1 ash時另一個MCU只能等待。如圖2所示,MCU_1、MCU_2讀寫 NANDFlash部分片選信號采用CS_A[4]和CS_B[4],判斷尋址信號采用 MCUpOTtL_A_[12]、MCUpOTtL_B_[12],圖2中的Nands 模塊為 FPGA中的 NANDFlash 讀寫與輸入 輸出接口模塊,與現有的單MCU讀寫NANDFlash模炔基本一樣,運里做了省略。
[0032] 圖3所示的仿真結果考慮了 S種情況:MCU_1先于MCU_2訪問NANDFlash時,MCU_1對 NANDFlash進行讀操作,即讀取NANDFlash中nAD的數據到MCU_1的寄存器nDtoMCU_A中;MCU_ 2先于MCU_1訪問NANDFlash時,MCU_2對NANDFlash進行寫操作,即將MCU_2中0111_8的數據寫 入NANDFlash的nAD中;MCU_1和MCU_2同時訪問NANDFlash時,主要體現MCUl優先讀寫 NANDFlash的選擇權,不再做具體讀寫操作。
[0033] 參考圖2和圖3,具體包括W下步驟:
[0034] 1 )MCU_1 先于 MCU_2 訪問 NANDFlash;
[0035] a)MCU_l首先利用讀信號畑_A和尋址信號MCUpOTtL_A_[12]讀取FPGA中的控制開 關Act_A信號,讀信號RD_A和尋址信號MCUpOTtL_A_[ 12]觸發讀選通信號Act_A_RD,由于此 時MCU_2還沒有訪問NANDFlash,即控制開關4。*_8為低電平,控制開關Act_A在讀選通信號 Act_A_畑上升沿和控制開關Act_B為低電平的情況下被置為高電平,控制開關Act_A為高電 平,FPGA中NANDFlash模塊的輸入輸出信號選通到FPGA中MCU_1模塊相對應的信號;
[0036] b)MCU_l讀取到控制開關Act_A信號為高電平后便執行讀取NANDFlash的相應操 作,在讀信號RD_A和尋址信號MCUportL_A_[28]作用下觸發讀數據指令nRD,便可將 NANDFlash中nAD的數據讀取到MCU_1;
[0037] c)MCU_l訪問完NANDFlash后,MCU_1會向FPGA發送Act_A的清零指令,相應的FPGA 中會利用對應的寫信號WR_1和尋址信號MOJportL_A_[12]觸發FPGA中的清零信號Act_A_ Clr,清零信號Act_A_Clr將控制開關Act_A置為低電平,此時說明MCU_1讀寫NANDFlash完 畢。
[003引 2)MCU_2 先于 MCU_1 訪問 NANDFlash;
[0039] a)步驟與上述I)中的a)類似,最終控制開關Act_B被置為高電平,控制開關Act_A 為低電平,FPGA中NANDFlash模塊的輸入輸出引腳選通到FPGA中MCU_2模塊相對應的引腳;
[0040] b)MCU_2讀取至ljAct_B信號為高電平后便執行寫入數據到NANDFlash的相應操作, 在寫信號WR_巧日地址選通信號MOJportL_B_[ 28 ]作用下觸發nWR,便可將MCU_2的Din_B的數 據寫入NANDFlash的nAD中;
[0041 ] c)MCU_2訪問完NANDFlash后,MCU_2發送Act_B的清零指令,利用寫信號WR_2和地 址選通信號MCUportL_B_[12]觸發FPGA中的Act_B_Clr清除信號,Act_B_Clr清除信號將 Act_B置為低電平,此時說明MCU_2讀寫NANDFlash完畢。
[0042] 3)MCU_1和MCU_2的讀寫信號同時訪問NANDFlash,讀控制信號Act_A_畑和Act_B_ RD同時被置為高電平,控制開關初始狀態為低電平,隨即被觸 發為高電平,設計了 MClU讀寫優先級高于MCU_2,控制開關Act_A為高電平同時將清零信號 Act_B_Clr置為高電平,高電平的清零信號Act_B_Clr又會將控制開關Act_B置為低電平,即 控制開關Act_A為高電平,控制開關Act_B為低電平,實現了MCU_1優先訪問NANDFlash,同時 保證了同一時刻只有一個MCU讀寫NANDFlasho
【主權項】
1. 基于FPGA的多MCU讀寫NANDFlash的實現方法,其特征在于包括以下步驟: 1) 硬件設計上采用FPGA作中間橋梁,將多個MCU模塊分布于FPGA周圍,以總線方式與 FPGA進行數據交換; 2) 軟件上實現多Μ⑶模塊讀寫NANDFlash的控制,在FPGA中首先進行尋址設計,通過MCU 模塊與FPGA通訊地址總線的高四位地址和地址鎖存信號ALE設計16個片選信號CS[ 16 ],片 選信號CS[16]負責選通需要讀寫的MCU模塊;利用MCU模塊的低五位地址和地址鎖存信號 ALE設計32個尋址信號MCUportL[32],尋址信號MCUportL[32]負責選通每個MCU模塊里的讀 與控制; 3) 在FPGA中的NANDFlash讀寫模塊中,設計控制開關Act_A、Act_B……Act_P^t存器型 變量作為MCU_1、MCU_2……MCU_N選通NANDFlash的開關,控制開關Act_A、Ac t_B……Act_N 只有高低電平兩種狀態,彼此互鎖,同一時刻只能有一個為高電平狀態,保證同一時刻只有 一個 MCU 讀寫NANDFlash。2. 如權利要求1所述的基于FPGA的多MCU讀寫NANDFlash的實現方法,其特征在于:所述 步驟2)中在FPGA中利用MCU_n與FPGA通訊的讀信號RD與片選信號CS[n]進行或運算構成讀 選通信號RD_n;利用MCU_n與FPGA通訊的寫信號WR與片選信號CS[n]進行或運算構成寫選通 信號WR_n。3. 如權利要求2所述的基于FPGA的多MCU讀寫NANDFlash的實現方法,其特征在于:在 MCU_n讀寫NANDFlash之前,首先檢測此時有沒有其它MCU模塊正在訪問NANDFlash,在MCU_n 中執行到該檢測程序時,相應的FPGA中的讀選通信號RD_n和尋址信號MCUportL_n_[ i ]進行 按位與運算觸發讀控制信號Act_n_RD,如果此時沒有其它MCU訪問NANDFlash,即其它n-1個 控制開關Act_E為低電平,Aet_H表示除Act_n2外其它所有控制開關Act,控制開關Act_ η在讀控制信號Act_n_RD的上升沿和控制開關Act_H為低電平的情況下被置為高電平,當 MCU_n讀取到控制開關Act_n信號為高電平時才會執行后續讀寫操作,否則會報錯跳出程 序; MCU_n的控制開關Act_n若為高電平,同時會將其它的MCU的控制開關八^_6鎖為低電 平,控制開關Act_n為高電平,FPGA中NANDFlash模塊的輸入輸出信號選通到FPGA中MCU_n模 塊相對應的信號。4. 如權利要求2所述的基于FPGA的多Μ⑶讀寫NANDFlash的實現方法,其特征在于:MCU_ η訪問完NANDF1 ash后,MCU_n會向FPGA發送Ac t_n的清零指令,利用寫信號WR_n和尋址信號 MCUp 〇 r t L_n_ [ i ]觸發FPGA中的清零信號Ac t_n_C 1 r,清零信號A c t_n_C 1 r將控制開關A c t_n 置為低電平,此時MCU_n訪問NANDFlash完畢,其它等待的MCU檢測到此時的狀態便可訪問 NANDFlash〇5. 如權利要求2所述的基于FPGA的多MCU讀寫NANDFlash的實現方法,其特征在于:當出 現兩個或多個MCU在同一時刻同時訪問NANDFlash時,根據設定的MCU讀寫的優先級,高優先 級MCU的控制開關Act會將低優先級MCU的控制開關Act置為低電平,實現高優先級MCU優先 訪問NANDFlash,待高優先級MCU訪問完NANDFlash后低優先級MCU再訪問NANDFlash,保證同 一時刻只有一個MCU讀寫NANDFlash。
【文檔編號】G06F15/17GK105955919SQ201610272689
【公開日】2016年9月21日
【申請日】2016年4月27日
【發明人】陶濤, 杜志國, 劉星, 梅雪松, 馬星星
【申請人】西安交通大學