一種用查表功能指令實現存儲器數據校驗的方法
2023-09-16 02:37:40
專利名稱:一種用查表功能指令實現存儲器數據校驗的方法
技術領域:
本發明是關於一種數據校驗的方法,具體的說,是關於一種用查表功能指令實現存儲器數據校驗的方法。
背景技術:
隨著半導體科技的進步,業界已經可以把越來越多的電路模塊集成到同一個晶片中,這裡面可能包含有處理器(MCU/CPU)、存儲器(RAM/ROM)、數字模塊、模擬模塊、數模轉換器(DAC/ADC)以及各種外圍功能(USB,LCD...)等,即系統級晶片(SoC)。藉助於在一個晶片中集成更多的功能模塊,SoC技術的發展為消費類電子類產品降低成本,提高性能提供了機會。然而,由於受晶片生產工藝的限制,隨著集成度的提高,SoC晶片內各模塊出錯概率也大大增加,而存儲器通常佔據了整個晶片面積的大部分,因此存儲器的測試就成為晶片測試的重點。要在管腳數量非常有限的SoC晶片中,支持外部對存儲器測試,就需要管腳復用,這無形中增加了SoC晶片設計的複雜性,同時這種存儲器測試還依賴集成電路測試機,測試前一般需要針對測試機,編輯測試模式(Test Pattern),編寫測試程序(Test Program),測試程序調試等步驟,實現起來複雜而且效率低下。如何提高存儲器測試的效率,及早發現晶片問題,降低成本就成為業界關注的一個焦點。
本發明的目的就在於提供一種實現簡單、效率高、成本低的存儲器測試的方法。其基本原理足將存儲器中的內容(可以是代碼或數據),看作幾張數據表,然後利用查表功能指令依次讀取各表的內容進行處理(如CRC8),實現對存儲器校驗測試。
發明內容
為了以上目的,本發明提供了一種用查表功能指令實現存儲器數據校驗的方法,該方法包括以下步驟①.編寫測試功能代碼,該代碼要實現將需要測試的存儲器地址空間,作為N(N>=1)個該處理器的查表指令支持的表處理,並對各表依次用該處理器的查表指令讀取,用一定的算法(如CRC8)進行處理,完成各表處理後給出校驗是否通過的指示;②.當測試晶片時,運行該測試功能代碼,以完成對該存儲器的校驗測試,並得到結果指示。
在本專利申請的權利要求書中,具體地指出了本發明的主題,並清楚地對其提出了專利保護。然而參照下面的詳細說明和附圖,可以更好的理解本發明的有關結構和實現方法以及其目的、特徵和優勢。
圖1為一個需校驗的4K存儲器地址空間的劃分;圖2為表邊界指令存儲位置調整處理的情況;圖3為測試程序流程圖。
具體實施方法在以下的詳細說明中,描述了特定的細節以便提供對本發明全面的理解。然而本專業的技術人員會認識到,本發明也可以用其它相類似的細節實施。
儘管本發明不限於此,但作為本發明的一個具體的實施例,在一個RAM地址空間為0xC0-0xFF,ROM地址空間為0xF000-0xFFFF的6502系列MCU上,用CRC8算法現實ROM數據校驗的步驟如下在完成正常功能代碼編寫後,在剩餘的代碼(ROM)空間中,按步驟①編寫測試功能代碼(後附部分實現代碼),對需要檢測的ROM中4K地址空間(0xF000-0xFFFF),先保留一個字節(CRC8_RESULT)用於CRC8結果的比較,再將之粗略劃分為1個長度為255及15個長度為256位元組的表,並用TABLE_0-TABLE_15在代碼中標識(如圖1),再對各表依次用該處理器的查表指令讀取,並用CRC8算法進行處理,處理完成後通過與CRC8_RESULT(如何)比較,給出校驗是否通過的指示。然而在實際的代碼中,上述各表的邊界處,很可能有長度大於等於2位元組的指令,如比較指令(2位元組),無條件跳轉指令(3位元組)等,這樣各表的大小就會不一致(如圖2左),處理起來不方便,如果長度大於查表指令最大支持的256位元組,就不能用本方法實現數據校驗。此時,可以針對性的在上述各表的邊界處,根據該處理器指令集的特點及程序處理的方便,用地址定位偽指令(如ORG)或對當前處程序執行沒有影響的指令(如NOP),適當的調整數據、指令的存儲位置,並在處理好後(如圖2右)確定代碼內容不再改變,這時可以先在計算機上,對該程序(正常及測試的功能等)經過編譯或彙編後的二進位數據,相應的從0xF001-0xFFFF地址做CRC8計算,將CRC8計算結果寫到代碼中的CRC8_RESULT處,經過以上處理後,該程序就可以轉化成能在晶片內運行的最終數據,用於固化到ROM中。
當進行晶片測試時,該程序中測試功能代碼就會如步驟②所述,完成對該ROM的測試。
圖3存儲器測試流程的部分程序代碼現實如下REG_TMP_DATAEQU D0H;定義中間變量REG_CRC8_DATA EQU D1H;定義CRC8處理變量
ORGFE00H;地址定位,取決於具體的情況TABLE_14 ;頁表14,這裡的代碼也包括在測試的ROM段中LDA#FFH ;用立即數設置REG_CRC8_DATA初始值STAREG_CRC8_DATA;用於CAL_CRC8中計算TABLE_0_TEST ;測試各表開始,對TABLE_0表處理LDX#01H ;TABLE_0為255位元組(除去CRC8_RESULT位置)TABLE_0_LOOP ;循環讀取TABLE_0表LDATABLE_0,X ;用查表功能指令,讀取ROM中TABLE_0表中的數據JSRCAL_CRC8 ;調用CAL_CRC8進行運算處理,處理結果寫到BEQTABLE_1_TEST ;REG_CRC8_DATA中,同對查表X寄存器增一,當X變為JMP TABLE_0_LOOP;零時,也就是已從#01H到#FFH完成了255位元組的處理TABLE_1_TESTTABLE_1_LOOP ;對TABLE_1表的處理LDATABLE_1,X ;當由TABLE_0_TEST執行到TABLE_1_TEST時JSRCAL_CRC8 ;X寄存器值正好為#00HBEQTABLE_2_TEST ;X寄存器從#00H到#FFH完成了256位元組的處理JMP TABLE_1_LOOPTABLE_2_TEST ;對TABLE_2-TABLE_14表的處理…;…;TABLE_15_TEST ;對TABLE_15表的處理TABLE_15_LOOPLDATABLE_15,X;JSRCAL_CRC8BEQTABLE_TEST_END ;X寄存器從#00H到#FFH完成了256位元組的處理JMP TABLE_15_LOOPTABLE_TEST_ENDLDACRC8_RESULT,X ;同樣用查表指令,讀取事先計算好的CRC8CMPREG_CRC8_DATA;比較兩者的值BEQTEST_OK ;相等,則通過校驗JMPTEST_ERR ;不相等,則校驗出錯CAL_CRC8 ;按字節計算CRC8STAREG_TMP_DATA ;保存當前需要處理的字節數據…;具體CRC8算法現實不在本專利範圍內,故略STAREG_CRC8_DATA;存儲當前CRC8計算結果INX ;對X寄存器增一,影響處理器標誌位,用於BEQ判斷RTS ;返回TEST_ERR ;校驗出錯處理…;TEST_OK ;校驗通過處理…;雖然此處說明描述了本發明的某此特徵及一種實現方法,但是對於本專業的技術人員來說,將會出現許多修改、替換、變化和等效代換。因此,本發明的保護範圍由所附的權利要求的範圍為準。
權利要求
1.一種用查表功能指令實現存儲器數據校驗的方法,該方法包括以下步驟①.編寫測試功能代碼,該代碼要實現將需要測試的存儲器地址空間,作為N(N>=1)個該處理器的查表指令支持的表處理,並對各表依次用該處理器的查表指令讀取,用一定的算法(如CRC8)進行處理,完成各表處理後給出校驗是否通過的指示;②.當測試晶片時,運行該測試功能代碼,以完成對該存儲器的校驗測試,並得到結果指示。
2.如權利要求1所述一種用查表功能指令實現存儲器數據校驗的方法,其特徵在於將需要測試的存儲器地址空間,作為N(N>=1)個該處理器的查表指令支持的表處理。
3.如權利要求1所述一種用查表功能指令實現存儲器數據校驗的方法,其特徵在於對如權利要求2所述的各表,依次用該處理器的查表指令讀取,並用一定的算法(如CRC8)進行處理,完成各表處理後給出校驗是否通過的指示。
4.如權利要求1所述一種用查表功能指令實現存儲器數據校驗的方法,其特徵在於當測試晶片時,運行該測試功能代碼,以完成對該存儲器的校驗測試,並得到結果指示。
全文摘要
本發明提供了一種數據校驗的方法,此方法是關於一種用查表功能指令實現存儲器數據校驗的方法。其基本原理是將存儲器中的內容(可以是代碼或數據),看作幾張數據表,然後利用查表功能指令依次讀取各表的內容進行處理(如CRC8),實現對存儲器校驗測試。這種方法實現簡單、效率高、成本低,特別適合於對SoC晶片內的存儲器數據進行校驗和測試。
文檔編號G06F11/00GK1677576SQ200510037708
公開日2005年10月5日 申請日期2005年2月1日 優先權日2005年2月1日
發明者謝海雁, 楊明, 沈寒冰, 朱小茅, 吳俊輝 申請人:蘇州超銳微電子有限公司