吳斌 劉夏青 車炯暉 張旭洲

摘 要:針對FPGA邏輯設計仿真,提出一種TEXTIO數(shù)據(jù)讀寫方法。當測試激勵比較大且復雜時,可以用MATLAB仿真產(chǎn)生,測試結果也可以在MATLAB中進行分析,本文給出仿真實例,證明該方法可行精確,為邏輯設計提供極大的方便。
關鍵詞:FPGA;TEXTIO;仿真;MATLAB
近年來,電子設計領域所涉及的算法越來越復雜,導致對FPGA實現(xiàn)的設計要求越來越高,作為邏輯開發(fā)的重要環(huán)節(jié),仿真能及時發(fā)現(xiàn)設計錯誤,加快設計進度,提高設計可靠性。
本文針對最基本的行為仿真,提出一種仿真信號由TEXTIO文件讀寫形式的方法,用于復雜系統(tǒng)測試矢量數(shù)目較大的邏輯設計。
1 基于TEXTIO的交互仿真方法
在測試矢量非常大時可以用TEXTIO的方法來進行仿真。TEXTIO是VHDL標準庫STD中的一個程序包(Package),它提供了VHDL與磁盤文件直接訪問的橋梁,可以利用它來讀取或寫入仿真數(shù)據(jù)到文件中,TEXTIO的使用是通過testbench來進行的,即在testbench中可以調用TEXTIO進行仿真[ 1 ]。
TEXTIO對文本文件是按行來處理的,TEXTIO程序包中有專門的過程可以讀一行或寫一行字符串,并且有一個函數(shù)檢查文件是否結束。
類型LINE是TEXTIO程序包中的基本單元,用于保持將要寫到文件的一行字符串或保持從一個文件讀取字符串[ 2 ]。一般情況下,該方法用到的過程和函數(shù)為readline,read,writeline,write和endfile等。
2 仿真實例
本文將針對歐拉公式這一數(shù)學理論進行邏輯設計以及功能仿真驗證。
輸入信號利用MATLAB仿真產(chǎn)生,假設兩信號sig1和sig2頻率分別為10MHz和20MHz,取兩信號實部和虛部,并將其量化成與邏輯設計輸入信號位數(shù)相同的二進制BIT量,分別存入4個.txt文本文件中。
在編寫testbench過程中,讀輸入信號的和將寫輸出信號是本文提出方法的關鍵。
定義4個文件類型作為輸入文件目標,并定義4個變量用來保持從文件讀取的行,4個BIT_VECTOR類型的變量用來保持從行讀取的值。因為讀取的值是BIT_VECTOR,還需要轉換為STD_LOGIC_VECTOR類型,可以使用函數(shù)TO_STDLOGICVECTOR來實現(xiàn)。
以其中一個變量為例,讀輸入信號文件部分關鍵程序為:
FILE in_file1:TEXT IS IN"E:/signal/data1_I.txt";
VARIABLE in_line1:LINE;
VARIABLE int_val1:BIT_VECTOR(13 downto 0);
while not(endfile(in_file1))loop
readline(in_file1,in_line1);
read(in_line1,int_val1);
io_i<=to_stdlogicvector(int_val1);
寫文件過程也類似,仿真過程中將輸出信號輸出到2個.txt文件中,部分程序樣例為:
FILE out_file1:TEXT IS OUT"E: /signal/sig_I_new.txt";
VARIABLE out_line1:LINE;
write(out_line1,to_bitvector(out_i));
writeline(out_file1,out_line1);
在MATLAB中畫出兩信號sig1和sig2以及兩信號復乘后的頻譜,與ISE中復乘邏輯仿真后的頻譜結果進行對比分析,仿真圖如圖1所示。
仿真結果標明,輸入信號為10MHz和20MHz的兩個復信號在MATLAB中復乘的結果為30MHz的復信號,邏輯設計中復乘后產(chǎn)生的信號也為30MHz的復信號,與預期結果相同。
3 結論
在FPGA邏輯設計中,可以采用TEXTIO方法進行讀取測試激勵,這些激勵也能夠在MATLAB中的生成,在測試結束之后我們還能夠利用MATLAB進行分析測試結果,從而實現(xiàn)功能驗證,為邏輯設計提供極大的方便。
參考文獻:
[1] 湯琦,蔣軍敏.Xilinx FPGA高級設計及應用[M].北京:電子工業(yè)出版社,2012.
[2] 江思敏.VHDL數(shù)字電路及系統(tǒng)設計[M].北京:機械工業(yè)出版社,2006.
作者簡介:吳斌(1984-),男,蒙古族,內蒙古寧城人,碩士,工程師,主要研究方向:機載計算機技術。