精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

Verilog HDL中常用預(yù)編譯命令介紹

FPGA之家 ? 來源:時沿科技 ? 作者:NemoYxc ? 2022-03-15 11:24 ? 次閱讀

“ 此小節(jié)中介紹Verilog HDL中提供的常用預(yù)編譯命令:`define ;`timescale ;`include ;`ifdef 、`elsif、`endif ?!?/p>

01、時間尺度`timescale

`timescale命令用于在文件中指明時間單位和時間精度,通常在對文件進行仿真時體現(xiàn)。EDA工具可以支持在一個設(shè)計中可根據(jù)仿真需要在不同模塊里面指定不同的時間單位。如模塊A仿真的時間單位為皮秒(ps),模塊B仿真的時間單位為納秒(ns)。使用`timescale命令語句格式如下:

`timescale 《時間單位》 / 《時間精度》

使用時注意《時間單位》和《時間精度》必須是整數(shù),且時間精度不能大于時間單位值。

其中時間單位是定義仿真時間和延遲時間的基準單位;時間精度是定義模塊仿真時間的精確程度的,又被稱為取整精度(在仿真前,被用來對延遲的時間值進行取整操作,例程中會對此進行介紹)。如果在同一個設(shè)計中,出現(xiàn)多個`timescale命令,工具會采用最小的時間精度值來決定仿真的時間單位。

下面舉例說明`timescale用法。

`timescale 1ns / 1ps:此命令已定義模塊中的時間單位為1ns,即仿真模塊中所有的延遲時間單位都是1ns的整數(shù)倍;定義了模塊的時間精度為1ps,即仿真模塊中延遲單位可以指定到小數(shù)點后3位,小數(shù)超過3位會進行取小數(shù)點后3位的操作。

02、宏定義`define

在設(shè)計中,為了提高程序可讀性和簡化程序描述,可以使用指定的標識符來代替一個長的字符串,或者使用一個簡單的名字來代替沒有含義的數(shù)字或者符號,此時需使用到宏定義命令`define。它的使用形式如下:

`define signal(宏名) string(宏內(nèi)容)

在設(shè)計中進行了以上聲明后,在與編譯處理時,在此命令后程序中所有的signal都替換成string,此過程稱為“宏展開”。具體使用方法如下:

例1 :`define LENGTH 16

reg[ `LENGTH–1 : 0 ] writedata;//即定義reg[15:0]writedata;

例2 :`define expression a+b+c

assign data = `expression + d ; // 經(jīng)宏展開之后assign //add_data = a+b+c+d;

例3 :`define A a+b

`define B c+`A

assign data = `B ; // 即data = c + a + b;

03、文件包含指令`includ

C語言中聲明頭文件很類似。其一般形式為:`include “文件名”

例:

文件para.v有一個宏定義 `defineA 2+3

test.v文件中可以直接調(diào)用

`timescale1ns/1ps`include"para.v"`include"para2.v"module test(    input    wire          clk,  outputreg[7:0]result);  always@(posedge  clk)    beginresult<=?`A+10;endendmodule

仿真結(jié)果如下:

e20d57bc-9645-11ec-952b-dac502259ad0.png

關(guān)于“文件包含的幾點說明”:

  1. 一個`include只能指定一個包含文件;

  2. `include中的文件名可以是相對路徑,也可以是絕對路徑(ISE中調(diào)用Modelsim仿真的時候得用絕對路徑,否則Modelsim會報錯);

  3. 如果文件1包含文件2,而文件2要用到文件3的內(nèi)容,那么在文件1中用`include命令分別包含文件2和文件3文件3在文件2的前面

例:

para.v: `define A 2+3

para2.v : `define B `A+2

test.v中:

`timescale 1ns / 1ps`include"para.v"`include  " para2.v"module test(     input    wire          clk,       output    reg    [7:0]    result   );  always@(posedge  clk)    beginresult<=?`B+10;    endendmodule

仿真結(jié)果如下所示:

e2279230-9645-11ec-952b-dac502259ad0.png

04、 條件編譯指令(`ifdef、`elsif、`endif)

條件預(yù)編譯指令有如下幾種形式:

1. `ifdef宏名

程序段1

`elsif

程序段2

`endif

當宏名被定義,則對程序段1進行編譯,程序段2被忽略;否則編譯程序段2,程序段1倍忽略。

`ifdef宏名

程序段1

`endif

其中程序段可以是語句組也可以是命令行

例:

`timescale1ns/1ps`defineMODE_ADD`defineMODE_ENABLEmodule test_add(    input                            clk,input    rst_n,    output  reg     [ 15 : 00 ]      data_cal,    output  reg     [ 15 : 00 ]      data_cal2  );wire[15:0]data;  `ifdef  MODE_ADD    always@(posedge  clk  or  negedge  rst_n) begin      if(!rst_n)        data_cal    <=    1'b0;      else         data_cal    <=    data_cal  + 16'd100;   end  `elsif   MODE_ADD2    always@(posedge  clk  or  negedge  rst_n) begin      if(!rst_n)        data_cal    <=    1'b0;      else        data_cal    <=    data_cal  + 16'd200;       end  `endif
  `ifdef  MODE_ENABLE      `define    M    10  `elsif   MODE_ENABLE2      `define    M    20`endif  always@(posedge  clk  or  negedge  rst_n) begin    if(!rst_n)      data_cal2  <=    1'b0;    else      data_cal2  <=    `M;endassigndata=`M;endmodule

仿真結(jié)果如下:

e25366e4-9645-11ec-952b-dac502259ad0.png

如果將:

`defineMODE_ADD`defineMODE_ENABLE改成`defineMODE_ADD2`defineMODE_ENABLE2

仿真結(jié)果如下:


e27a6294-9645-11ec-952b-dac502259ad0.png

審核編輯:郭婷


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

    關(guān)注

    50

    文章

    4044

    瀏覽量

    133421
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1345

    瀏覽量

    109986
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2709

    瀏覽量

    172902

原文標題:Verilog基礎(chǔ)知識學(xué)習(xí)筆記(五)

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

收藏 人收藏

    評論

    相關(guān)推薦

    未能獲得預(yù)編譯的模擬庫信息

    HDL模擬庫”中的“編譯庫目錄”屬性中設(shè)置模擬庫路徑模擬行為模型“過程。 - 如果庫尚未編譯,請通過運行“編譯HDL仿真庫”過程或在
    發(fā)表于 03-17 10:17

    Verilog-HDL實踐與應(yīng)用系統(tǒng)設(shè)計

    Verilog-HDL實踐與應(yīng)用系統(tǒng)設(shè)計本書從實用的角度介紹了硬件描述語言Verilog-HDL。通過動手實踐,體驗Verilog-HDL的語法結(jié)構(gòu)、功能等內(nèi)涵。在前五章,以簡單的實例
    發(fā)表于 11-14 22:57 ?147次下載
    <b class='flag-5'>Verilog-HDL</b>實踐與應(yīng)用系統(tǒng)設(shè)計

    Verilog HDL華為入門教程

    Verilog HDL 華為入門教程 本文主要介紹Verilog HDL 語言的一些基本知識,目的是使初學(xué)者能夠迅速掌握
    發(fā)表于 02-11 08:35 ?140次下載

    Verilog HDL入門教程(華為絕密資料)

    Verilog HDL入門教程(華為絕密資料) 本文主要介紹Verilog HDL 語言的一些基本知識,目的是使初學(xué)者能夠迅速掌握
    發(fā)表于 04-02 11:52 ?0次下載

    Verilog HDL程序設(shè)計與實踐

    Verilog HDL程序設(shè)計與實踐著重介紹Verilog HDL語言
    發(fā)表于 10-29 14:45 ?21次下載

    Verilog HDL硬件描述語言_Verilog語言要素

    本章介紹Verilog HDL的基本要素,包括標識符、注釋、數(shù)值、編譯程序指令、系統(tǒng)任務(wù)和系統(tǒng)函數(shù)。另外,本章還介紹
    發(fā)表于 04-25 16:09 ?17次下載

    Verilog HDL入門教程

    本文主要介紹Verilog HDL 語言的一些基本知識,目的是使初學(xué)者能夠迅速掌握HDL設(shè)計方法,初步了解并掌握Verilog
    發(fā)表于 07-15 15:27 ?0次下載

    Verilog HDL入門教程之Verilog HDL數(shù)字系統(tǒng)設(shè)計教程

    本文檔的主要內(nèi)容詳細介紹的是Verilog HDL入門教程之Verilog HDL數(shù)字系統(tǒng)設(shè)計教程。
    發(fā)表于 09-20 15:51 ?83次下載
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>入門教程之<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>數(shù)字系統(tǒng)設(shè)計教程

    如何設(shè)計常用模塊的Verilog HDL?

    本文檔的主要內(nèi)容詳細介紹的是常用模塊的Verilog HDL設(shè)計詳細資料免費下載。
    發(fā)表于 10-16 11:12 ?20次下載
    如何設(shè)計<b class='flag-5'>常用</b>模塊的<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>?

    Verilog教程之Verilog命令格式資料說明

    本文檔的主要內(nèi)容詳細介紹的是Verilog HDL教程之Verilog HDL命令格式資料說明
    發(fā)表于 01-09 08:00 ?31次下載
    <b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b>的<b class='flag-5'>命令</b>格式資料說明

    Verilog HDL入門教程

    本文主要介紹Verilog HDL 語言的一些基本知識,目的是使初學(xué)者能夠迅速掌握HDL 設(shè)計方法,初步了解并掌握Verilog
    發(fā)表于 02-11 08:00 ?99次下載
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>入門教程

    Verilog HDL基礎(chǔ)語法入門

    簡單介紹Verilog HDL語言和仿真工具。
    發(fā)表于 05-06 16:17 ?618次下載

    Verilog HDL 編譯器指令說明

    Verilog HDL 編譯器指令 復(fù)雜一點的系統(tǒng)在進行設(shè)計或者驗證時,都會用到一些編譯器指令,那么什么是編譯器指令? ?
    的頭像 發(fā)表于 11-03 09:31 ?3632次閱讀
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b> <b class='flag-5'>編譯</b>器指令說明

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

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

    什么是預(yù)編譯

    預(yù)編譯就是處理以#開頭的指令,比如賦值#include包含的文件、#define宏定義的替換、條件編譯等。預(yù)編譯就是為編譯前做準備工作的階段,主要處理以#開頭的
    發(fā)表于 01-13 13:52 ?0次下載
    什么是<b class='flag-5'>預(yù)編譯</b>