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

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

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

Verilog基本語(yǔ)法概述

jf_GctfwYN7 ? 來(lái)源:IC修真院優(yōu)秀學(xué)員 ? 2023-06-10 10:04 ? 次閱讀

概述

Verilog 是一種用于數(shù)字邏輯電路設(shè)計(jì)硬件描述語(yǔ)言,可以用來(lái)進(jìn)行數(shù)字電路仿真驗(yàn)證、時(shí)序分析、邏輯綜合。

既是一種行為級(jí)(可用于電路的功能描述)描述語(yǔ)言又是一種結(jié)構(gòu)性(可用于元器件及其之間的連接)描述語(yǔ)言

Verilog模塊基本概念

模塊是Verilog的基本單位,除了編譯指令,其他的所有的設(shè)計(jì)代碼都必須放在一個(gè)或多個(gè)模塊中

一個(gè)模塊內(nèi)部可以使用其他模塊,稱為實(shí)例。上層模塊可以引用底層任意層次模塊的變量

模塊內(nèi)部可以包含若干個(gè)“塊”

Verilog模塊總結(jié)

· Verilog中的標(biāo)示符可以是任意一組字母、數(shù)字、$符號(hào)和下劃線符號(hào)的組合,但標(biāo)示符的第一個(gè)字符必須是字母或者下劃線。標(biāo)示符區(qū)分大小寫(xiě)。

· Verilog程序是有模塊組成的,每個(gè)模塊嵌套在module和endmodule聲明語(yǔ)句中。模塊是可以進(jìn)行層次嵌套的

· 每個(gè)Verilog源文件中只準(zhǔn)有一個(gè)頂層模塊,其他為子模塊

· 每個(gè)模塊要進(jìn)行端口定義,并說(shuō)明輸入輸出端口,然后對(duì)模塊的功能進(jìn)行行為邏輯描述

· 程序書(shū)寫(xiě)格式自由,一行可以寫(xiě)幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分幾行寫(xiě)

· 除了endmodule語(yǔ)句,begin...end語(yǔ)句,fork...join語(yǔ)句外,每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有分號(hào)

· 可用/*...*/和//...對(duì)程序的任何部分做注釋,加上必要的注釋,以增強(qiáng)程序的可度性和可維護(hù)性。

Verilog用于模塊的測(cè)試

檢查程序的功能是否正確要求:

· 需要有測(cè)試激勵(lì)信號(hào)輸入到被測(cè)模塊

· 需要記錄被測(cè)模塊的輸出信號(hào)

· 需要把用功能和行為描述的Verilog模塊轉(zhuǎn)換為門(mén)級(jí)電路互連的電路結(jié)構(gòu)(綜合)

· 需要對(duì)已經(jīng)轉(zhuǎn)換為門(mén)級(jí)電路結(jié)構(gòu)的邏輯進(jìn)行測(cè)試(門(mén)級(jí)電路仿真)

· 需要對(duì)布局布線后的電路結(jié)構(gòu)進(jìn)行測(cè)試(布局布線后仿真)

何為仿真?為何要仿真?

仿真是對(duì)電路模塊進(jìn)行動(dòng)態(tài)的全面測(cè)試,過(guò)觀測(cè)被測(cè)試模塊的輸出信號(hào)是否符合要求可以調(diào)試和驗(yàn)證邏輯系統(tǒng)的設(shè)計(jì)和結(jié)構(gòu)是否準(zhǔn)確,并發(fā)現(xiàn)問(wèn)題及時(shí)修改。

仿真可以在幾個(gè)層面上進(jìn)行?每個(gè)層面的仿真有什么意義?

仿真有:前(RTL)仿真,邏輯網(wǎng)表仿真,門(mén)級(jí)仿真和布線后仿真;

前仿真:前(RTL)仿真,邏輯網(wǎng)表仿真,門(mén)級(jí)仿真;可以調(diào)試和驗(yàn)證邏輯系統(tǒng)的設(shè)計(jì)和結(jié)構(gòu)準(zhǔn)確與否,并發(fā)現(xiàn)問(wèn)題及時(shí)修改。

布線后仿真:分析設(shè)計(jì)模塊運(yùn)行是否正常;

模塊的結(jié)構(gòu)

Verilog 的基本設(shè)計(jì)單元是"模塊(block)"

verilog 模塊的結(jié)構(gòu)由在module和endmodule關(guān)鍵字之間的4個(gè)主要部分組成:

module block1(a,b,c,d);  //端口定義
input  a,b,c;
output d;           //I/O聲明
wirex;//信號(hào)類型聲明


assign d = a | x;
assign x = (b &~c); //功能描述
endmodule

邏輯功能的定義

在Verilog中有3種方法可以描述電路的邏輯功能:

1. 用assign語(yǔ)句(連續(xù)賦值語(yǔ)句,常用于描述組合邏輯)

assign x = (b &~c);

2.用元件例化(instance 門(mén)元件例化)

and(門(mén)元件關(guān)鍵字) u_and3(例化原件名)(f,a,b,c);

注1:元件例化即是調(diào)用Verilog提供的元件;

注2:元件例化包括門(mén)元件例化和模塊元件例化;

注3:每個(gè)實(shí)例元件的名字必須唯一,以避免與其他調(diào)用元件的實(shí)例相混淆;

注4:例化元件名也可以省略。

3.用”always“塊語(yǔ)句

always @(posedge clk) //當(dāng)時(shí)鐘上升沿到來(lái)時(shí)執(zhí)行一遍塊內(nèi)語(yǔ)句
begin
if(load)
out = data;   //同步預(yù)置數(shù)據(jù)
else
out = data + cin +1;  //加1計(jì)數(shù)
end

注1:”always“塊語(yǔ)句常用于描述時(shí)序邏輯,也可描述組合邏輯;

注2:”always“塊可用多種手段來(lái)表達(dá)邏輯關(guān)系,如用if...else語(yǔ)句或case語(yǔ)句

注3:”always“塊語(yǔ)句與assign語(yǔ)句是并發(fā)執(zhí)行的,assign語(yǔ)句一定要放在”always“塊語(yǔ)句之外

模塊結(jié)構(gòu)模板:

module <頂層模塊名> (<輸入輸出端口列表>);
output 輸出端口列表;
input 輸入端口列表;


//更推薦
module <頂層模塊名> (
output 輸出端口列表,
input  輸入端口列表
);
//1.使用assign語(yǔ)句定義邏輯功能
wire 結(jié)果信號(hào)名;
assign <結(jié)果信號(hào)名> =表達(dá)式;
//2.使用always塊定義邏輯功能
    always@(<敏感信號(hào)表達(dá)式>)
  begin
  //過(guò)程賦值語(yǔ)句
  //if語(yǔ)句
  //case語(yǔ)句
  //while,repeat,for循環(huán)
  //task,function調(diào)用
  end
//3.文件例化
     ();//模塊元件例化
     ();//門(mén)元件例化
endmodule

關(guān)鍵字

69e2fda4-06b1-11ee-962d-dac502259ad0.png

6a084fa0-06b1-11ee-962d-dac502259ad0.png

標(biāo)示符

任何用Verilog語(yǔ)言描述的東西都可以通過(guò)其名字來(lái)識(shí)別,這個(gè)名字被稱為標(biāo)示符

源文件名,模塊名,端口名,變量名,常量名,實(shí)例名

標(biāo)示符可由字母,數(shù)字,$和下劃線組成,但第一個(gè)字符必須是字母或下劃線,不能是$和數(shù)字

在Verilog中標(biāo)示符是區(qū)分大小寫(xiě)的,且不能與關(guān)鍵字同名。

語(yǔ)匯代碼編寫(xiě)標(biāo)準(zhǔn)

6a2b309c-06b1-11ee-962d-dac502259ad0.png

6a4ae0a4-06b1-11ee-962d-dac502259ad0.png

綜合代碼編寫(xiě)標(biāo)準(zhǔn)

6a6a3bd4-06b1-11ee-962d-dac502259ad0.png

6a8c4de6-06b1-11ee-962d-dac502259ad0.png

6ab0ad3a-06b1-11ee-962d-dac502259ad0.png

6aced59e-06b1-11ee-962d-dac502259ad0.png

6ae3267a-06b1-11ee-962d-dac502259ad0.png

審核編輯:湯梓紅

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

    關(guān)注

    13

    文章

    491

    瀏覽量

    42507
  • 電路設(shè)計(jì)
    +關(guān)注

    關(guān)注

    6653

    文章

    2412

    瀏覽量

    202318
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1339

    瀏覽量

    109880
  • 時(shí)序分析
    +關(guān)注

    關(guān)注

    2

    文章

    127

    瀏覽量

    22537
  • 數(shù)字邏輯電路
    +關(guān)注

    關(guān)注

    0

    文章

    105

    瀏覽量

    15781

原文標(biāo)題:IC學(xué)霸筆記 | Verilog基本語(yǔ)法概述

文章出處:【微信號(hào):IC修真院,微信公眾號(hào):IC修真院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Verilog HDL的基本語(yǔ)法

    Verilog HDL的基本語(yǔ)法 .pdf
    發(fā)表于 08-15 15:06

    Verilog HDL語(yǔ)法

    Verilog HDL語(yǔ)法,要的拿
    發(fā)表于 01-24 22:53

    verilog語(yǔ)法練習(xí)實(shí)踐篇

    verilog語(yǔ)法練習(xí)晉級(jí)篇
    發(fā)表于 09-02 13:40

    verilog HDL語(yǔ)法總結(jié)

    verilog HDL語(yǔ)法總結(jié)
    發(fā)表于 03-16 14:26

    Verilog基礎(chǔ)語(yǔ)法

    Verilog基礎(chǔ)語(yǔ)法
    發(fā)表于 05-27 08:00

    verilog是什么?基本語(yǔ)法有哪些?

    verilog是什么?基本語(yǔ)法有哪些?
    發(fā)表于 09-18 07:41

    可綜合的Verilog語(yǔ)法和語(yǔ)義

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

    Verilog_HDL的基本語(yǔ)法詳解(夏宇聞版)

    Verilog_HDL的基本語(yǔ)法詳解(夏宇聞版):Verilog HDL是一種用于數(shù)字邏輯電路設(shè)計(jì)的語(yǔ)言。用Verilog HDL描述的電路設(shè)計(jì)就是該電路的
    發(fā)表于 10-08 14:48 ?0次下載
    <b class='flag-5'>Verilog</b>_HDL的基本<b class='flag-5'>語(yǔ)法</b>詳解(夏宇聞版)

    Verilog HDL實(shí)驗(yàn)練習(xí)與語(yǔ)法手冊(cè)

    Verilog HDL實(shí)驗(yàn)練習(xí)與語(yǔ)法手冊(cè)-高教
    發(fā)表于 05-11 11:30 ?0次下載

    常見(jiàn)的Verilog行為級(jí)描述語(yǔ)法

    常見(jiàn)的Verilog描述語(yǔ)句與對(duì)應(yīng)的邏輯關(guān)系;熟悉語(yǔ)法與邏輯之間的關(guān)系
    的頭像 發(fā)表于 09-15 08:18 ?1w次閱讀
    常見(jiàn)的<b class='flag-5'>Verilog</b>行為級(jí)描述<b class='flag-5'>語(yǔ)法</b>

    Verilog語(yǔ)法基礎(chǔ)

    Verilog HDL是一種用于數(shù)字系統(tǒng)設(shè)計(jì)的語(yǔ)言。用Verilog HDL描述的電路設(shè)計(jì)就是該電路的Verilog HDL模型也稱為模塊。Verilog HDL既是一種行為描述的語(yǔ)言
    的頭像 發(fā)表于 03-08 14:29 ?1.3w次閱讀

    通過(guò)實(shí)例設(shè)計(jì)來(lái)加深Verilog描述語(yǔ)法理解

    作者:小魚(yú),Xilinx學(xué)術(shù)合作 一.概述 在文章《Verilog HDL入門(mén)思路梳理》我們說(shuō)過(guò)應(yīng)該如何去學(xué)習(xí)Verilog HDL描述。然而第一步,我們需要知道Verilog有哪些
    的頭像 發(fā)表于 01-02 09:45 ?1510次閱讀
    通過(guò)實(shí)例設(shè)計(jì)來(lái)加深<b class='flag-5'>Verilog</b>描述<b class='flag-5'>語(yǔ)法</b>理解

    Verilog語(yǔ)法進(jìn)階

    Verilog語(yǔ)法進(jìn)階說(shuō)明。
    發(fā)表于 05-06 16:14 ?30次下載

    Verilog HDL入門(mén)教程-Verilog HDL的基本語(yǔ)法

    Verilog HDL入門(mén)教程-Verilog HDL的基本語(yǔ)法
    發(fā)表于 01-07 09:23 ?174次下載

    Verilog語(yǔ)法中運(yùn)算符的用法

    verilog語(yǔ)法中使用以下兩個(gè)運(yùn)算符可以簡(jiǎn)化我們的位選擇代碼。
    的頭像 發(fā)表于 10-25 15:17 ?56次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>語(yǔ)法</b>中運(yùn)算符的用法