您的位置:首页 > 编程语言 > C语言/C++

(原創) 由C語言學習Verilog的思維轉換 (C/C++) (C) (IC Design) (Verilog)

2008-06-17 21:04 417 查看
Abstract

Verilog由於在語法上向C靠攏,若熟悉C語言,學Verilog倍感親切,但也由於語法類似,若把Verilog當成C語言來思考,怎很難抓到硬體的精神。

Introduction

Verilog有3點思維與C語言不一樣

1.軟體是循序的,而硬體是並行的

C語言是一行一行的執行,就算組合語言也是一樣,或許你會說threading,但在微觀下仍是循序地執行。但硬體電路就不一樣,電路只要一插上電,所有電路就同時工作。

如以下的Verilog

1 always@(posedge clk) begin

2 e <= a & b;

3 f <= c & d;

4 end

雖然看起來是 e <= a & b; 在 f <= c & d;前面,但實際上合成電路後如下圖所示



由上圖得知,e和f並沒有先後之分,是並行的。

2.硬體要循序,要靠clock和FSM

或許你會說,『我的演算法就是要循序一步一步的做,如C語言那樣,那怎麼辦?』,若Verilog要這樣,就得靠clock並且搭配FSM,當一個state完成後,進入下一個state,這樣就能依照clock的進行,而達成循序的要求。

3.Verilog程式碼沒有先後之分

除了blocking assignment有先後執行順序,而nonblocking assignment同時執行外,Verilog的程式沒有前後順序之分,所以才稱為硬體『描述』語言,而非硬體『程式』語言,先寫的不代表先執行,後寫的也不代表後執行,只是代表硬體的架構的描述,也就是說,將原來的電路圖,變成文字描述而已。

4.多用RTL Viewer和ModelSim觀察自己寫的code

Verilog寫法小小的差異,合成出來的硬體就可能有天壤之別,多用RTL Viewer觀察合成出來的硬體是否和自己預期的一樣,並多用ModelSim觀察跑出來的波形,這樣會增加你對Verilog的掌握度。

Conclusion

很多人學了Verilog,還是把它當C語言寫,事實上他們只是語法類似,但背後的思維並不一樣,唯有『心中有硬體』,才能設計出好的電路。

Reference

王钿、卓興旺 2007,基於Verilog HDL的數字應用設計,國防工業出版社
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐