verilog學習記(verilog翻譯成c)

2021-10-12 17:50:06 字數 939 閱讀 1747

有的時候,寫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實踐的時候還是會出現這樣那樣的問題。因此,還是希望自己能夠不斷地訓練和練習,這樣可以達到熟能生巧的程度。就今天的加法器來說,其實內容...