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

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

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

Verilog基本語法概述

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

概述

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

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

Verilog模塊基本概念

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

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

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

Verilog模塊總結(jié)

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

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

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

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

· 程序書寫格式自由,一行可以寫幾個(gè)語句,一個(gè)語句可以分幾行寫

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

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

Verilog用于模塊的測試

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

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

· 需要記錄被測模塊的輸出信號

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

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

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

何為仿真?為何要仿真?

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

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

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

前仿真:前(RTL)仿真,邏輯網(wǎng)表仿真,門級仿真;可以調(diào)試和驗(yàn)證邏輯系統(tǒng)的設(shè)計(jì)和結(jié)構(gòu)準(zhǔn)確與否,并發(fā)現(xià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;//信號類型聲明


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

邏輯功能的定義

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

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

assign x = (b &~c);

2.用元件例化(instance 門元件例化)

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

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

注2:元件例化包括門元件例化和模塊元件例化;

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

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

3.用”always“塊語句

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

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

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

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

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

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


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

關(guān)鍵字

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

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

標(biāo)示符

任何用Verilog語言描述的東西都可以通過其名字來識別,這個(gè)名字被稱為標(biāo)示符;

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

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

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

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

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

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

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

    關(guān)注

    13

    文章

    492

    瀏覽量

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

    關(guān)注

    6660

    文章

    2421

    瀏覽量

    202890
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1343

    瀏覽量

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

    關(guān)注

    2

    文章

    127

    瀏覽量

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

    關(guān)注

    0

    文章

    105

    瀏覽量

    15790

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    Verilog HDL的基本語法

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

    Verilog HDL語法

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

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

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

    verilog HDL語法總結(jié)

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

    Verilog基礎(chǔ)語法

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

    verilog是什么?基本語法有哪些?

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

    可綜合的Verilog語法和語義

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

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

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

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

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

    常見的Verilog行為級描述語法

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

    Verilog語法基礎(chǔ)

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

    通過實(shí)例設(shè)計(jì)來加深Verilog描述語法理解

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

    Verilog語法進(jìn)階

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

    Verilog HDL入門教程-Verilog HDL的基本語法

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

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

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