VHDL

維基百科,自由的百科全書
跳至導覽 跳至搜尋
VHDL
編程範型並發, 響應式, 數據流程
釋出時間1980年代
當前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    型態系統強類型
    文件擴展名.vhd
    網站IEEE VASG
    衍生副語言
    VHDL-AMS
    受影響於
    Ada,[1]Pascal
    File:Vhdl signed adder source.svg
    一個有符號的加法器的VHDL原始碼。

    VHDL,全稱超高速集成電路硬件描述語言(英語:VHSIC very high-speed hardware description language),在基於複雜可程式邏輯裝置現場可程式化邏輯閘陣列特殊應用集成電路數碼系統設計中有着廣泛的應用。

    VHDL語言誕生於1983年,1987年被美國國防部IEEE確定為標準的硬件描述語言。自從IEEE發佈了VHDL的第一個標準版本IEEE 1076-1987後,各大EDA公司都先後推出了自己支援VHDL的EDA工具。VHDL在電子設計行業得到了廣泛的認同。此後IEEE又先後發佈了IEEE 1076-1993和IEEE 1076-2000版本。

    程式語言[編輯]

    註:VHDL不區分大小寫;

    library ieee;--库声明,声明工程中用到的库,这里声明的是IEEE库
    use ieee.std_logic_1164.all;--包声明,声明工程中用到的包,这里声明的是IEEE的STD_LOGIC_1164包
    

    單體(entity)[編輯]

    它負責宣告一個硬件的外部輸入與輸出,一個簡單的範例(尖括號內為必填,方括號內為可選):

     entity <實體名稱> is
      port(
             a : IN STD_LOGIC;
             b : OUT STD_LOGIC
          );
     end [實體名稱];
    

    架構(architecture)[編輯]

    它負責實現內部的硬件電路。

    architecture <架構名稱> of <實體名稱> is
    begin
      --此處可編寫架構內部操作
    end [架構名稱];
    

    組態(configuration)[編輯]

    配置用來描述各種層與層的連接關係以及實體與結構體之間的關係,此處不贅述

    VHDL編寫正反器簡例:

    library ieee;                 	--库声明
    use ieee.std_logic_1164.all;  	--包声明
    entity test is                 	--实体定义
      port(
           d     : in   std_logic;
           clk   : in   std_logic;
           q     : out  std_logic);
    end test;
    architecture trigger of test is	--结构体定义
      signal q_temp:std_logic;
    begin
      q<=q_temp;
      process(clk)
      begin
        if clk'event and clk='1' then
          q_temp<=d;
        end if;
      end process;
    end trigger;
    configuration d_trigger of test is--配置,将结构体配置给实体,配置名为d_trigger
      for trigger
      end for;
    end d_trigger;
    

    參見[編輯]

    參考資料[編輯]

    1. ^ David R. Coelho. The VHDL Handbook. Springer Science & Business Media. 30 June 1989 [2021-02-13]. ISBN 978-0-7923-9031-2. (原始內容存檔於2021-07-10). 

    Module:Authority_control第183行Lua錯誤:attempt to index field 'wikibase' (a nil value)