vivado VHDL Objects、VHDL实体描述

本文详细介绍了VHDL中的关键概念,包括信号的声明与分配、变量的使用、常量的声明、运算符支持以及VHDL实体描述和体系结构的组成部分,强调了端口模式、缓冲端口和泛型的重要性。
摘要由CSDN通过智能技术生成

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;
  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值