我想編寫一個VPI/PLI接口,它將打開音頻文件(即wav,aiff等) 並將數據呈現給Verilog仿真器。目前我正在使用Icarus,並希望 使用libsndfile來處理輸入文件格式和數據類型轉換。簡單的Verilog VPI模塊打開音頻文件
我不太清楚在C代碼中使用什麼...已經看過IEEE 1364-2001,仍然 混淆我應該使用哪些函數。
理想情況下,我想有一個數據端口(串行或並行),時鐘輸入 和啓動/停止引腳的verilog模塊。我想實現兩個模塊,一個用於從文件中回放,另一個將記錄來自測試過濾器的輸出。
我可以做到這一切在C和剛剛實例化模塊在我的測試平臺,不然我就必須寫 功能(比如$read_audio_data
)和包裝器模塊調用它在每個時鐘脈衝?
嗯,或者可能需要創建該模塊,然後獲取它的句柄並以某種方式將值/ vect 傳遞給句柄?
我不太關心如何設置文件名,因爲我可能 不會從verilog代碼中完成。 我可能會堅持24位整數樣本, libsndfile
應該很好地處理轉換。 也許,我現在會堅持使用串行的方式(甚至可能會以類似I2S的方式進行),如果需要,還可以在Verilog中對其進行反序列化。
另外我看了看Icarus plug-in,它實現了一個讀取PNG文件的視頻攝像頭, 雖然有很多方面的圖像處理,然後有音頻。 因此,該代碼目前看起來有點過於複雜 - 我沒有設法讓它運行 。
我在實現'audio_data <= $ ReadSample;'時遇到了一些問題,所以我在$ ReaddSample(audio_cah1n1,audo_chan2);'fashion中做了它。它們的區別基本上是 它是函數還是任務,根據它們的行爲方式,函數看起來是一件非常糟糕的事情......似乎函數在仿真過程中的任何時候都可能會被調用,而且如果我正在計算C函數中的示例索引! – errordeveloper 2011-06-23 13:46:08