|
可綜合的語法子集3 本文節(jié)選自特權(quán)同學(xué)的圖書《FPGA設(shè)計(jì)實(shí)戰(zhàn)演練(邏輯篇)》 配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt (1) 多語句定義:begin…end。(特權(quán)同學(xué),版權(quán)所有) 通俗的說,它就是C語言里的“{ }”,用于單個語法的多個語句定義。其使用示例如下: // 含有命名的begin語句 begin : <塊名> // 可選申明部分 // 具體邏輯 end // 基本的begin語句 begin // 可選申明部分 // 具體邏輯 end (2) 比較判斷:if…else, case…default…endcase。(特權(quán)同學(xué),版權(quán)所有) 判斷語法if…else及case語句是最常用的功能語法,其基本的使用示例如下: // if判斷語句 if(<判斷條件>) begin // 具體邏輯 end // if…else判斷語句 if(<判斷條件>) begin // 具體邏輯1 end else begin // 具體邏輯2 end // if…else if…else判斷語句 if(<判斷條件1>) begin // 具體邏輯1 end else if(<判斷條件2>) begin // 具體邏輯2 end else begin // 具體邏輯3 end // case語句 case(<判斷變量>) <取值1>: <具體邏輯1> <取值2>: <具體邏輯2> <取值3>: <具體邏輯3> default: <具體邏輯4> endcase (3) 循環(huán)語句:for。(特權(quán)同學(xué),版權(quán)所有) 用的也比較少,但也會在一些特定的設(shè)計(jì)中使用它。其示例如下: // for語句 for(<變量名> = <初值>; <判斷表達(dá)式>; <變量名> = <新值>) begin // 具體邏輯 end (4) 任務(wù)定義:task…endtask。(特權(quán)同學(xué),版權(quán)所有) Task更像是C語言中的子函數(shù),task中可以有input、output和inout端口作為出入口參數(shù),它可以用于實(shí)現(xiàn)一個時(shí)序控制。task沒有返回值,因此不可以用在表達(dá)式中。其基本用法如下: task // 可選申明部分,如本地變量申明 begin // 具體邏輯 end endtask (5) 連續(xù)賦值:assign,問號表達(dá)式(?:)。(特權(quán)同學(xué),版權(quán)所有) Assign用于直接互聯(lián)不同的信號或直接給wire變量賦值。其基本用法如下: assign “?:”表達(dá)式就是簡單的if…else語句,但更多的用在組合邏輯中。其基本用法如下: (判斷條件) ? (判斷條件為真時(shí)的邏輯處理) : (判斷條件為假時(shí)的邏輯處理) (6) always模塊:(敏感表可以為電平、沿信號posedge/negedge;通常和@連用)。(特權(quán)同學(xué),版權(quán)所有) always有多種用法,在組合邏輯中,其用法如下: always@(*) begin // 具體邏輯 end always后若有沿信號(上升沿posedge,下降沿negedge)申明,則多為時(shí)序邏輯,其基本用法如下: // 單個沿觸發(fā)的時(shí)序邏輯 always@(<沿變化>) begin //具體邏輯 End // 多個沿觸發(fā)的時(shí)序邏輯 always@(<沿變化1> or <沿變化2>) begin //具體邏輯 End (7) 運(yùn)算操作符:各種邏輯操作符、移位操作符、算術(shù)操作符大多是可綜合的。(特權(quán)同學(xué),版權(quán)所有) Verilog中絕大多數(shù)運(yùn)算操作符都是可綜合的,其列表如下: + // 加 - // 減 ! // 邏輯非 ~ // 取反 & // 與 ~& // 與非 | // 或 ~| // 或非 ^ // 異或 ^~ // 同或 ~^ // 同或 * // 乘,是否可綜合看綜合工具 / // 除,是否可綜合看綜合工具 % // 取模 << // 邏輯左移 >> // 邏輯右移 < // 小于 <= // 小等于 > // 大于 >= // 大等于 == // 邏輯相等 != // 邏輯不等于 && // 邏輯與 || // 邏輯或 (8) 賦值符號:= 和 <=。(特權(quán)同學(xué),版權(quán)所有) 阻塞和非阻塞賦值,在具體設(shè)計(jì)中是很有講究的,我們會在具體實(shí)例中掌握他們的不同用法。(特權(quán)同學(xué),版權(quán)所有) 可綜合的語法是verilog可用語法里很小的一個子集,硬件設(shè)計(jì)的精髓就是力求用最簡單的語句描述最復(fù)雜的硬件,這也正是硬件描述語言的本質(zhì)。對于做RTL級設(shè)計(jì)來說,掌握好上面這些基本語法是很重要。(特權(quán)同學(xué),版權(quán)所有) |