国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么是VHDL?一文帶你了解VHDL語言

這篇具有很好參考價值的文章主要介紹了什么是VHDL?一文帶你了解VHDL語言。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于FPGA的SOC在嵌入式系統(tǒng)應(yīng)用越來越廣了,比較流行的硬件描述語言有兩種Verilog HDL/VHDL,均為IEEE標準。VHDL如果有C語言基礎(chǔ)的話就會比較容易上手。而VHDL語言則需要Ada編程基礎(chǔ)。另外VHDL語言具有大量成熟的模塊,從某種角度說VHDL更具生命力。

VHDL簡介

VHDL 的歷史
VHDL 的 英 文 全 名 是 Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,誕生于 1982 年。

1987 年底,VHDL 被 IEEE 和美國國防部確認為標準硬件描述語言。自 IEEE 公布了 VHDL 的標準版本 IEEE-1076(簡稱 87 版)之后,各 EDA 公司相繼推出了自己的 VHDL 設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以提供 VHDL 接口。此后 VHDL 在電子設(shè)計領(lǐng)域逐步取代了原有的各種非標準硬件描述語言。

1993 年,IEEE 對 VHDL 進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展 VHDL 的內(nèi)容,并公布了新版本的 VHDL,即 IEEE 標準的 1076-1993版本(簡稱 93 版)。
現(xiàn)在,VHDL 和 Verilog HDL 作為 IEEE 的工業(yè)標準硬件描述語言,在電子工程領(lǐng)域已成為事實上的通用硬件描述語言。

VHDL 的特點
VHDL 主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL 在語言形式、描述風格和句法上與一般的計算機高級語言十分相似。VHDL 的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件、一個電路模塊或一個系統(tǒng))分成外部和內(nèi)部兩部分。

外部也可稱為可視部分,它描述了此模塊的端口,而內(nèi)部可稱為不可視部分,它涉及到實體的功能實現(xiàn)和算法完成。在對一個設(shè)計實體定義了外部端口后,一旦其內(nèi)部開發(fā)完成,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL 系統(tǒng)設(shè)計的基本點。

應(yīng)用 VHDL 進行工程設(shè)計有以下的優(yōu)點:

1.行為描述
與其他的硬件描述語言相比,VHDL 具有更強的行為描述能力,強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。

2.仿真模擬
VHDL 豐富的仿真語句和庫函數(shù),使得在任何系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進行仿真模擬。

3.大規(guī)模設(shè)計
一些大型的 FPGA 設(shè)計項目必須有多人甚至多個開發(fā)組共同并行工作才能實現(xiàn)。VHDL 語句的行為描述能力和程序結(jié)構(gòu)決定了它具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。

4.門級網(wǎng)表
對于用 VHDL 完成的一個確定的設(shè)計,可以利用 EDA 工具進行邏輯綜合和優(yōu)化,并自動把VHDL 描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。

5.獨立性
VHDL 對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必對最終設(shè)計實現(xiàn)的目標器件有很深入地了解。

VHDL的一般結(jié)構(gòu)

讓我們考慮一個簡單的數(shù)字電路,如圖所示。
什么是VHDL?一文帶你了解VHDL語言
此圖顯示有兩個輸入端口 a 和 b,以及一個輸出端口 out1。該圖表明輸入和輸出端口是一位寬。該電路的功能是對兩個輸入進行“與”運算并將結(jié)果放在輸出端口上。

VHDL 使用類似的描述;但是,它有自己的語法。例如,它使用以下代碼行來描述該電路的輸入和輸出端口:
1 entity circuit_1 is
2 Port ( a : in STD_LOGIC;
3 b : in STD_LOGIC;
4 out1 : out STD_LOGIC);
5 end circuit_1;

讓我們逐行分解這意味著什么。
第 1 行:代碼的第一行指定要描述的電路的任意名稱。位于關(guān)鍵字“entity”和“is”之間的單詞“circuit_1”決定了該模塊的名稱。

第 2 到 4 行:這些行指定電路的輸入和輸出端口。將這些線路與圖 1 的電路進行比較,我們看到電路的端口及其特性列在關(guān)鍵字“端口”之后。例如,第 3 行說我們有一個名為“b”的端口。該端口是一個輸入,如冒號后的關(guān)鍵字“in”所示。

關(guān)鍵字“std_logic”指定了什么?正如我們將在本文后面討論的那樣,std_logic 是 VHDL 中常用的數(shù)據(jù)類型。它可以用來描述一位數(shù)字信號。由于圖 1 中的所有輸入/輸出端口都將傳輸 1 或 0,因此我們可以對這些端口使用 std_logic 數(shù)據(jù)類型。

第 5 行:此行確定“實體”語句的結(jié)束。
因此,代碼的實體部分指定了 1) 要描述的電路的名稱和 2) 電路的端口及其特性,即輸入/輸出和這些端口要傳輸?shù)臄?shù)據(jù)類型。代碼的實體部分實際上描述了模塊與其周圍環(huán)境的接口。由討論的“實體”語句指定的上述電路的特征在圖 1 中以綠色顯示。

除了電路與其環(huán)境的接口之外,我們還需要描述電路的功能。在圖 1 中,電路的功能是對兩個輸入進行“與”運算并將結(jié)果放在輸出端口上。為了描述電路的操作,VHDL 添加了“架構(gòu)”部分并將其與實體語句定義的電路_1 相關(guān)聯(lián)。

第 6 行:此行為將在下一行中描述的架構(gòu)命名為“行為”。該名稱位于關(guān)鍵字“architecture”和“of”之間。它還將這種架構(gòu)與“電路_1”相關(guān)聯(lián)。換言之,該架構(gòu)將描述“電路_1”的操作。

第 8 行: 這指定了架構(gòu)描述的開始。

第 9行 第 9 行使用 VHDL 的語法來描述電路的操作。兩個輸入 a 和 b 的 AND 在括號內(nèi),結(jié)果使用賦值運算符“<=”賦值給輸出端口。

第 10 行 這指定了架構(gòu)描述的結(jié)尾。如上所述,這些代碼行描述了電路的內(nèi)部操作,這里是一個簡單的與門。

將我們到目前為止討論的內(nèi)容放在一起,我們幾乎完成了用 VHDL 描述“Circuit_1”。我們得到以下代碼:
1 entity circuit_1 is
2 Port ( a : in STD_LOGIC;
3 b : in STD_LOGIC;
4 out1 : out STD_LOGIC);
5 end circuit_1;
6 architecture Behavioral of circuit_1 is
8 begin
9 out1 <= ( a and b );
10 end Behavioral;

但是,我們?nèi)匀恍枰砑訋仔写a。這些行將添加一個包含一些重要定義的庫,包括數(shù)據(jù)類型和運算符的定義。一個庫可能由多個包組成。我們必須使給定庫的所需包對設(shè)計可見。

由于上述示例使用數(shù)據(jù)類型“std_logic”,我們需要將“ieee”庫中的“std_logic_1164”包添加到代碼中。請注意,std_logic 數(shù)據(jù)類型的邏輯運算符也在“std_logic_1164”包中定義——否則我們必須使相應(yīng)的包對代碼可見。最終代碼將是
1 library ieee;
2 use ieee.std_logic_1164.all
3 entity circuit_1 is
4 Port ( a : in STD_LOGIC;
5 b : in STD_LOGIC;
6 out1 : out STD_LOGIC);
7 end circuit_1;
8 architecture Behavioral of circuit_1 is
9 begin
10 out1 <= ( a and b );
11 end Behavioral;
在這里,我們創(chuàng)建兩條新線以超越我們已經(jīng)創(chuàng)建的內(nèi)容。第一行添加庫“ieee”,第二行指定需要此庫中的包“std_logic_1164”。由于“std_logic”是一種常用的數(shù)據(jù)類型,我們幾乎總是需要將“ieee”庫和“std_logic_1164”包添加到VHDL代碼中。

VHDL語言要素

1.四類語言要素:
數(shù)據(jù)對象(Data Object)
變量(Variable)
物理含義:
暫存某些值的載體,常用于描述算法
局部量,定義于process、function、procedure

具體說明:
變量說明格式
variable 變量名:數(shù)據(jù)類型 約束條件:= 表達式;
如:variable a, b : bit;
variable count : integer range 0 to 255 := 10;
局部量,只能在進程和子程序中定義、使用,其作用范圍僅局限于定義變量的進程和子程序中。
變量的初值可用于仿真,但綜合時被忽略

常量(Constant)
物理含義:
電源、地、恒定邏輯值等
全局量,可定義于上面兩種場合
常量說明:
對某一個常量名賦予一個固定的值
constant 常數(shù)名:數(shù)據(jù)類型:= 表達式;
constant data: bit_vector(3 downto 0):=“1010”
constant width: integer: = 8;
constant x: new_bit: = ‘x’;
常量數(shù)據(jù)類型必須與表達式的數(shù)據(jù)類型一致
常量是全局量,其作用范圍取決于常量被定義的位置。

信號(Signal)
物理含義:
是硬件連接線,端口
全局量,定義于architecture、package、entitiy
具體說明:
電子硬件系統(tǒng)運行的基本特性
各部分電路工作的并行特性;
信號傳輸過程中的延時特性;
多驅(qū)動源的總線特性;
時序電路中觸發(fā)器的記憶特性
信號是電子系統(tǒng)內(nèi)部硬件連接和硬件特性的抽象表示:
signal 信號名:數(shù)據(jù)類型 約束條件:= 表達式;
如:signal s2 : std_logic_vector(15 downto 0);
綜合時初值被忽略
信號是全局量,可在結(jié)構(gòu)體、實體、塊中 說明和使用信號
在進程和子程序中只能使用信號,不能說明信號
信號與端口的區(qū)別:信號本身無方向,可讀可寫;端口是一種有方向的隱形信號

數(shù)據(jù)類型(Data Type)
VHDL是一種強數(shù)據(jù)類型語言
設(shè)計實體中每一個常數(shù)、信號、變量、函數(shù)以及設(shè)定的各種參量都必須事先說明數(shù)據(jù)類型
同類型才能互相傳遞和作用

操作數(shù)(Operands)
操作對象常量或變量

操作符(Operator)

邏輯操作符(Logical Operator)
6種:and、or、nand、nor、xor、not
操作數(shù)類型必須相同,可為如下類型:bit、bit_vector、std_logic、std_logic_vector、boolean,數(shù)組操作數(shù)的維數(shù)、大小必須相同

關(guān)系操作符(Relational Operator)
用于比較相同父類的兩個操作數(shù),返回boolean值
6 種:=、/=、<、<=、>、>=

算術(shù)操作符(Arithmetic Operator)
加操作符“+”、減操作符“-”
串聯(lián)(并置)操作符“&”:通過連接操作數(shù)來建立新的數(shù)組。操作數(shù)可以是一個數(shù)組或數(shù)組中的一個元素.

重載操作符(Overloading Operator)
僅有一個操作數(shù)的操作符,包括:“+”、“-”

乘除操作符
用于整數(shù)類型:“*”、“/”、“mod”、“rem”
綜合的限制:“/ ”、“mod”、“rem” 三種操作符的右操作數(shù)必須為 2 的正整數(shù)次冪,即 2n。實際電路用移位實現(xiàn)。
A rem B 余數(shù)運算符,利用操作數(shù)A決定結(jié)果的正負號;A mod B 取模運算符,利用操作數(shù)B決定結(jié)果的正負號。文章來源地址http://www.zghlxwxcb.cn/news/detail-447490.html

到了這里,關(guān)于什么是VHDL?一文帶你了解VHDL語言的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Docker】什么是Docker?一文帶你了解

    【Docker】什么是Docker?一文帶你了解

    Docker提供了標準化交付的創(chuàng)新途徑 ,使開發(fā)、測試、部署過程通過流水線工具可見可控可信。 所以總結(jié)起來就是:Docker解決了運行環(huán)境和配置問題,構(gòu)建過程標準化,也就方便做持續(xù)集成和持續(xù)交付。 目錄 前言 1、Docker的介紹: 2、Docker的由來: 3、Docker的發(fā)展史: 4、Doc

    2024年02月12日
    瀏覽(27)
  • 一文帶你全面了解什么是自動化測試?

    一文帶你全面了解什么是自動化測試?

    目錄 簡介 自動化測試概述 自動化測試目標 自動化測試流程 1. 測試計劃和設(shè)計 2. 測試腳本開發(fā) 3. 測試執(zhí)行和管理 4. 測試維護和優(yōu)化 自動化測試最佳實踐 自動化測試工具和框架 結(jié)論 軟件測試是軟件開發(fā)過程中一個必不可少的環(huán)節(jié)。傳統(tǒng)的軟件測試方式通常是手動測試,即

    2024年02月16日
    瀏覽(75)
  • HTTPS介紹:一文帶你了解什么是HTTPS

    HTTPS介紹:一文帶你了解什么是HTTPS

    隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)安全問題日益凸顯。在互聯(lián)網(wǎng)上傳輸敏感信息、進行在線交易和共享個人數(shù)據(jù)時,確保數(shù)據(jù)的安全性和隱私保護成為了至關(guān)重要的任務(wù)。為了解決這些問題, HTTPS(超文本傳輸安全協(xié)議) 應(yīng)運而生,成為了保護網(wǎng)絡(luò)通信的重要一環(huán)。 HTTPS是HTTP協(xié)

    2024年02月09日
    瀏覽(21)
  • 什么是Docker容器?一文帶你了解,看完直接學(xué)會

    什么是Docker容器?一文帶你了解,看完直接學(xué)會

    1.1麻煩的環(huán)境部署 1.2虛擬機(Virtual Machine) 占用資源多:虛擬機需要安裝整個操作系統(tǒng),自然會消耗大量內(nèi)存和硬盤空間。如我們只需要運行1MB的軟件,有時候也不得不安裝幾個G的環(huán)境才能運行。 運行步驟冗余:虛擬機安裝的是完整的系統(tǒng),每次運行程序都需要按部就班,

    2024年02月03日
    瀏覽(22)
  • 不知道該學(xué)那一個語言?一文帶你了解三門語言

    名字:阿玥的小東東 學(xué)習:Python。正在學(xué)習c++ 主頁:阿玥的小東東 目錄 粉絲留言,回答問題 1.首先,初步了解?

    2024年02月21日
    瀏覽(17)
  • 一文帶你了解MySQL之基于成本的優(yōu)化

    一文帶你了解MySQL之基于成本的優(yōu)化

    前言 我們之前老說MySQL執(zhí)行一個查詢可以有不同的執(zhí)行方案,它會選擇其中成本最低,或者說代價最低的那種方案去真正的執(zhí)行查詢,怎么就帶大家詳細了解一下 我們之前老說MySQL執(zhí)行一個查詢可以有不同的執(zhí)行方案,它會選擇其中 成本最低 ,或者說 代價最低 的那種方案去

    2024年02月06日
    瀏覽(19)
  • 一文帶你了解MySQL之基于規(guī)則的優(yōu)化

    一文帶你了解MySQL之基于規(guī)則的優(yōu)化

    前言: 大家別忘了MySQL本質(zhì)上是一個軟件,MySQL的并不能要求使用這個軟件的人人都是數(shù)據(jù)庫的高手,就像我寫這篇文章的時候并不能要求各位在學(xué)之前就會了里邊的知識。也就是說我們無法避免某些小伙伴寫一些執(zhí)行起來十分耗費性能的語句。即使是這樣,MySQL的還是依據(jù)

    2024年02月06日
    瀏覽(20)
  • 【K8s】K8s是什么,一文帶你了解kubernetes

    【K8s】K8s是什么,一文帶你了解kubernetes

    作者簡介: 辭七七,目前大二,正在學(xué)習C/C++,Java,Python等 作者主頁: 七七的個人主頁 文章收錄專欄: 七七的閑談 歡迎大家點贊 ?? 收藏 ? 加關(guān)注哦!???? kubernetes,簡稱K8s,是用8代替名字中間的8個字符“ubernete”而成的縮寫。是一個開源的,用于管理云平臺中多個主

    2024年02月03日
    瀏覽(90)
  • 谷歌廣告投放步驟流程是什么?一文帶你全方位了解實操細節(jié)

    谷歌廣告投放步驟流程是什么?一文帶你全方位了解實操細節(jié)

    谷歌,大家都不陌生吧,一個人們很常用的搜索引擎。而谷歌還可以打廣告,即谷歌廣告,那這跟跨境電商有什么關(guān)心呢?東哥告訴大家,關(guān)系大了去了,畢竟如果用戶搜索與我們相關(guān)的,就有利于我們展示產(chǎn)品,既可以吸引用戶的興趣轉(zhuǎn)換成銷售。所以東哥今天就給

    2024年02月06日
    瀏覽(26)
  • 學(xué)Java線程,你不知道什么是AQS?一文帶你了解Java多線程同步的靈魂

    學(xué)Java線程,你不知道什么是AQS?一文帶你了解Java多線程同步的靈魂

    關(guān)于作者:CSDN內(nèi)容合伙人、技術(shù)專家, 從零開始做日活千萬級APP。 專注于分享各領(lǐng)域原創(chuàng)系列文章 ,擅長java后端、移動開發(fā)、人工智能等,希望大家多多支持。 我們繼續(xù)總結(jié)學(xué)習 Java基礎(chǔ)知識 ,溫故知新。 CLH(Craig, Landin, and Hagersten locks)是一種自旋鎖,能確保無饑餓性,提

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包