📜  VLSI设计-VHDL简介

📅  最后修改于: 2020-11-22 17:14:35             🧑  作者: Mango


VHDL代表超高速集成电路硬件描述语言。它是一种编程语言,用于通过数据流,行为和结构化样式对数字系统进行建模。该语言于1981年在VHSIC计划下首次为国防部(DoD)引入。

描述设计

在VHDL中,实体用于描述硬件模块。可以使用以下方式描述实体:

  • 实体声明
  • 建筑
  • 组态
  • 包裹申报
  • 包装体

让我们看看这些是什么?

实体声明

它定义了硬件模块的名称,输入输出信号和模式。

语法

entity entity_name is
   Port declaration;
end entity_name;

实体声明应以“实体”开头,并以“结束”关键字结尾。方向将输入,输出或输入。

In Port can be read
Out Port can be written
Inout Port can be read and written
Buffer Port can be read and written, it can have only one source.

建筑

可以使用结构,数据流,行为或混合样式来描述体系结构。

语法

architecture architecture_name of entity_name 
architecture_declarative_part;

begin
   Statements;
end architecture_name;

在这里,我们应该指定要为其编写体系结构主体的实体名称。体系结构语句应位于’begin’和’énd’关键字内。体系结构声明性部分可以包含变量,常量或组件声明。

数据流建模

在这种建模方式中,使用并发(并行)信号表示通过实体的数据流。 VHDL中的并发语句是WHEN和GENERATE。

除了它们,仅使用运算符(AND,NOT,+,*,sll等)的赋值也可以用于构造代码。

最后,一种特殊的分配,称为BLOCK,也可以在这种代码中使用。

在并发代码中,可以使用以下内容-

  • 经营者
  • WHEN语句(WHEN / ELSE或WITH / SELECT / WHEN);
  • GENERATE语句;
  • BLOCK语句

行为建模

在这种建模方式中,实体作为一组语句的行为按指定顺序顺序执行。只有放在PROCESS,FUNCTION或PROCEDURE中的语句是顺序的。

过程,功能和过程是顺序执行的唯一代码部分。

但是,总的来说,这些块中的任何一个仍然与放置在其外部的任何其他语句并发。

行为代码的一个重要方面是它不限于顺序逻辑。的确,有了它,我们可以构建时序电路以及组合电路。

行为语句是IF,WAIT,CASE和LOOP。变量也受到限制,它们应仅在顺序代码中使用。 VARIABLE永远不能是全局的,因此其值不能直接传递出去。

结构建模

在此建模中,实体被描述为一组相互连接的组件。组件实例化语句是并发语句。因此,这些语句的顺序并不重要。建模的结构样式仅描述了组件的互连(被视为黑盒),并不暗示组件本身或它们共同表示的实体的任何行为。

在结构建模中,体系结构主体由两部分组成-声明部分(在关键字begin之前)和语句部分(在关键字begin之后)。

逻辑运算– AND GATE

与门

X Y Z
0 0 0
0 1 0
1 0 0
1 1 1
VHDL Code:
Library ieee;
use ieee.std_logic_1164.all;

entity and1 is
   port(x,y:in bit ; z:out bit);
end and1;

architecture virat of and1 is
begin
   z<=x and y; 
end virat;

波形图

波形与

逻辑运算–或门

或门

X Y Z
0 0 0
0 1 1
1 0 1
1 1 1
VHDL Code: 
Library ieee; 
use ieee.std_logic_1164.all;  

entity or1 is
   port(x,y:in bit ; z:out bit); 
end or1; 
 
architecture virat of or1 is
begin
   z<=x or y; 
end virat;

波形图

波形或

逻辑运算–非门

非门

X Y
0 1
1 0
VHDL Code:
  
Library ieee; 
use ieee.std_logic_1164.all; 
 
entity not1 is
   port(x:in bit ; y:out bit); 
end not1; 
 
architecture virat of not1 is
begin
   y<=not x;
end virat; 

波形图

波形不

逻辑运算– NAND门

与非门

X Y z
0 0 1
0 1 1
1 0 1
1 1 0
VHDL Code:
  
Library ieee; 
use ieee.std_logic_1164.all; 

entity nand1 is
   port(a,b:in bit ; c:out bit); 
end nand1; 
 
architecture virat of nand1 is
begin
   c<=a nand b; 
end virat; 

波形图

波形与非

逻辑运算–或非门

或非门

X Y z
0 0 1
0 1 0
1 0 0
1 1 0
VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all; 
 
entity nor1 is
   port(a,b:in bit ; c:out bit); 
end nor1; 
 
architecture virat of nor1 is
begin
   c<=a nor b;
end virat; 

波形图

波形NOR

逻辑运算– XOR门

异或门

X Y Z
0 0 1
0 1 1
1 0 1
1 1 0
VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all;
  
entity xor1 is
   port(a,b:in bit ; c:out bit); 
end xor1;
  
architecture virat of xor1 is
begin
   c<=a xor b; 
end virat;

波形图

波形异或

逻辑运算– X-NOR门

X Y Z
0 0 1
0 1 1
1 0 1
1 1 0
VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all; 

entity xnor1 is
   port(a,b:in bit ; c:out bit); 
end xnor1; 
 
architecture virat of xnor1 is
begin
   c<=not(a xor b); 
end virat;

波形图

波形X-NOR