有的時候,寫verilog**時,不太確定是否正確,會寫一段偽c**來進行驗證,比如
module sum(input clk, input rst,output [15:0] cnt);
reg[15:0] data;
always @(posedge clk or negedge rst)
if(!rst)
data <= 16'h0000;
else if(data == 16'hffff)
data <= 16'h0000;
else
data <= data+ 1;
assign cnt=data;
endmodule
上面的**是很簡單的一段計數器**,我們可以用c來進行驗證,
void sum(int clk, int rst, int& data)
if(clk)
else
}else }
int main()
}
驗證的方法可能不是很智慧型,也有一些約束條件,比如模組之間的連線盡量用wire。但是不失為一種**和驗證的手段,雖然比較笨拙。目前來看,c翻譯為verilog是大趨勢,多用於演算法的加速;verilog翻譯為c較少,一般用於測試居多。但是如果在專案開始的時候就有這樣的測試**,不失為一種驗證的方法和手段,效率和靈活性方面也比較可靠。如果是cpu而言,**器配合模擬器,其測試的效果可以提高數倍,乃至數十倍,大多數的開發和除錯,甚至可以用printf來完成。
ps1:
如果module裡面都是wire計算,並且module的wire之間有依賴關係,那麼需要好好理清一下,這是本方法需要注意的乙個地方。
ps2:
b站上面,有一些開發板廠家出的fpga教程,確實不錯,比如可以好好學習下。
verilog學習記(學習設計cpu)
很早之前,自己就對cpu的設計非常感興趣。和十幾年前比較,現在網上開源的cpu 還是很多的,比如說risc v openrisc openmips等等。當然,如果是從學習的角度來說,openrisc和openmips還是非常不錯的。那麼,如果是希望能夠深入了解cpu是怎麼設計的,應該需要做哪些準備呢...
verilog 學習記(如何編寫assert)
我們在編寫c 的時候,一般測試的時候都要用assert進行判斷。那麼怎麼在verilog中進行assert判斷呢?大家知道,system verilog是包含有assert語句的,但是raw verilog沒有。既然verilog 沒有,那麼我們可以自己定義乙個module,一樣可以實現assert...
verilog學習記(加法器)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!程式語言,光看書其實作用不大的,關鍵還需要自己進行實踐。看書的時候,你覺得自己明白了 弄懂了,等到用modelsim實踐的時候還是會出現這樣那樣的問題。因此,還是希望自己能夠不斷地訓練和練習,這樣可以達到熟能生巧的程度。就今天的加法器來說,其實內容...