那曲檬骨新材料有限公司

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

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

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

System Verilog-文本值

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-04-13 10:55 ? 次閱讀

數(shù)字硬件建模SystemVerilog(五)-文本值

System Verilog 擴(kuò)展了 Verilog 的 教據(jù)類型 , 增強(qiáng)了指定文本值的方法。在介紹文本值之前我們先簡單回憶一下HDL中的四個(gè)狀態(tài)數(shù)據(jù)值。

四個(gè)狀態(tài)數(shù)據(jù)值

對于RTL建模,System Verilog使用硅中可能出現(xiàn)的值的四值表示。

  • 0表示抽象數(shù)字低電平,沒有與之相關(guān)的電壓或電流
  • 1表示抽象數(shù)字高電平,無電壓或電流,
  • Z表示抽象數(shù)字高阻抗,在多驅(qū)動器電路中,值為0或1將覆蓋Z。一些編程運(yùn)算符和編程語句將Z值視為無關(guān)緊要的值。
  • X表示多驅(qū)動器電路中的未初始化值、不確定值或值沖突。在某些RTL模型上下文中,綜合編譯器將X值視為不關(guān)心值。

0、1和Z的值是實(shí)際硅中可能存在的值的抽象。

X的值不是實(shí)際的硅值。仿真器使用X來表示物理硅在特定情況下的行為的不確定性程度,例如,當(dāng)仿真無法預(yù)測實(shí)際硅值是0還是1(或三態(tài)器件的Z)時(shí),對于綜合,X值還為設(shè)計(jì)工程師提供了一種方法來指定“don’t-care”條件,工程師不關(guān)心實(shí)際硅在特定條件下是否具有0值或1值。

文本值-Literal values (numbers)

System Verilog 擴(kuò) 展 了 Verilog 的 教 據(jù) 類 型 , 增 強(qiáng) 了 指 定 文 本 值 的 方 法。這里的Literal values是直譯,即字面量或常量、文本值。在我理解來看,Literal是指某一數(shù)據(jù)類型的具體值。

文本值是整數(shù)或?qū)崝?shù)(浮點(diǎn)數(shù))。SystemVerilog提供了幾種指定文本值的方法,還有一些文本值的語義規(guī)則,在編寫RTL模型時(shí)需要理解這些規(guī)則。

文本整數(shù)值-Literal integer values

文本整數(shù)值是一個(gè)整數(shù),沒有小數(shù)點(diǎn)。(IEEE 1800 SystemVerilog標(biāo)準(zhǔn)使用術(shù)語“整數(shù)文本integer literal”而不是“文本整數(shù)literal integer”),文本整數(shù)可以通過多種方式指定:

  • 簡單的十進(jìn)制整數(shù)值
  • 二進(jìn)制、八進(jìn)制、十進(jìn)制或十六進(jìn)制整數(shù)值
  • 大小文本整數(shù)值
  • 有符號或無符號文本整數(shù)值

仿真和綜合工具都需要知道或假設(shè)文本整數(shù)值的特定特征。這些特點(diǎn)是:

  • 值的位寬度(向量大小)
  • 值的有符號性(有符號或無符號)
  • 值的基數(shù)(也稱為基數(shù))
  • 2-state or 4-state value

這些特征影響值的操作和賦值。

簡單的十進(jìn)制文本整數(shù)

文本整數(shù)值可以指定為簡單的數(shù)字,如數(shù)字9,如以下代碼段所示:

result=d+9;

仿真和綜合將簡單的文本數(shù)視為:

  • 32位寬的值
  • 有符號
  • 十進(jìn)制值
  • 2態(tài)值(沒有位可以是Z或X)

這些特征以及 d 的特征將影響加法的執(zhí)行方式以及結(jié)果賦值的執(zhí)行方式。

二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制文本整數(shù)。可以為文本整數(shù)值指定二進(jìn)制、八進(jìn)制、十進(jìn)制或十六進(jìn)制的特定基數(shù),該基數(shù)使用撇號(’)指定(有時(shí)稱為“勾號”),后跟一個(gè)字母:b或B表示二進(jìn)制,o或O表示八進(jìn)制,d或D表示十進(jìn)制,h或H表示十六進(jìn)制。一些示例包括:

result=‘d9+‘h2F+‘bl010;

仿真和綜合將未指定大小的顯式基本文本數(shù)視為:

  • 32位寬的值
  • 無符號值(注意與有符號的簡單文本整數(shù)的差異)
  • 規(guī)定的基準(zhǔn)值
  • 4態(tài)值(任何或所有位可以是X或Z)

二進(jìn)制值的每個(gè)位可以是0、l、X或Z;八進(jìn)制值的每個(gè)3位組可以是0~7、X或Z;十進(jìn)制值的每個(gè)位可以是0~9、X或Z;十六進(jìn)制值的每個(gè)4位組可以是0~9、a~F、X或Z。

有符號文本整數(shù)。默認(rèn)情況下,具有指定基的文本值在操作和賦值中被視為無符號值。可以通過在撇號之后和基本說明符之前添加字母s或S來覆蓋此默認(rèn)值。

result=’sd9+‘sh2F+‘sbl0l0;

在某些操作和賦值語句中,有符號值與無符號值的處理方式不同。后面討論了有符號和無符號值對運(yùn)算符和運(yùn)算的影響。

調(diào)整文本整數(shù)的大小

默認(rèn)情況下,在操作、編程語句和賦值語句中,簡單文本數(shù)和指定了基數(shù)的文本數(shù)被視為32位值。此默認(rèn)值不能準(zhǔn)確表示使用其他向量大小的硬件模型。

具有特定基的值也可以指定特定的位寬度。用于表示值的位數(shù)在撇號、有符號性和基本規(guī)范之前指定:

Result=16‘d9+8‘h2F+4‘bl010;
筆記
當(dāng)文本值的大小與賦值語句左側(cè)的變量不同時(shí),綜合編譯器和lint檢查器可能會生成警告消息。這些大小不匹配警告消息可能會隱藏其他需要注意的消息。使用顯式大小的文本值將防止大小不匹配警告。
最佳做法準(zhǔn)則3-1
在RTL模型中僅使用二進(jìn)制和十六進(jìn)制文本整數(shù)。這些數(shù)字基在數(shù)字邏輯中具有直觀的意義

八進(jìn)制值的使用已經(jīng)過時(shí)幾十年了。文本十進(jìn)制值很容易與其他數(shù)字混淆。

有個(gè)老工程笑話適用于這里。。。

Thereare10typesofpeopleintheworld,thosethatunderstandbinary,andthosethatdon’t

世界上有10種人,懂二進(jìn)制的和不懂二進(jìn)制的

不匹配的大小和值檢測規(guī)則

下面的規(guī)則是編寫HDL代碼中最難檢查的,也是大部分人不注意的!

指定一個(gè)位寬不同于表示該值所需位數(shù)的文本整數(shù)是合法的。例如:

SystemVerilog始終調(diào)整該值以匹配指定的大小。這些規(guī)則是:

  • 當(dāng)大小小于值的位時(shí),值的最左邊位被截?cái)唷?/li>
  • 當(dāng)大小大于該值的位數(shù)時(shí),該值保持?jǐn)U展。使用以下規(guī)則填充附加位:
  • 如果值的最左邊位為0或l,則額外的高位用0填充。
  • 如果該值的最左邊位為Z,則附加的高位用Z填充
  • 如果該值的最左側(cè)位為X,則額外的高位用X填充。

請注意,即使將文本整數(shù)指定為有符號整數(shù),該值也不會進(jìn)行符號擴(kuò)展。符號擴(kuò)展發(fā)生在有符號文本值用于操作和賦值語句時(shí),這將在后面中討論。

前面代碼段的值調(diào)整為:

4’hFACE//截?cái)酁?’hE
16’sh8//延伸至16’sh0008
32’bZ//擴(kuò)展到32’bZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
最佳做法準(zhǔn)則3-2
在綜合RTL模型之前,將lint檢查程序(也稱為建模規(guī)則檢查器)與仿真結(jié)合使用。

當(dāng)發(fā)生截?cái)鄷r(shí),仿真器可能會報(bào)告非致命警告消息,但不需要報(bào)告警告。仿真器將無聲地?cái)U(kuò)展文本值以匹配大小,而不會生成任何警告。存在在仿真中驗(yàn)證設(shè)計(jì)功能而未意識到尺寸/值不匹配的風(fēng)險(xiǎn)。使用lint檢查器時(shí)將顯示文本值中的任何不匹配。

附加文本值規(guī)則

問號(?)可以用來代替Z來表示高阻抗。在大多數(shù)情況下,字母Z是表示高阻抗的更直觀的方式。然而,有些運(yùn)算符和編程語句使用高阻抗值來表示不關(guān)心狀態(tài)。對于這些不關(guān)心的情況,使用問號表示高阻抗會更直觀。

在文本值中的任何位置都可以使用分割以下的字符(_),仿真、綜合編譯器等都可以解析,同時(shí)SystemVerilog代碼的工具會忽略下劃線。在數(shù)字中添加一個(gè)下劃線有助于使長數(shù)字更具可讀性,尤其是二進(jìn)制值-下劃線也可用于顯示值中的子字段,

3da065f8-bad4-11ec-aa7f-dac502259ad0.png

向量填充文本值

SystemVerilog提供了一種特殊形式的無大小文本整數(shù),它將任何大小的向量的所有位設(shè)置為0、l、X或Z。文本值的向量大小根據(jù)其上下文自動確定。

  • ‘0用0填充左側(cè)的所有位
  • ‘1用1填充左側(cè)的所有位
  • ‘z或’Z用z填充左側(cè)的所有位T
  • ‘x或’X用x填充左側(cè)的所有位

使用向量填充文本整數(shù)的示例如下:

3db35622-bad4-11ec-aa7f-dac502259ad0.png

向量填充文本整數(shù)是建模可伸縮設(shè)計(jì)的一個(gè)重要構(gòu)造,對于不同的設(shè)計(jì)配置,可具有不同的向量寬度。本章后面章節(jié)討論了可配置向量大小的建模。

這些向量填充文本整數(shù)不是傳統(tǒng)Verilog的一部分。它們是作為原始Verilog語言的SystemVeri1og擴(kuò)展的一部分添加的。

浮點(diǎn)文本值(實(shí)數(shù))

SystemVerilog將浮點(diǎn)值稱為實(shí)數(shù)。實(shí)數(shù)使用64位雙精度浮點(diǎn)表示。文本浮點(diǎn)值是通過在文本數(shù)字中使用小數(shù)點(diǎn)來指定的。必須在小數(shù)點(diǎn)的兩側(cè)指定一個(gè)值。

3.1567
5.0
0.5
筆記
RTL綜合編譯器通常不支持實(shí)(浮點(diǎn))表達(dá)式。高級綜合(HLS)工具可用于復(fù)雜的算法設(shè)計(jì)。浮點(diǎn)和定點(diǎn)設(shè)計(jì)不在本系列RTL建模的范圍之內(nèi)-

審核編輯 :李倩


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

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110397
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    165

    瀏覽量

    37078
  • 整數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    6551

原文標(biāo)題:SystemVerilog(五)-文本值

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

收藏 人收藏

    評論

    相關(guān)推薦

    Verilog 與 ASIC 設(shè)計(jì)的關(guān)系 Verilog 代碼優(yōu)化技巧

    Verilog與ASIC設(shè)計(jì)的關(guān)系 Verilog作為一種硬件描述語言(HDL),在ASIC設(shè)計(jì)中扮演著至關(guān)重要的角色。ASIC(Application Specific Integrated
    的頭像 發(fā)表于 12-17 09:52 ?260次閱讀

    Verilog 測試平臺設(shè)計(jì)方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺設(shè)計(jì)方法是Verilog FPGA開發(fā)中的重要環(huán)節(jié),它用于驗(yàn)證Verilog設(shè)計(jì)的正確性和性能。以下是一個(gè)詳細(xì)的Verilog測試平臺設(shè)計(jì)方法及
    的頭像 發(fā)表于 12-17 09:50 ?428次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語法和風(fēng)格 VerilogVerilog 的語法更接近于 C 語言,對于有 C 語言背景的工程師來說,學(xué)習(xí)曲線較平緩。它支持結(jié)構(gòu)化編程,代碼更直觀,易于
    的頭像 發(fā)表于 12-17 09:44 ?344次閱讀

    圖紙模板中的文本變量

    “ ?文本變量和系統(tǒng)自帶的內(nèi)置變量,可以幫助工程師靈活、高效地配置標(biāo)題欄中的信息,而不用擔(dān)心模板中的文字對象被意外修改。 ? ” 文本變量的語法 文本變量以?${VARIABLENAME}?的方式
    的頭像 發(fā)表于 11-13 18:21 ?229次閱讀
    圖紙模板中的<b class='flag-5'>文本</b>變量

    如何在文本字段中使用上標(biāo)、下標(biāo)及變量

    在KiCad的任何文本字段中,都可以通過以下的方式實(shí)現(xiàn)上標(biāo)、下標(biāo)、上劃線以及顯示變量及字段的描述: 文本變量“文本變量”可以在 原理圖設(shè)置->工程->
    的頭像 發(fā)表于 11-12 12:23 ?183次閱讀
    如何在<b class='flag-5'>文本</b>字段中使用上標(biāo)、下標(biāo)及變量

    如何自動生成verilog代碼

    介紹幾種自動生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?446次閱讀
    如何自動生成<b class='flag-5'>verilog</b>代碼

    Verilog硬件描述語言參考手冊

    一. 關(guān)于 IEEE 1364 標(biāo)準(zhǔn)二. Verilog簡介三. 語法總結(jié)四. 編寫Verilog HDL源代碼的標(biāo)準(zhǔn)五. 設(shè)計(jì)流程
    發(fā)表于 11-04 10:12 ?4次下載

    system verilog語言簡介

    ICer需要System Verilog語言得加成,這是ICer深度的表現(xiàn)。
    發(fā)表于 11-01 10:44 ?0次下載

    如何利用Verilog-A開發(fā)器件模型

    Verilog-A對緊湊型模型的支持逐步完善,在模型的實(shí)現(xiàn)上扮演越來越重要的角色,已經(jīng)成為緊湊模型開發(fā)的新標(biāo)準(zhǔn)。而且Verilog-A能夠在抽象級別和應(yīng)用領(lǐng)域中擴(kuò)展SPICE建模和仿真功能,因此學(xué)會
    的頭像 發(fā)表于 10-18 14:16 ?612次閱讀
    如何利用<b class='flag-5'>Verilog</b>-A開發(fā)器件模型

    Verilog的版本有哪些

    電子發(fā)燒友網(wǎng)站提供《Verilog的版本有哪些.docx》資料免費(fèi)下載
    發(fā)表于 05-31 11:29 ?0次下載

    verilog與其他編程語言的接口機(jī)制

    Verilog是一種硬件描述語言,用于描述數(shù)字電路的行為和結(jié)構(gòu)。與其他編程語言相比,Verilog具有與硬件緊密結(jié)合的特點(diǎn),因此其接口機(jī)制也有一些與眾不同之處。本文將詳細(xì)介紹Verilog與其他編程
    的頭像 發(fā)表于 02-23 10:22 ?775次閱讀

    verilog調(diào)用模塊端口對應(yīng)方式

    Verilog是一種硬件描述語言(HDL),廣泛應(yīng)用于數(shù)字電路設(shè)計(jì)和硬件驗(yàn)證。在Verilog中,模塊是構(gòu)建電路的基本單元,而模塊端口對應(yīng)方式則用于描述模塊之間信號傳遞的方式。本文將介紹
    的頭像 發(fā)表于 02-23 10:20 ?1897次閱讀

    鴻蒙UI界面——@ohos.measure (文本計(jì)算)

    MeasureOptions 是 被計(jì)算文本描述信息。 ? 返回: ? 類型 說明 number 文本寬度。說明: 單位px。 ? 示例: ? import measure from
    的頭像 發(fā)表于 02-22 17:02 ?829次閱讀
    鴻蒙UI界面——@ohos.measure (<b class='flag-5'>文本</b>計(jì)算)

    verilog中initial和always的區(qū)別

    Verilog是一種硬件描述語言(HDL),用于設(shè)計(jì)和模擬數(shù)字電路。在Verilog中,關(guān)鍵字initial和always都是用于描述電路行為的特殊語句。它們被用來生成仿真模型,并控制模擬器的啟動
    的頭像 發(fā)表于 02-22 16:09 ?3136次閱讀

    verilog function函數(shù)的用法

    Verilog 是一種硬件描述語言 (HDL),主要用于描述數(shù)字電子電路的行為和結(jié)構(gòu)。在 Verilog 中,函數(shù) (Function) 是一種用于執(zhí)行特定任務(wù)并返回一個(gè)的可重用代碼塊。函數(shù)在
    的頭像 發(fā)表于 02-22 15:49 ?6045次閱讀
    百家乐网上赌博| 百家乐官网封号| 威尼斯人娱乐城网址是什么| 不夜城百家乐官网的玩法技巧和规则 | 澳门百家乐官网游戏说明| 大发888 加速器| 带百家乐的时时彩平台| 百家乐官网娱乐城足球盘网| 大发888迅雷下载免费| 在线百家乐有些一| 优博百家乐官网娱乐城| 360棋牌游戏大厅| 高档百家乐桌子| 百家乐官网打劫法| 上饶县| 威尼斯人娱乐城怎样赢| 大世界百家乐官网的玩法技巧和规则| 阳原县| 大发888娱乐城 bg| 澳门百家乐群策略| 博天堂百家乐官网的玩法技巧和规则| 襄樊市| 大发888娱乐送体验金| 百家乐网络赌场| 1月24进房子风水好吗| 有百家乐官网的棋牌游戏| 战神国际| 百家乐群| 百家乐和的几率| 百家乐官网游乐园| 汉寿县| 大发888娱乐场 d188| 百家乐单注打法| 风水罗盘24方位| 百家乐官网庄闲当哪个好| 十六浦娱乐城官网| 威尼斯人娱乐场官网是骗人的吗| 澳门百家乐走势图| 玩百家乐官网怎么能赢呢| 百人百家乐官网软件供应| 百家乐官网试玩活动|