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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

verilog可綜合的語法子集

FPGA學(xué)習(xí)筆記 ? 來源:FPGA學(xué)習(xí)筆記 ? 作者:FPGA學(xué)習(xí)筆記 ? 2023-07-23 12:25 ? 次閱讀

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

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

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

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

<邏輯代碼>...

endmodule

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

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

input sys_clk;

input wite rst_n;

input[7:0] data_in;

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

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

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

//輸入端口申明

input<端口命名1>;

input wire<端口命名2>;

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

...

//輸出端口申明

output<端口命名4>;

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

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

...

//參數(shù)定義

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

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

...

//具體功能邏輯代碼

...

endmodule

四、信號類型:wite,reg等

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

//定義一個(gè)wire信號

wire;變量名>

//給一個(gè)定義的wire信號直接連接賦值

//該定義等同于分別定義一個(gè)wire信號和使用assign語句進(jìn)行賦值

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

//定義一個(gè)多bit的wire信號

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

//定義一個(gè)reg信號

reg;變量名>

//定義一個(gè)賦初值的reg信號

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

//定義一個(gè)多bit的reg信號

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

//定義一個(gè)賦初值的多bit的reg信號

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

//定義一個(gè)二維的多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(<變量名>=<初值>;<判斷表達(dá)式>;<變量名>=<新值>)

begin

//具體邏輯

end

七、任務(wù)定義:task...endtask

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

task;命名>

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

begin

//具體邏輯

end

endtask

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

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

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

九、always模塊

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

always@(*)

begin

//具體邏輯

end

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

//單個(gè)沿觸發(fā)的時(shí)序邏輯

always@(<沿變化>)

begin

//具體邏輯

end

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

begin

//具體邏輯

end

十、運(yùn)算操作符

包括邏輯操作符、移位操作符、算術(shù)操作符大多可以進(jìn)行綜合,列表如下:

+ //加

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

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

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

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

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

以上便是Verilog基礎(chǔ)語法,在RTL設(shè)計(jì)中,需要掌握。


審核編輯:湯梓紅

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

    關(guān)注

    1625

    文章

    21628

    瀏覽量

    601261
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1343

    瀏覽量

    109927
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59667
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    649

    瀏覽量

    32775
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    verilog HDL 綜合模型的結(jié)構(gòu)

    語句在用綜合工具綜合時(shí)將被忽略或者報(bào)錯(cuò)。作為設(shè)計(jì)者,應(yīng)該對綜合模型的結(jié)構(gòu)有所了解。 雖然不同的綜合工具對
    發(fā)表于 10-20 08:10

    Verilog綜合子集

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

    FPGA入門:Verilog/VHDL語法學(xué)習(xí)的經(jīng)驗(yàn)之談

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    綜合Verilog語法和語義

    綜合Verilog語法和語義(劍橋大學(xué),影?。?第七版
    發(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>和語義

    如何設(shè)計(jì)綜合Verilog代碼和應(yīng)該遵循什么原則

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

    綜合Verilog語法和語義詳細(xì)資料說明

    合成VerilogVerilog HDL的一個(gè)子集,它位于當(dāng)前合成工具(RTL和行為)的領(lǐng)域內(nèi)。本文檔指定了Verilog的一個(gè)
    發(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>和語義詳細(xì)資料說明

    綜合Verilog語法和語義的資料合集免費(fèi)下載

    開發(fā)所有綜合Verilog的語義所選擇的方法是從過于簡單的{V0{開始,然后在簡單的語義中斷時(shí)使其更加復(fù)雜。這樣可以避免不必要的復(fù)雜性。計(jì)劃對越來越大的子集(V1、V2等)進(jìn)行重新排
    發(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>和語義的資料合集免費(fèi)下載