亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

利用Verilog硬件描述語言獲取文件狀態(tài)的方法

文檔序號:6378830閱讀:498來源:國知局
專利名稱:利用Verilog硬件描述語言獲取文件狀態(tài)的方法
技術(shù)領(lǐng)域
本發(fā)明涉及電子系統(tǒng)仿真設(shè)計技術(shù)領(lǐng)域,特別是指一種利用Verilog硬件描述語言(HDL,Hardware Description Language)獲取文件狀態(tài)的方法。
背景技術(shù)
隨著電子設(shè)計中電子系統(tǒng)規(guī)模的擴大和復(fù)雜度的提高,設(shè)計人員必需借助硬件描述語言通過仿真、建模等方式來進行復(fù)雜電子系統(tǒng)的設(shè)計。目前電子設(shè)計中主要采用的硬件描述語言是VHDL和Verilog HDL。其中,VerilogHDL推出較晚,該語言比較適合于從算法級、寄存器傳輸級、邏輯級、門級到開關(guān)級的多種抽象設(shè)計層次的數(shù)字系統(tǒng)建模,并以其語法靈活、易于掌握、功能全面、擴展性好等特點,逐步成為設(shè)計人員廣泛采用的一種硬件描述語言。
但是Verilog語言也存在一些不足,例如在使用Verilog進行可編程邏輯設(shè)計的仿真驗證時,常需要對磁盤里的文件進行動態(tài)讀寫交換的操作。其中最常見的情況是測試激勵模塊生成數(shù)據(jù)文件,總線功能模型(BFM,Bus Function Mode)模塊讀取該文件數(shù)據(jù),并通過BFM與邏輯的接口將數(shù)據(jù)發(fā)送給邏輯,BFM判斷數(shù)據(jù)讀完后,將該數(shù)據(jù)文件清空,測試激勵模塊判斷該數(shù)據(jù)文件已空后,再生成數(shù)據(jù)寫入該數(shù)據(jù)文件,如此循環(huán);同樣,當(dāng)邏輯通過接口發(fā)送數(shù)據(jù)給BFM時,BFM將其接收的數(shù)據(jù)寫入磁盤中的一個數(shù)據(jù)文件,測試激勵模塊判斷該數(shù)據(jù)文件是否為空,如果非空,則讀取其中的數(shù)據(jù)進行分析,讀完后清空該數(shù)據(jù)文件,BFM判斷該數(shù)據(jù)文件已空后,再從邏輯接收數(shù)據(jù)并寫入該數(shù)據(jù)文件,如此循環(huán)。
在上述過程中,測試激勵模塊和BFM模塊在通過磁盤中的一個文件來進行動態(tài)數(shù)據(jù)交換時,都需要判斷該數(shù)據(jù)文件是否為空,并在讀取數(shù)據(jù)文件時還要判斷數(shù)據(jù)文件是否已讀完。但在Verilog語言所提供的文件操作系統(tǒng)任務(wù)里,并沒有直接提供判斷數(shù)據(jù)文件是否為空,數(shù)據(jù)文件是否讀完的系統(tǒng)任務(wù)。因此往往使得進行這一類操作時不得不去尋找別的方法來解決。
現(xiàn)有技術(shù)的一種解決方案是利用Verilog語言的可編程語言接口(PLI,Programming Language Interface)來擴展Verilog的文件操作功能,即借用高級編程語言的文件操作功能。如使用C語言編寫測試代碼中判斷文件是否為空、讀文件和判斷讀文件是否結(jié)束等部分,然后將讀取的數(shù)據(jù)傳給Verilog編寫的部分,最后,聯(lián)合調(diào)試C和Verilog代碼。但這種方案需要涉及到Verilog和高級語言的混合編程,這樣,對于不熟悉Verilog的PLI和高級編程語言的邏輯設(shè)計人員和測試人員,該方案就行不通了。
現(xiàn)有技術(shù)的另一種方案是利用基于C的stdio函數(shù)來擴展Verilog的文件操作系統(tǒng)函數(shù)和系統(tǒng)任務(wù),提供如判斷文件空否、讀文件單個數(shù)據(jù)、判斷文件結(jié)束等系統(tǒng)任務(wù),并編譯成工具包,在仿真時連接到仿真工具工作環(huán)境下,并在使用時在Verilog代碼中調(diào)用這些系統(tǒng)函數(shù)和任務(wù)。這種方案雖然設(shè)計和測試人員不需要直接接觸C語言的編程,但是通過stdio函數(shù)擴展的Verilog文件操作系統(tǒng)任務(wù)如何使用也需要重新學(xué)習(xí),并且在仿真時如何與仿真工具連接,對不同仿真工具也有不同的要求,這樣一方面給測試帶來了不便,另一方面造成測試代碼的移植性差,編好的測試代碼無法在不同的測試軟件平臺下進行。
如此,由于Verilog語言中沒有提供獲取該數(shù)據(jù)文件狀態(tài)的系統(tǒng)任務(wù),使得在進行電子系統(tǒng)的設(shè)計和測試時,往往需要借助于Verilog以外的其它語言或擴展文件,因而造成了使用人員設(shè)計和測試不便,測試代碼移植性差等一系列無法回避的缺點。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種利用Verilog硬件描述語言獲取文件狀態(tài)的方法,利用Verilog語言在無需其它語言介入的基礎(chǔ)上,實現(xiàn)對文件狀態(tài)的判斷,進而實現(xiàn)文件的動態(tài)讀寫交換。
一種利用Verilog硬件描述語言獲取文件狀態(tài)的方法,包括以下步驟a)設(shè)置由一個以上寄存器組成的文件寄存器組,在對文件進行操作時,將文件數(shù)據(jù)存放到文件寄存器組中;b)判斷文件寄存器組中的數(shù)據(jù)是否為該數(shù)據(jù)所在寄存器的原始值,如果是,則該寄存器為空,否則,該寄存器為非空;c)根據(jù)所述文件寄存器組寄存器的狀態(tài)判斷文件狀態(tài)。
該方法步驟c)具體包括判斷文件寄存器組中所有寄存器是否都為空,如果是,則該寄存器組存放的文件為空,否則,該寄存器組存放的文件為非空。
該方法步驟a)所述將文件數(shù)據(jù)存放到文件寄存器組是從第一個寄存器起按順序依次存放。
該方法步驟c)具體包括判斷文件寄存器組中第一個寄存器是否為空,如果是,則該寄存器組存放的文件為空,否則,該寄存器組存放的文件為非空。
該方法步驟c)具體包括統(tǒng)計寄存器組中非原始值的寄存器個數(shù),該個數(shù)為所述文件寄存器組存放的文件中數(shù)據(jù)的個數(shù)。
該方法步驟c)具體包括找出寄存器組中位于最后的非原始值的寄存器,該寄存器為文件寄存器組對應(yīng)文件的結(jié)束點位置。
該方法步驟c)具體包括按數(shù)據(jù)存放的順序依次讀出每一個寄存器的數(shù)據(jù),判斷所讀出的文件寄存器組中下一個被讀出的寄存器每一位是否都為原始值,如果是,則該文件數(shù)據(jù)已被讀完,否則,該文件數(shù)據(jù)尚未讀完。
該方法所述原始值為寄存器初始化前用于代表不確定值的x。
該方法所述原始值為寄存器初始化后用于代表高阻值的z,或任意一個約定不會出現(xiàn)在文件數(shù)據(jù)中的字符。
該方法所述步驟a)進一步包括在文件操作前將文件寄存器組中每個寄存器的每一位都初始化為所述原始值。
該方法所述步驟a)進一步包括在文件操作前將文件寄存器組中每個寄存器的其中至少一位初始化為所述原始值,具體可以是存儲器的開始或中繼任意位置。
該方法所述將文件數(shù)據(jù)存放到文件寄存器組中的方法為采用Verilog語言標準里提供的$readmemb或$readmemh系統(tǒng)任務(wù)將磁盤上的文件讀取并存放到文件寄存器中。
從上述方案可以看出,本發(fā)明所提供的一種利用Verilog硬件描述語言獲取文件狀態(tài)的方法,不用借助其它語言,通過判斷文件寄存器的原始值,就實現(xiàn)了對文件是否為空,文件的數(shù)據(jù)個數(shù)、文件的結(jié)束點和文件數(shù)據(jù)是否被處理完成等一系列文件狀態(tài)信息的判斷;并利用Verilog語言本身的標準系統(tǒng)任務(wù),實現(xiàn)了文件的動態(tài)讀寫交換;增強了通過Verilog語言對文件進行操作的功能;并且本發(fā)明方案代碼編寫簡單,設(shè)計和測試人員只需要使用熟悉的Verilog語言就可完成代碼的編寫和進行測試;由于未引入其它語言使代碼移植性好,可以用任何支持Verilog語言的仿真工具進行仿真。


圖1為本發(fā)明實施例流程圖。
具體實施例方式
本發(fā)明方案在創(chuàng)建用于存放文件數(shù)據(jù)的文件寄存器組時,將文件寄存器組中所有寄存器規(guī)定為某一原始值。采用Verilog語言標準里提供的系統(tǒng)任務(wù)$readmemb或$readmemh進行讀文件操作。當(dāng)文件數(shù)據(jù)被讀入文件寄存器組的寄存器后,文件數(shù)據(jù)內(nèi)容會覆蓋其所在寄存器的原始值。這樣,就可以通過比較寄存器中的數(shù)據(jù)內(nèi)容與寄存器的原始值是否一致,來判斷寄存器是否為空,并進而獲知文件寄存器組所對應(yīng)的文件狀態(tài)信息,如文件是否為空,文件中的數(shù)據(jù)個數(shù),文件的結(jié)束點以及文件是否被讀完等。
下面以磁盤中對文件的讀操作過程為例,對本發(fā)明較佳的實施方案進行詳細描述,參見圖1所示對于文件讀寫操作,采用Verilog語言標準里提供的$readmemb和$readmemh。它們的作用都是將一個數(shù)據(jù)文件一次性從磁盤讀取,然后將其中的數(shù)據(jù)從第一個存儲器開始依次存到文件寄存器組內(nèi)。其中,$readmemb和$readmemh的區(qū)別僅僅是前者讀取二進制數(shù),而后者讀取十六進制數(shù)。
步驟101,定義一個用于保存文件內(nèi)容的文件寄存器組filereg,文件寄存器組中寄存器的個數(shù)和每個寄存器的位寬都應(yīng)該大于或等于所讀取文件中數(shù)據(jù)的個數(shù)和每個數(shù)據(jù)的位寬,例如,定義文件寄存器組filereg中包括500個32位寬的寄存器reg[31:0] filereg[500:1]。
然后初始化文件寄存器里每個寄存器的每一位為原始值xfor(i=0;i<500;i=i+1)filereg[i]=512′hx;//初始化文件寄存器組里每個寄存器內(nèi)容其中,通常情況下,如果進行文件讀寫操作前文件寄存器組filereg沒有被初始化,則所有寄存器每一位的原始值也應(yīng)全部為代表不確定值的“x”,這樣上述初始化可以省略。
步驟102,讀取文件數(shù)據(jù)。例如,采用$readmemh將在磁盤D根目錄下的文件test.dat讀取到該寄存器組里$readmemh(″D/test.dat″,filereg)。
當(dāng)讀取文件數(shù)據(jù)到寄存器時,文件內(nèi)容,即讀取的數(shù)據(jù)會覆蓋所在寄存器,并且存放時,每個數(shù)據(jù)對應(yīng)一個寄存器按順序依次存放,那些沒有存放數(shù)據(jù)的寄存器,其所有位仍然保持原始值“x”。
步驟103,當(dāng)需要獲取文件狀態(tài)時,只需判斷文件寄存器組的每個寄存器中數(shù)據(jù)值與原始值是否一致,如果讀文件的結(jié)果是文件寄存器組中所有寄存器每一位都仍然保持原始值“x”,則說明該文件為空,否則,文件非空。
另外,由于文件數(shù)據(jù)讀入寄存器時,是從第一個寄存器開始按順序存放,因此若僅判斷文件是否非空,也可只判斷第一個寄存器的值是否仍為原始值,如果是,則不用判斷后面的寄存器即可知文件已空。例如if((filereg
)!==512′hx)//當(dāng)前讀取的文件非空,進行相應(yīng)的處理begin……endelse //當(dāng)前讀取的文件空,進行相應(yīng)的處理begin……end同時,由于文件數(shù)據(jù)與寄存器一一對應(yīng),并且按順序存放,因此在讀出數(shù)據(jù)后,通過統(tǒng)計文件寄存器組中原始值改變的寄存器個數(shù),可以獲知文件中數(shù)據(jù)的個數(shù);并通過找出最后一個原始值被改變的寄存器,還可以確定文件的結(jié)束點位置。文件數(shù)據(jù)被讀取到文件寄存器組后,可按數(shù)據(jù)存放的順序依次讀出處理每一個寄存器的數(shù)據(jù),此時,可通過判斷文件寄存器組中下一個被處理的寄存器每一位是否都為原始值“x”,來判斷文件數(shù)據(jù)是否被讀完,即如果讀到的下一個寄存器中每一位都為“x”,則說明文件數(shù)據(jù)已被讀完,否則,說明該文件數(shù)據(jù)尚未讀完。
本發(fā)明的另一方案還可以預(yù)先把文件寄存器組中所有寄存器的每一位都初始化賦予值為“z”,其中“z”代表高阻值,通常不會出現(xiàn)在文件數(shù)據(jù)中。這樣當(dāng)將文件讀入寄存器組時,文件數(shù)據(jù)會覆蓋所在寄存器的“z”,那些沒有被文件數(shù)據(jù)覆蓋的寄存器將仍維持“z”值,如此同樣可以對文件是否為空,文件的數(shù)據(jù)個數(shù)、文件的結(jié)束點和文件數(shù)據(jù)是否被處理完成等文件狀態(tài)做出判斷。同樣道理,本發(fā)明也可以預(yù)先把文件寄存器組中每個寄存器的每一位都初始化為其它任意事先約定不會出現(xiàn)在所讀數(shù)據(jù)文件中的值,來判斷文件的狀態(tài)。
另外,由于在文件數(shù)據(jù)讀入寄存器時,都是按位的順序進行的,因此本發(fā)明方案也可以在初始化時,只將文件寄存器組每個寄存器的第一位賦值為原始值,這樣,在進行文件狀態(tài)判斷時,通過判斷寄存器中數(shù)據(jù)的第一位值也可以獲知文件狀態(tài)。進而,由于文件數(shù)據(jù)讀入寄存器時,如果所讀的文件是非空的,文件數(shù)據(jù)會覆蓋寄存器內(nèi)容,如果寄存器的位寬比文件數(shù)據(jù)的位寬大,那些文件數(shù)據(jù)沒有覆蓋的位也會被填入數(shù)據(jù)“0”,因此,本發(fā)明也可將每個寄存器的某一位或多位設(shè)置為原始值,這樣在進行文件狀態(tài)判斷時,只需判斷所設(shè)置這一位或多位的原始值是否改變,就可獲知寄存器中是否存有文件數(shù)據(jù),進而獲知文件狀態(tài)。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種利用Verilog硬件描述語言荻取文件狀態(tài)的方法,其特征在于,包括以下步驟a)設(shè)置由一個以上寄存器組成的文件寄存器組,在對文件進行操作時,將文件數(shù)據(jù)存放到文件寄存器組中;b)判斷文件寄存器組中的數(shù)據(jù)是否為該數(shù)據(jù)所在寄存器的原始值,如果是,則該寄存器為空,否則,該寄存器為非空;c)根據(jù)所述文件寄存器組寄存器的狀態(tài)判斷文件狀態(tài)。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法步驟c)具體包括判斷文件寄存器組中所有寄存器是否都為空,如果是,則該寄存器組存放的文件為空,否則,該寄存器組存放的文件為非空。
3.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法步驟a)所述將文件數(shù)據(jù)存放到文件寄存器組是從第一個寄存器起按順序依次存放。
4.根據(jù)權(quán)利要求3所述方法,其特征在于,該方法步驟c)具體包括判斷文件寄存器組中第一個寄存器是否為空,如果是,則該寄存器組存放的文件為空,否則,該寄存器組存放的文件為非空。
5.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法步驟c)具體包括統(tǒng)計寄存器組中非原始值的寄存器個數(shù),該個數(shù)為所述文件寄存器組存放的文件中數(shù)據(jù)的個數(shù)。
6.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法步驟c)具體包括找出寄存器組中位于最后的非原始值的寄存器,該寄存器為文件寄存器組對應(yīng)文件的結(jié)束點位置。
7.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法步驟c)具體包括按數(shù)據(jù)存放的順序依次讀出每一個寄存器的數(shù)據(jù),判斷所讀出的文件寄存器組中下一個被讀出的寄存器每一位是否都為原始值,如果是,則該文件數(shù)據(jù)已被讀完,否則,該文件數(shù)據(jù)尚未讀完。
8.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法所述原始值為寄存器初始化前用于代表不確定值的x。
9.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法所述原始值為寄存器初始化后用于代表高阻值的z,或任意一個約定不會出現(xiàn)在文件數(shù)據(jù)中的字符。
10.根據(jù)權(quán)利要求9所述方法,其特征在于,所述步驟a)進一步包括在文件操作前將文件寄存器組中每個寄存器的每一位都初始化為所述原始值。
11.根據(jù)權(quán)利要求9所述方法,其特征在于,所述步驟a)進一步包括在文件操作前將文件寄存器組中每個寄存器的其中至少一位初始化為所述原始值。
12.根據(jù)權(quán)利要求1所述方法,其特征在于,該方法所述將文件數(shù)據(jù)存放到文件寄存器組中的方法為采用Verilog語言標準里提供的$readmemb或$readmemh系統(tǒng)任務(wù)將磁盤上的文件讀取并存放到文件寄存器中。
全文摘要
本發(fā)明公開了一種利用Vrilog硬件描述語言獲取文件狀態(tài)的方法,包括以下步驟設(shè)置由一個以上寄存器組成的文件寄存器組,在對文件進行操作時,將文件數(shù)據(jù)存放到文件寄存器組中;判斷文件寄存器組中的數(shù)據(jù)是否為該數(shù)據(jù)所在寄存器的原始值,如果是,則該寄存器為空,否則,該寄存器為非空,根據(jù)所述文件寄存器組寄存器的狀態(tài)判斷文件狀態(tài)。通過本發(fā)明方案利用Verilog語言在無需其它語言介入的基礎(chǔ)上,實現(xiàn)對文件狀態(tài)的判斷,進而實現(xiàn)在磁盤中進行文件動態(tài)讀寫交換。
文檔編號G06F9/45GK1595358SQ0315703
公開日2005年3月16日 申請日期2003年9月11日 優(yōu)先權(quán)日2003年9月11日
發(fā)明者潘劍鋒, 柳精偉, 雷春, 涂君 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1