看板 Electronics 關於我們 聯絡資訊
我不是很清楚我記的對不對 印象中 begin end 會常出現於 Always...或者基於Always內的 if....for.... 這類的 因此我個人是這樣解讀 Begin end 適用於 所謂的Behavical語法內(就是 由上向下執行的那種 因此有人會說與C的{}很像) 至於assign 這是Data flow的語法 頂多出現 XX?OO:AA這種很像if的語法 不會出現Always或者for當然不會用到Begin end 因為這個只會在描述兩行以上才會有 而assign 這種Data flow的語法 只有一行 因此不會用到 至於Begin end的使用時機 一者語法規定 印象中有幾類好像必用 像generate for.. 一者是Behavical中描述超過一行的 要用Begin end 來當{}用 因為這是一年前修課學的 很多都忘囉 如果錯誤請幫忙修正 感恩~ ※ 引述《glaxchen (請勿拍打餵食)》之銘言: : ※ 引述《peterstun (彼得)》之銘言: : : 有些問題我會參考c語言的寫法 : : 不過verilog中 begin ....end 的使用時機是什麼? 是必須的嗎? : : 在 assign c=......時就不用 : : 在跑loop時會用到 begin的使用時機是啥呢? 謝謝 : 1. verilog是硬體描述語言,寫法請不要參考C的,就算看起來很像... : 2. verilog定義了很多語法供不同場合用,像是test bench是要產生pattern : ,不需要在意是否可合成,因此可以寫的像是高階語言。所以要看你寫的 : 是那一層次的。behavioral、RTL、甚至是cell define等,各有不同。 : 3. 原則上你只要記得多行敘述時,需要begin ... end。而assign通常是一行寫完。 : 其他部分多寫些就會比較清楚,就不詳述了。 : 希望對你有所幫助^^ -- 生活中不缺乏美、只是缺乏發現。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.7.209