《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 其他 > VHDL语言编写规范基础:标识符命名/数据对象/信号、变量和常量

VHDL语言编写规范基础:标识符命名/数据对象/信号、变量和常量

2022-09-30
來源:Carlinx FPGA
關鍵詞: D触发器 VHDL语言

  標識符命名規范

  標識符用于定義實體名、結構體名、信號和變量名等,選擇有意義的命名對設計是十分重要的。命名包含信號或變量諸如出處、有效狀態等基本含義,有利于提高代碼的可讀性。

  1.1 標識符習慣命名規則

  1.1.1 標識符定義命名規定

  標識符第一個字符必須是字母,最后一個字符不能是下劃線,同時不允許出現連續兩個下劃線。基本標識符只能由字母、數字和下劃線組成,標識符兩詞之間須用下劃線連接,如 Packet_addr, Data_in, Mem_wr, Mem_ce。標識符不得與保留字同名,VHDL規定的保留字見1.3。

  1.1.2 標識符大小寫規定

  通常情況下,常量、數據類型、實體名和結構體名采用全部大寫,變量采用小寫,信號僅第一個詞首字符采用大寫,保留字一律小寫。

  1.2 信號名習慣命名規則

  1.2.1 信號名縮寫規定

  信號名常采用縮寫形式以便書寫和理解,單詞縮寫中信號名的第一個單詞首字符通常大寫,例如Addr_in。采用縮寫時應保證同一信號在模塊中和不同層次內的一致性。

  部分常用的縮寫為:

  Addr address; Clk clock; Clr clear;

  Cnt counter; En enable; Inc increase;

  Lch latch; Mem memory; Pntr pointer;

  Pst preset; Rst reset; Reg register;

  Rd reader; Wr write;

  ROM; RAM; CPU; FIFO; ALU; CS; CE

  1.2.2 信號名命名建議

  信號名應當使用有意義而且有效的名字,能簡單包含該信號的全部或部分信息,如:Data_in(數據輸入)、Din(單根數據線輸入)、FIFO_out(FIFO數據總線輸出)、Cnt8_q(8位計數器輸出信號)。

  信號名采用明確且有意義的后綴 ,常用的后綴如下:

87.JPG

  說明:

  采用D觸發器對信號進行延遲、延遲信號的命名在原信號名之后加后綴_L,若是在流水線設計中有級延遲,再分別加后綴_L1、_L2……(L表示lock);模塊內的反饋信號,在原信號名之后加后綴_s(s表示same)。

  1.3 VHDL保留字

  VHDL的保留字匯總如下:

  absaccess after alias all and architecture array assert  attribute begin block buffer bus case component configuraTIon constant disconnect downto else elsif end enTIty exit file for funcTIon generate generic group guarded if impure in inerTIal inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process pure range record register reject rem report return rol ror select severity signal shared sla sll sra srl subtype then to transport type unaffected units until use variablewait when while with xnor xor

  02

  數據對象與類型

  2.1 數據對象與類型概述

  VHDL是很強的類型語言,其數據對象和類型匯總見下表:(其中紅色字體為不可綜合的數據對象和數據類型)

88.JPG

  不同基本類型的數據不能由另一類型賦值,不同類型間的賦值需使用運算符的重載,例如Cnt8_q為STD_LOGIC_VECTOR類型,若不調用相關庫(使用use IEEE.std_logic_arith.all 語句)對 '+' 運算符進行重載,則 Cnt8_q <= Cnt8_q + 1 語句在綜合中將報錯。

  通常情況常量名和數據類型菜用大寫標識符表示。

  2.2 數據類型使用建議與注意內容

  為改善代碼的可讀性,可把常用的常量和自定義的數據類型在程序包中定義;使用別名來標識一組數據類型有利于使代碼更清晰,如

  signal Addr STD_LOGIC_VECTOR(31 downto 0);

  alias Top_addr STD_LOGIC_VECTOR(3 downto 0) is Addr(31 downto 28) ;

  可枚舉類型的值為標識符或單個字母的字面量是區分大小寫的,如 Z 與z 是兩個不同的量。

  03

  信號、變量與常量

  3.1 信號、變量與常量的含義

  VHDL常用的數據類型主要有信號、變量與常量這三類,不同類型的數據有各自不同的含義:

  3.1.1 信號(signal)

  信號是VHDL語法中最重要、最常用的一種可賦值對象,一般對應電路中特定的物理連線或存儲單元。除在模塊內部聲明的signal數據外,VHDL模塊的port結構中in、out、buffer或者inout類型的端口也是signal類型的。

  3.1.2 變量(variable)

  變量在VHDL代碼中不具有特定的物理意義,對應關系也不太直接。作為一個局部量,變量通常只代表某些值暫存的載體。

  3.1.3 常量(constant)

  常量在VHDL具有特定的物理意義,通常對應數字電路中的電源或者地。常量能出現在所有信號和變量出現的場合,定義常量的主要目的是為了使設計實體中的某些量易于閱讀和修改。

  3.2 信號、變量與常量的聲明與賦值

  VHDL數據在調用前需要進行聲明與賦值操作,不同數據類型的數據聲明與賦值的位置和方式有所不同:

  ARCHITECTURE … OF … IS

  SIGNAL 信號1:數據類型;

  --信號聲明在這里,在ARCHITECTURE的BEGIN之前

  BEGIN

  PROCESS(…)

  VARIABLE 變量1:數據類型;

  --變量聲明在這里,在PROCESS的BEGIN之前。

  BEGIN

  END PROCESS;

  END;

  3.2.1 信號的聲明與賦值

  信號通常在結構體內部,進程、子程序及函數外部聲明;在進程中,信號賦值僅在進程結束時起作用,即不能夠為同一信號多次賦值。

  信號聲明:SIGNAL 信號名:數據類型 := 初值;

  信號賦值:信號名 <= 數值;

  3.2.2 變量的聲明與賦值

  變量通常只能在進程、子程序和函數內部聲明;變量的賦值是立即起作用的,即變量值在賦新值時立刻改變。

  變量聲明:VARIABLE 變量名:數據類型 := 初值;

  變量賦值:變量名 := 數值/表達式;

  3.2.3 常量的聲明與賦值

  常量可以在信號和變量出現的所有場合進行聲明,通常情況下,常量不能單獨賦值,僅能在聲明的同時被初始化賦值。

  常量聲明:CONSTANT 常量名:數據類型 := 表達式;

  3.3 使用建議與注意內容

  1. 信號通常情況下不允許賦初值:

  盡管當前主流FPGA均支持數據賦初值,但是為避免硬件可能出現的問題,通常不在信號聲明時賦初值,而是采用復位時賦值的方法來賦初值。

  2. 變量在可綜合模塊中不建議使用:

  變量主要用在高層次的模擬模型建模及用于運算的用途,由于變量的綜合較難定義,對于編寫可綜合的VHDL模塊,在沒有把握綜合結果情況下不建議使用。

  3. 信號在進程中賦值情況解釋:

  signal_assign: process(A,B,C)

  begin

  D <= A;----- ignored!!

  X <= C or D ;

  D <= B ;---- overrids !!

  Y <= C xor D ;

  end;

  上面代碼的實際運行結果是:B賦值給D,C or B的結果賦值給X,C xor B的結果賦值給Y。

  4. 變量在進程中賦值情況解釋:

  variable_assign:process(A,B,C)

  variable d:STD_LOGIC

  begin

  d := A;

  X <= C or d;

  d := B;

  Y <= C xor d ;

  end process;

  上面代碼的實際運行結果是:C or A賦值給X,C xor B賦值給Y。



更多信息可以來這里獲取==>>電子技術應用-AET<< 

mmexport1621241704608.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产精品美女www爽爽爽视频| 婷婷五月色综合| 日韩欧美精品一区二区三区经典| 91精品视频免费| 久久五月天婷婷| 日本午夜精品电影| 国产精品久久国产| 国产精品美女免费看| 国产日韩欧美另类| 国产尤物av一区二区三区| 国产日产亚洲精品| 日本久久亚洲电影| 五月婷婷综合色| 久久久久北条麻妃免费看| 久久精品99久久| 久久av中文字幕| 国产日韩在线播放| 国产精品久久婷婷六月丁香| 日本精品久久久久久久| 日韩免费在线播放| 国产精品视频免费在线观看| 欧美日韩精品在线一区二区| 奇米精品一区二区三区| 国产精品免费小视频| 奇米影视亚洲狠狠色 | 国产精品综合不卡av| 精品国内产的精品视频在线观看| 91精品国产91久久久| 国产黄页在线观看| 久久人人97超碰精品888| 久久久久国产视频| 欧美综合在线第二页| 欧美精品久久久| 91精品国产91久久久久久吃药| 欧美激情网站在线观看| 国产日韩亚洲欧美| 欧美成人在线影院| 成人a在线观看| 欧美专区在线视频| 婷婷五月综合缴情在线视频| 国产日韩欧美日韩大片|