当前位置:   article > 正文

vivado VHDL Objects、VHDL实体描述_vivado中怎么设计vhdl的结构化描述

vivado中怎么设计vhdl的结构化描述

VHDL对象包括:信号、变量、常量和运算符。

信号

在中声明VHDL信号:

•体系结构声明部分:在该体系结构内的任何位置使用VHDL信号。

•一个块:在该块中使用VHDL信号。

使用<=信号分配运算符分配VHDL信号。

signal sig1 : std_logic;
sig1 <= '1';

变量

VHDL变量为:

•在进程或子程序中声明。

•在该过程或子程序中使用。

•使用:=赋值运算符进行赋值。

variable var1 : std_logic_vector (7 downto 0); var1 := "01010011";

常量

您可以在任何声明性区域中声明VHDL常量。常数用于区域在声明常数值之后,不能更改它们。

signal sig1 : std_logic_vector(5 downto 0);constant init0 :
std_logic_vector (5 downto 0) := "010111";sig1 <= init0;

操作

Vivado合成支持VHDL运算符。

轮班操作示例

VHDL实体描述

VHDL电路描述

VHDL电路描述(设计单元)包括以下内容:

•实体声明:提供电路的外部视图。描述从中可见的对象外部,包括电路接口,如I/O端口和泛型

•体系结构:提供电路的内部视图,并描述电路行为或结构

VHDL实体声明

电路的I/O端口在实体中声明。每个端口都有一个:

•名称

•模式(输入、输出、输出、缓冲)

•类型

受限端口和非受限端口

定义端口时,端口:

•可受约束或不受约束。

•通常受到限制。

•在实体声明中可以不受约束。

○ 如果端口不受约束,则在连接时实例化时定义其宽度在正式端口和实际信号之间进行。

○ 无约束端口允许您创建同一实体的不同实例,定义不同的端口宽度。

建议:不要使用不受约束的端口。定义通过泛型约束的端口。

在实例化时应用这些泛型的不同值。在顶级实体上不要有不受约束的端口。

不接受多个维度的数组类型作为端口。实体声明可以也声明VHDL泛型。

缓冲端口模式

建议:不要使用缓冲端口模式。

VHDL允许在内部使用信号时使用缓冲端口模式,并在以下情况下用作输出端口只有一个内部驱动程序。缓冲端口是合成期间的潜在误差源,并通过模拟使合成后结果的验证复杂化。

NOT RECOMMENDED Coding Example WITH Buffer Port Mode
entity alu is
port(
CLK : in STD_LOGIC;
A : inSTD_LOGIC_VECTOR(3 downto 0);
B : inSTD_LOGIC_VECTOR(3 downto 0);
C : buffer STD_LOGIC_VECTOR(3 downto 0));
end alu;
architecture behavioral of alu is
begin
process begin
if rising_edge(CLK) then
C <= UNSIGNED(A) + UNSIGNED(B) UNSIGNED(C);
end if;
end process;
end behavioral;

丢弃缓冲区端口模式

建议:丢弃缓冲端口模式。

在前面的编码示例中,信号C是用缓冲模式建模的,并且两者都使用内部和作为输出端口。可以连接到C的每个层次结构级别也必须声明为缓冲区。

要删除缓冲区模式:

1.插入一个伪信号。

2.将端口C声明为输出。

RECOMMENDED Coding Example WITHOUT Buffer Port Mode
entity alu is
port(
CLK : in STD_LOGIC;
A : in STD_LOGIC_VECTOR(3 downto 0);
B : in STD_LOGIC_VECTOR(3 downto 0);
C : out STD_LOGIC_VECTOR(3 downto 0));
end alu;
architecture behavioral of alu is
-- dummy signal
signal C_INT : STD_LOGIC_VECTOR(3 downto 0);
begin
C <= C_INT;
process begin
if rising_edge(CLK) then
C_INT <= A and B and C_INT;
end if;
end process;
end behavioral;
VHDL Architecture Declarations
You can declare internal signals in the architecture. Each internal signal has a name and a type.
VHDL Architecture Declaration Coding Example
library IEEE;
use IEEE.std_logic_1164.all;
entity EXAMPLE is
port (
A,B,C : in std_logic;
D,E : out std_logic );
end EXAMPLE;
architecture ARCHI of EXAMPLE is
signal T : std_logic;
begin
...
end ARCHI;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/879456
推荐阅读
  

闽ICP备14008679号