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)