資源描述:
《基本輸入輸出函數(shù)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第九講基本的輸入和輸出提綱基本input/output文件測(cè)試程序(Testbenches)ASSERT語(yǔ)句文件對(duì)象VHDL的對(duì)象包括信號(hào)變量常量文件通過(guò)引入文件類(lèi)型,使得我們可以定義和使用文件對(duì)象文件定義文件可以通過(guò)它所存儲(chǔ)的內(nèi)容來(lái)進(jìn)行區(qū)分typetext是字符串文件;typeIntegerFileType是整數(shù)型文件;VHDL1987中的文件定義fileinfile:textisin“inputdata.txt”;fileoutfile:textisout“outputdata.txt”;VHDL1993中的文件定義fileinfile:textopenread_modeis“in
2、putdata.txt”;fileoutfile:textopenwrite_modeis“outputdata.txt”;文件定義:二進(jìn)制I/O文件(VHDL1993)文件定義:二進(jìn)制I/O文件(VHDL1993)VHDL支持read(f,value),write(f,value)和endfile(f)操作;VHDL93支持File_Open()和File_Close()操作;直接和間接的文件打開(kāi)操作;文件定義:二進(jìn)制I/O文件(VHDL1987)文件定義:二進(jìn)制I/O文件(VHDL1987)VHDL1987支持read(f,value),write(f,value)和endfile
3、(f)操作;通過(guò)文件聲明來(lái)間接地進(jìn)行文件打開(kāi)操作;文件定義:TEXTIO包文件定義:TEXTIO包文件是按行(lines)來(lái)組織的;Read()和write()子程序?qū)ine數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作;Readline()和writeline()子程序和文件進(jìn)行數(shù)據(jù)交換;基于Text的I/O操作;在STD庫(kù)的TEXTIO包中封裝了全部的操作子程序從行(lines)中讀取和寫(xiě)入預(yù)定義類(lèi)型數(shù)據(jù)的子程序;針對(duì)std_inputandstd_output的預(yù)定義訪(fǎng)問(wèn)操作;子程序名的重載(Overloaded);文件定義:TEXTIO包的使用文件定義:TEXTIO包的使用文件定義:TEXTIO包的使用文
4、件定義:擴(kuò)展TEXTIO支持其他數(shù)據(jù)類(lèi)型對(duì)用戶(hù)隱藏TEXTIO的ASCII格式;針對(duì)所希望的數(shù)據(jù)類(lèi)型的讀和寫(xiě),如,std_logic_vector,提供類(lèi)型轉(zhuǎn)換子程序;將子程序封裝在包中;將包(package)安裝在庫(kù)(library)中,然后通過(guò)use子句使庫(kù)中的內(nèi)容可見(jiàn);代碼示例:類(lèi)型轉(zhuǎn)換代碼示例:類(lèi)型轉(zhuǎn)換代碼示例:(Bhasker95)輸出格式定義:write(buf,“Thisistheheader”);writeline(outfile,buf);write(buf,“Clk=”);write(buf,clk);write(buf,“,N1=”);write(buf,N1);
5、輸出結(jié)果:ThisistheheaderClk=0,N1=01001011代碼示例:(Bhasker95)讀入的格式化輸入行:代碼示例:(Bhasker95)讀入該格式化輸入行的程序:代碼示例:文件名的處理代碼示例:文件名的處理在上面的代碼中假定“input”映射到模擬器的控制臺(tái)通?!癷nput”和“output”分別映射到標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出代碼示例:測(cè)試模塊代碼示例:測(cè)試模塊代碼示例:測(cè)試程序(Testbenches)?測(cè)試程序具有一定的通用性?基本策略是:施加測(cè)試激勵(lì),測(cè)量和記錄響應(yīng)矢量代碼示例:測(cè)試程序(Testbenches)?測(cè)試程序產(chǎn)生周期性的時(shí)鐘信號(hào)并施加測(cè)矢量代碼示例:
6、測(cè)試程序(Testbenches)代碼示例:結(jié)構(gòu)化測(cè)試模塊測(cè)試激勵(lì)的生成定義功能測(cè)試所需的激勵(lì)矢量和參考矢量激勵(lì)源局部常數(shù)陣列I/O文件時(shí)鐘和復(fù)位信號(hào)的生成通常與激勵(lì)矢量相隔離實(shí)現(xiàn)周期性的激勵(lì)測(cè)試激勵(lì)的生成:示例(Smith96)測(cè)試激勵(lì)的生成:示例(Smith96)測(cè)試結(jié)果的確認(rèn)(Validation)將測(cè)試響應(yīng)矢量與參考矢量相比較,并在外部文件中記錄其中不匹配的部分(出錯(cuò)點(diǎn));同時(shí)需要記錄出錯(cuò)點(diǎn)所對(duì)應(yīng)的仿真時(shí)間點(diǎn);可能需要記錄仿真狀態(tài)。斷言(ASSERT)將測(cè)試響應(yīng)矢量與參考矢量相比較,并在外部文件中記錄其中不匹配的部分(出錯(cuò)點(diǎn));同時(shí)需要記錄出錯(cuò)點(diǎn)所對(duì)應(yīng)的仿真時(shí)間點(diǎn);可能需要記錄
7、仿真狀態(tài)。斷言(ASSERT)assertQ=check(1)andQbar=check(0)report“TestVectorFailed”severityerror;仿真器控制臺(tái)輸出示例SelectedTop-Level:srbench(behavioral):ERROR:TestVectorFailed:Time:20ns,Iteration:0,Instance:/T1.:ERROR:TestVectorFailed:Time:100n