18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

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

FPGA之家 ? 來(lái)源:時(shí)沿科技 ? 作者:NemoYxc ? 2022-03-15 11:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

01、時(shí)間尺度`timescale

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

`timescale 《時(shí)間單位》 / 《時(shí)間精度》

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

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

下面舉例說(shuō)明`timescale用法。

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

02、宏定義`define

在設(shè)計(jì)中,為了提高程序可讀性和簡(jiǎn)化程序描述,可以使用指定的標(biāo)識(shí)符來(lái)代替一個(gè)長(zhǎng)的字符串,或者使用一個(gè)簡(jiǎn)單的名字來(lái)代替沒(méi)有含義的數(shù)字或者符號(hào),此時(shí)需使用到宏定義命令`define。它的使用形式如下:

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

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

例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)宏展開(kāi)之后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語(yǔ)言中聲明頭文件很類似。其一般形式為:`include “文件名”

例:

文件para.v有一個(gè)宏定義 `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)于“文件包含的幾點(diǎn)說(shuō)明”:

  1. 一個(gè)`include只能指定一個(gè)包含文件;

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

  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

當(dāng)宏名被定義,則對(duì)程序段1進(jìn)行編譯,程序段2被忽略;否則編譯程序段2,程序段1倍忽略。

`ifdef宏名

程序段1

`endif

其中程序段可以是語(yǔ)句組也可以是命令行

例:

`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)載。文章觀點(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)注

    52

    文章

    4363

    瀏覽量

    137407
  • Verilog
    +關(guān)注

    關(guān)注

    30

    文章

    1369

    瀏覽量

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

    關(guān)注

    72

    文章

    3007

    瀏覽量

    180920

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

    Verilog HDL華為入門教程

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

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

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

    Verilog HDL硬件描述語(yǔ)言_Verilog語(yǔ)言要素

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

    Verilog HDL入門教程

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

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

    本文檔的主要內(nèi)容詳細(xì)介紹的是Verilog HDL入門教程之Verilog HDL數(shù)字系統(tǒng)設(shè)計(jì)教程。
    發(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è)計(jì)教程

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

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

    Verilog教程之Verilog命令格式資料說(shuō)明

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

    Verilog HDL入門教程

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

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

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

    Verilog HDL 編譯器指令說(shuō)明

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

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

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

    什么是預(yù)編譯

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

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    Verilog HDL語(yǔ)言和C語(yǔ)言一樣也提供了編譯預(yù)處理的功能?!?b class='flag-5'>編譯預(yù)處理”是Verilog HDL
    的頭像 發(fā)表于 03-27 13:30 ?931次閱讀
    FPGA <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>語(yǔ)法之<b class='flag-5'>編譯</b>預(yù)處理