]步驟301:對接收到的讀寫指令進行解析,獲取所述讀寫指令的讀寫狀態(tài);
[0052]這里,IRAM接收到讀寫指令時,對接收到的讀寫指令進行解析,接收到的讀寫指令可為寫命令,也可為讀命令,當收到的讀寫指令為寫命令時,讀寫指令的讀寫狀態(tài)為寫狀態(tài),向IRAM中寫入數(shù)據(jù);當收到的讀寫指令為讀命令時,讀寫指令的讀寫狀態(tài)為讀狀態(tài),從IRAM中讀取數(shù)據(jù)。
[0053]IRAM根據(jù)接收到讀寫指令的讀寫狀態(tài)不同執(zhí)行的操作不同,具體的,當讀寫指令的讀寫狀態(tài)為寫狀態(tài)時,執(zhí)行步驟302a ;當讀寫指令的讀寫狀態(tài)為讀狀態(tài)時,執(zhí)行步驟302b ο
[0054]步驟302a,同步驟102,將所述讀寫指令攜帶的待存數(shù)據(jù)進行ECC編碼生成對應的校驗碼,并將所述待存數(shù)據(jù)與所述第一校驗碼進行存儲;
[0055]步驟302b,同步驟202,根據(jù)所述讀寫指令獲取待取數(shù)據(jù),采用ECC編碼對待取數(shù)據(jù)進行檢測,根據(jù)所述檢測結果將所述待取數(shù)據(jù)直接發(fā)送、或將所述待取數(shù)據(jù)進行糾錯后發(fā)送、或觸發(fā)告警。
[0056]IRAM在步驟101、步驟201以及步驟301中獲取讀寫指令的讀寫狀態(tài)之后,可根據(jù)讀寫狀態(tài)緩存所述讀寫指令;其中,以先入先出的方式緩存讀寫指令;這里,將讀寫狀態(tài)先進行緩存,在IRAM接收到讀取指令與處理讀寫指令之間留一定的緩沖時間,用于IRAM處理讀寫指令,進行待存數(shù)據(jù)和待取數(shù)據(jù)的編碼、校驗等占用時鐘周期的處理,避免了因接收讀寫指令的速度過快而導致部分讀寫指令丟失的問題。
[0057]當IRAM接收到讀寫指令時,會自動生成表示開始處理讀寫指令的數(shù)據(jù)傳輸開始信息,以表明IRAM當前正在處理讀寫指令,當IRAM將帶存數(shù)據(jù)存儲后、或將待取數(shù)據(jù)發(fā)出、或觸發(fā)告警后,生成與數(shù)據(jù)傳輸開始信息進行握手的數(shù)據(jù)傳輸結束信息,表明當前IRAM對當前的讀寫指令已處理結束,可以開始新的讀寫指令的處理。
[0058]在本發(fā)明實施例中,在讀取指令狀態(tài)為寫狀態(tài)時,待存數(shù)據(jù)經過ECC編碼后生成的校驗碼為第一校驗碼;當讀寫狀態(tài)為讀狀態(tài)的讀寫指令讀取該待存數(shù)據(jù)時,此時的待存數(shù)據(jù)由于已存儲在IRAM中,處于被讀取的狀態(tài),相應的,此時的待存數(shù)據(jù)為待取數(shù)據(jù)。
[0059]在實際應用中,讀寫命令的讀寫狀態(tài)由wen與cen共同確定,在cen無效的情況下,IRAM不具備讀寫能力;在cen有效的情況下,根據(jù)wen的電平值確定當前的讀寫狀態(tài),其中,高電平為讀操作,低電平為寫操作。
[0060]為實現(xiàn)上述方法,本發(fā)明實施例提供一種IRAM400,該IRAM400包括:第一控制模塊401、第一 ECC模塊402以及第一存儲模塊403 ;其中,
[0061]第一控制模塊401,用于對接收到的讀寫指令進行解析,獲取所述讀寫指令的讀寫狀態(tài)。
[0062]第一控制模塊401,還用于將所述讀寫指令進行格式轉換。
[0063]第一 ECC模塊402,用于確定所述讀寫狀態(tài)為寫狀態(tài)時,將所述讀寫指令攜帶的待存數(shù)據(jù)進行ECC編碼生成對應的校驗碼;
[0064]第一 ECC模塊402包括:第一判斷子模塊421、第一編碼子模塊422 ;其中,第一判斷子模塊421,用于判斷所述待存數(shù)據(jù)是否存在無效數(shù)據(jù),在所述待存數(shù)據(jù)存在無效數(shù)據(jù)的情況下,獲取所述讀寫指令攜帶的操作地址對應的存儲數(shù)據(jù),根據(jù)所述存儲數(shù)據(jù)生成有效的待存數(shù)據(jù);第一編碼子模塊422,用于將所述待存數(shù)據(jù)進行ECC編碼以生成第一校驗碼。
[0065]第一存儲模塊403,用于存儲待存數(shù)據(jù)和第一校驗碼。
[0066]本發(fā)明實施例還提供一種基于漢明碼讀取數(shù)據(jù)的IRAM500,該IRAM500包括:第二控制模塊501、第二 ECC模塊502以及第二存儲模塊503 ;
[0067]第二控制模塊501,用于對接收到的讀寫指令進行解析,獲取所述讀寫指令的讀寫狀態(tài)。
[0068]第二控制模塊501,還用于將所述讀寫指令進行格式轉換。
[0069]第二 ECC模塊502,用于確定所述讀寫狀態(tài)為讀狀態(tài)時,根據(jù)所述讀寫指令獲取待取數(shù)據(jù),采用ECC編碼對所述待取數(shù)據(jù)進行檢測,根據(jù)所述檢測結果將所述待取數(shù)據(jù)直接發(fā)送、或將所述待取數(shù)據(jù)進行糾錯后發(fā)送、或觸發(fā)告警;
[0070]第二 ECC模塊502包括:第二編碼子模塊521、校驗子模塊522 ;
[0071]第二編碼子模塊521,用于根據(jù)所述讀寫指令獲取所述待取數(shù)據(jù)和所述待取數(shù)據(jù)對應的第一校驗碼,并將所述待取數(shù)據(jù)進行ECC編碼以生成第二校驗碼;
[0072]校驗子模塊522,用于將所述第一校驗碼與所述第二校驗碼進行異或操作生成異或結果,根據(jù)所述異或結果將所述待取數(shù)據(jù)直接發(fā)送、或將所述待取數(shù)據(jù)進行糾錯后發(fā)送、或觸發(fā)告警。
[0073]校驗子模塊522,具體用于情況一:當所述異或的結果為全O或存在單比特的1,則將所述待取數(shù)據(jù)直接發(fā)送;情況二:當所述異或的結果中O與I的個數(shù)相同,則將所述待取數(shù)據(jù)進行糾錯后發(fā)送;若非所述情況一和所述情況二,則觸發(fā)告警。
[0074]第二存儲模塊503,用于存儲所述待取數(shù)據(jù)和所述待取數(shù)據(jù)對應的第一校驗碼。
[0075]在實際應用中,第二 ECC模塊還包括糾錯子模塊523,用于對校驗子模塊522發(fā)送的需要糾錯的待取數(shù)據(jù)進行糾錯,并將糾錯后的待取數(shù)據(jù)發(fā)送出去。
[0076]本發(fā)明實施例還提供一種基于漢明碼存取數(shù)據(jù)的IRAM600,如圖6所示,所述IRAM600包括:控制模塊601、ECC模塊602以及存儲模塊603 ;
[0077]控制模塊601,用于對接收到的讀寫指令進行解析,獲取所述讀寫指令的讀寫狀
O
[0078]控制模塊601,還用于將所述讀寫指令進行格式轉換。
[0079]ECC模塊602,用于當所述讀寫狀態(tài)為寫狀態(tài)時,將所述讀寫指令攜帶的待存數(shù)據(jù)進行ECC編碼生成對應的第一校驗碼;當所述讀寫狀態(tài)為讀狀態(tài)時,根據(jù)所述讀寫指令獲取待取數(shù)據(jù),采用ECC編碼對所述待取數(shù)據(jù)進行檢測,根據(jù)所述檢測結果將所述待取數(shù)據(jù)直接發(fā)送、或將所述待取數(shù)據(jù)進行糾錯后發(fā)送、或觸發(fā)告警;其中,對于同樣的數(shù)據(jù),在寫狀態(tài)時稱為待寫數(shù)據(jù),在讀狀態(tài)時稱為待取數(shù)據(jù)。
[0080]ECC模塊602包括:編碼子模塊621、校驗子模塊622 ;
[0081]編碼子模塊621,用于當所述讀寫狀態(tài)為寫狀態(tài)時,將所述讀寫指令攜帶的待存數(shù)據(jù)進行ECC編碼生成對應的第一校驗碼;當所述讀寫狀態(tài)為讀狀態(tài)時,根據(jù)所述讀寫指令獲取待取數(shù)據(jù)及其對應的第一校驗碼,并將待取數(shù)據(jù)進行ECC編碼生成第二校驗碼;
[0082]校驗子模塊622,用于將待取數(shù)據(jù)對應的第一校驗碼與第二校驗碼進行異或操作生成異或結果,根據(jù)異或結果將待取數(shù)據(jù)直接發(fā)送、或將所述待取數(shù)據(jù)進行糾錯后發(fā)送、或觸發(fā)告警。
[0083]這里,校驗子模塊622,具體用于情況一:當所述異或的結果為全O或存在單比特的I,則將所述待取數(shù)據(jù)直接發(fā)送;情況二:當所述異或的結果中O與I的個數(shù)相同,將所述待取數(shù)據(jù)進行糾錯后發(fā)送;若非上情況一和情況二,則觸發(fā)告警。
[0084]存儲模塊603,用于存儲待取數(shù)據(jù)和待取數(shù)據(jù)對應的第一校驗碼。
[0085]如圖6所示,ECC模塊602還包括判斷子模塊62