国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

FPGA實戰演練邏輯篇38:可綜合的語法子集3

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

本文地址:http://www.4huy16.com/thread-150671-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 電動兩輪車設計生態系統
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術精英年會深圳站回顧
  • 技術熱潮席卷三城,2025 Microchip中國技術精英年會圓滿收官!
  • 常見深度學習模型介紹及應用培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表