0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

verilog可綜合的語法子集

FPGA學習筆記 ? 來源:FPGA學習筆記 ? 作者:FPGA學習筆記 ? 2023-07-23 12:25 ? 次閱讀

可綜合的語法是指硬件能夠實現(xiàn)的一些語法,這些語法能夠被EDA工具支持,能夠通過編譯最終生成用于燒錄到FPGA器件中的配置數(shù)據(jù)流。

一、模塊聲明類語法:module...endmodule

每個verilog文件中都會出現(xiàn)模塊聲明類語法,它是一個固定的用法,所有的功能實現(xiàn)都應該包含在...之中。示例如下:

module my_first_prj(<端口信號列表>...)

<邏輯代碼>...

endmodule

二、端口聲明:input,output,inout

每一個module都會有輸入/輸出的信號用于和外部器件或其它module通信銜接。對于本地module而言,這些信號可以歸為三類,即輸入(input)信號、輸出(output)信號和雙向(inout)信號。示例如下:

input sys_clk;

input wite rst_n;

input[7:0] data_in;

三、參數(shù)定義:parameter

Parameter用于申明一些常量,主要是便于模塊的移植或升級時的修改。示例如下:

module<模塊命名>(<端口命名1>,<端口命名2>,...);

//輸入端口申明

input<端口命名1>;

input wire<端口命名2>;

input[<最高位>:<最低位>]<端口命名3>;

...

//輸出端口申明

output<端口命名4>;

output[<最高位>:<最低位>]<端口命名5>;

output reg[<最高位>:<最低位>]<端口命名6>;

...

//參數(shù)定義

parameter<參數(shù)命名1>=<默認值1>;

parameter[<最高位>:<最低位>]<參數(shù)命名2>=<默認值2>;

...

//具體功能邏輯代碼

...

endmodule

四、信號類型:wite,reg等

在下圖所示的簡單電路中,分別定義兩個寄存器(reg)鎖存當前的輸入din。每個時鐘clk上升沿到來時,reg都會鎖存到新的輸入數(shù)據(jù),而wire就是這兩個reg之間直接的連線。 //圖 作為input或inout的信號端口只能是wire型,而作為output的信號端口則可以是wire或reg。示例如下:

//定義一個wire信號

wire;變量名>

//給一個定義的wire信號直接連接賦值

//該定義等同于分別定義一個wire信號和使用assign語句進行賦值

wire=<常量或變量賦值>;變量名>

//定義一個多bit的wire信號

wire[<最高位>:<最低位>];變量名>

//定義一個reg信號

reg;變量名>

//定義一個賦初值的reg信號

reg=<初始值>;變量名>

//定義一個多bit的reg信號

reg[<最高位>:<最低位>];變量名>

//定義一個賦初值的多bit的reg信號

reg[<最高位>:<最低位>]=<初始值>;變量名>

//定義一個二維的多bit的reg信號

reg[<最高位>:<最低位>][<最高位>:<最低位>];變量名>

多語句定義:begin...end

//含有命名的begin語句

begin:<塊名>

//可選申明部分

//具體邏輯

end

//基本的begin語句

begin

//可選申明部分

//具體邏輯

end

五、比較判斷:if...else,case...default...endcase

示例如下:

//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

六、循環(huán)語句:for

使用較少,示例如下:

//for語句

for(<變量名>=<初值>;<判斷表達式>;<變量名>=<新值>)

begin

//具體邏輯

end

七、任務定義:task...endtask

task類似于C的子函數(shù),可以有input、output和inout端口作為輸入口參數(shù),可以用來實現(xiàn)單時序控制,無返回值,不可用于表達式之中。示例如下:

task;命名>

//可選申明部分,如本地變量申明

begin

//具體邏輯

end

endtask

八、連續(xù)賦值:assign,問號表達式(?:)

Assign用于直接互連不同的信號或者直接給wire變量賦值。其基本用法如下: assign=<變量或常量>;變量名> ?:表達式就是簡單的if...else語句,示例如下:

(判斷條件)?(判斷條件為真時的邏輯處理):(判斷條件為假時的邏輯處理)

九、always模塊

敏感表可以為電平、沿信號posedge/negedge,通常和@連用。組合邏輯的用法如下:

always@(*)

begin

//具體邏輯

end

always之后若有沿信號(上升沿posedge,下降沿negedge)申明,則多為時序邏輯,用法如下:

//單個沿觸發(fā)的時序邏輯

always@(<沿變化>)

begin

//具體邏輯

end

always@(<沿變化1> or <沿變化2>)

begin

//具體邏輯

end

十、運算操作符

包括邏輯操作符、移位操作符、算術操作符大多可以進行綜合,列表如下:

+ //加

- //減 ! //邏輯非 ~ //取反 & //與 ~& //與非 | //或 ~| //或非 ^ //異或 ^~ //同或 ~^ //同或

* //乘,是否可綜合看綜合工具 / //除,是否可綜合看綜合工具 % //取模 << //邏輯左移

>> //邏輯右移 < //小于 <= //小于等于 < //大于 = //大于等于 == //邏輯相等 != //邏輯不相等 && //邏輯與 || //邏輯或

十一、賦值符號:=和<=

分別為阻塞賦值和非阻塞賦值,后續(xù)博客詳細介紹。

以上便是Verilog基礎語法,在RTL設計中,需要掌握。


審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21750

    瀏覽量

    604069
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110141
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59838
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32899
收藏 人收藏

    評論

    相關推薦

    綜合Verilog語法和語義(劍橋大學,影?。?/a>

    綜合Verilog語法和語義(劍橋大學,影?。?/div>
    發(fā)表于 08-06 13:03

    verilog HDL 綜合模型的結構

    語句在用綜合工具綜合時將被忽略或者報錯。作為設計者,應該對綜合模型的結構有所了解。 雖然不同的綜合工具對
    發(fā)表于 10-20 08:10

    Verilog綜合子集

    Verilog綜合子集
    發(fā)表于 04-01 12:44

    FPGA入門:Verilog/VHDL語法學習的經(jīng)驗之談

    10來條基本語法就可以打天下了,怎么樣?HDL語言一下變簡單了吧。這么說一點不夸張,本書的重點就是要通過各種實現(xiàn)到板級的例程讓大家快速的掌握如何使用綜合
    發(fā)表于 01-29 09:20

    FPGA實戰(zhàn)演練邏輯篇36:綜合語法子集1

    綜合語法子集1本文節(jié)選自特權同學的圖書《FPGA設計實戰(zhàn)演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 所謂
    發(fā)表于 06-12 10:59

    FPGA實戰(zhàn)演練邏輯篇37:綜合語法子集2

    綜合語法子集2本文節(jié)選自特權同學的圖書《FPGA設計實戰(zhàn)演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt(1) 參數(shù)定義:parameter
    發(fā)表于 06-15 14:57

    FPGA實戰(zhàn)演練邏輯篇38:綜合語法子集3

    綜合語法子集3本文節(jié)選自特權同學的圖書《FPGA設計實戰(zhàn)演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt(1) 多語句定義:begin…end
    發(fā)表于 06-17 11:53

    勇敢的芯伴你玩轉Altera FPGA連載30:綜合語法子集1

    `勇敢的芯伴你玩轉Altera FPGA連載30:綜合語法子集1特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1i5LMUUD 所謂
    發(fā)表于 12-06 19:50

    勇敢的芯伴你玩轉Altera FPGA連載31:綜合語法子集2

    ` 本帖最后由 rousong1989 于 2017-12-12 20:46 編輯 勇敢的芯伴你玩轉Altera FPGA連載31:綜合語法子集2特權同學,版權所有配套例程和更多資料下載鏈接
    發(fā)表于 12-12 20:43

    勇敢的芯伴你玩轉Altera FPGA連載32:綜合語法子集3

    `勇敢的芯伴你玩轉Altera FPGA連載32:綜合語法子集3特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1i5LMUUD 多語句定義
    發(fā)表于 12-14 19:53

    勇敢的芯伴你玩轉Altera FPGA連載33:綜合語法子集4

    `勇敢的芯伴你玩轉Altera FPGA連載33:綜合語法子集4特權同學,版權所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1i5LMUUD 連續(xù)賦值
    發(fā)表于 12-19 21:36

    綜合Verilog語法和語義

    綜合Verilog語法和語義(劍橋大學,影印):第七版
    發(fā)表于 05-21 14:50 ?27次下載
    <b class='flag-5'>可</b><b class='flag-5'>綜合</b>的<b class='flag-5'>Verilog</b><b class='flag-5'>語法</b>和語義

    如何設計綜合Verilog代碼和應該遵循什么原則

    在接觸Verilog 語法參考手冊的時候,我們發(fā)現(xiàn)其提供了一組非常豐富的功能來描述硬件。所以大家往往會疑惑那些Verilog語句是綜合的,
    發(fā)表于 04-20 10:59 ?4606次閱讀

    綜合Verilog語法和語義詳細資料說明

    合成VerilogVerilog HDL的一個子集,它位于當前合成工具(RTL和行為)的領域內。本文檔指定了Verilog的一個
    發(fā)表于 01-21 16:30 ?9次下載
    <b class='flag-5'>可</b><b class='flag-5'>綜合</b>的<b class='flag-5'>Verilog</b><b class='flag-5'>語法</b>和語義詳細資料說明

    綜合Verilog語法和語義的資料合集免費下載

    開發(fā)所有綜合Verilog的語義所選擇的方法是從過于簡單的{V0{開始,然后在簡單的語義中斷時使其更加復雜。這樣可以避免不必要的復雜性。計劃對越來越大的子集(V1、V2等)進行重新排
    發(fā)表于 02-05 16:24 ?14次下載
    <b class='flag-5'>可</b><b class='flag-5'>綜合</b>的<b class='flag-5'>Verilog</b><b class='flag-5'>語法</b>和語義的資料合集免費下載