2011-02-27 217 views
2

我明白模塊基本上就像C++函數。但是,我沒有找到像調用這些函數的main()部分。沒有main()部分,它如何工作?Verilog沒有main()這樣的東西?

+1

沒有「開始」;這一切都發生在一次。 – 2011-02-27 04:29:32

+0

Verilog的目標是什麼?合成編碼與測試平臺編碼不同。 – 2011-02-27 21:20:29

+0

與main()最接近的是最外層的頂層模塊,並且它可以被命名爲任何你喜歡的不限於Start或main()或條目或類似的東西。在該模塊中,您將看到引用的其他模塊,類似於從main()調用其他函數。 – 2011-03-01 19:58:50

回答

7

試圖找到(或概念力)一個main(),相當於在HDL是錯誤的方式去學習HDL - 它會阻止你進步。對於可合成的描述,你需要從連續思考(一條指令依次運行)到「並行」思考(所有內容正在運行全部時間)。在精神上,從左到右看你的代碼,而不是從上到下,你可能會意識到main()的概念並不是那麼有意義。在HDL中,我們不「調用」函數,我們實例化模塊並將它們的端口連接到網絡;再一次,你需要改變你對過程的心理看法。

一旦你得到它,它會變得更光滑...

2

請記住,Verilog的正常使用是建模/描述電路。當你通電時,所有的電路開始運行,所以你需要編寫你的復位邏輯來讓每個電路進入穩定的可用操作狀態。通常情況下,您將包含重置行並針對此進行初始化。

2

的Verilog有initial塊是有點像main()在C.這些是計劃從時間0運行的Verilog可以有多個initial塊,雖然語句,即併發執行的列表。

always塊也將作爲main()如果他們已經空敏感列表:

always begin // no sensitivity list 
    s = 4; 
    #10;  // delay statements, or sim will infinite loop 
    s = 8; 
    #10; 
end 
+0

如果你沒有在這些塊內部實例化一個模塊會怎麼樣。它仍然運行? – 2011-02-27 08:23:03

+1

他們這樣做,如果他們的輸入是敏感的任何值被扭曲。 – Marty 2011-02-27 09:00:25

相關問題