vivado VHDL组合电路、生成语句、

VHDL组合电路

组合逻辑是使用您在正文中指定的并发信号分配来描述的一个体系结构。您可以根据需要描述尽可能多的并发信号分配;这个体系结构中并发信号分配的出现顺序是无关的。

VHDL并发信号分配

当上的任何信号赋值的右侧更改值。重新评估的结果分配给上的信号左侧。支持的并发信号分配类型有:简单信号分配示例,和并发选择分配示例(VHDL)。

简单信号分配示例

T <= A and B;
Concurrent Selection Assignment Example (VHDL)
Filename: concurrent_selected_asssignment.vhd
-- Concurrent selection assignment in VHDL
--
-- concurrent_selected_assignment.vhd
--
library ieee;
use ieee.std_logic_1164.all;
entity concurrent_selected_assignment is
generic(
width : integer := 8);
port(
a, b, c, d : in std_logic_vector(width - 1 downto 0);
sel : in std_logic_vector(1 downto 0);
T : out std_logic_vector(width - 1 downto 0));
end concurrent_selected_assignment;
architecture bhv of concurrent_selected_assignment is
begin
with sel select T <=
a when "00",
b when "01",
c when "10",
d when others;
end bhv;

生成语句

生成语句包括:

•用于生成语句

•如果生成语句

用于生成语句

for generate语句描述重复结构。

用于生成语句(VHDL)的示例

文件名:for-generate.vhd

在这个编码示例中,for generate语句描述了结果的计算针对该8位加法器的每个位位置执行。

--
-- A for-generate example
--
-- for_generate.vhd
--
entity for_generate is
port(
A, B : in BIT_VECTOR(0 to 7);
CIN : in BIT;
SUM : out BIT_VECTOR(0 to 7);
COUT : out BIT
);
end for_generate;
architecture archi of for_generate is
signal C : BIT_VECTOR(0 to 8);
begin
C(0) <= CIN;
COUT <= C(8);
LOOP_ADD : for I in 0 to 7 generate
SUM(I) <= A(I) xor B(I) xor C(I);
C(I + 1) <= (A(I) and B(I)) or (A(I) and C(I)) or (B(I) and C(I));
end generate;
end archi;

使用if生成语句

if generate语句基于测试激活HDL源代码的特定部分结果,并支持静态(非动态)条件。例如,当泛型指示目标设备系列时,if generate语句针对特定的设备系列测试泛型的值,并激活的一部分专门为该设备系列编写的HDL源代码。用于生成的示例嵌套在if-generate语句(VHDL)中

文件名:if_for_generate.vhd

在该编码示例中,描述了宽度范围在4和32之间的通用N位加法器带有if-generate和for-generate语句。

-- A for-generate nested in a if-generate
--
-- if_for_generate.vhd
--
entity if_for_generate is
generic(
N : INTEGER := 8
);
port(
A, B : in BIT_VECTOR(N downto 0);
CIN : in BIT;
SUM : out BIT_VECTOR(N downto 0);
COUT : out BIT
);
end if_for_generate;
architecture archi of if_for_generate is
signal C : BIT_VECTOR(N + 1 downto 0);
begin
IF_N : if (N >= 4 and N <= 32) generate
C(0) <= CIN;
COUT <= C(N + 1);
LOOP_ADD : for I in 0 to N generate
SUM(I) <= A(I) xor B(I) xor C(I);
C(I + 1) <= (A(I) and B(I)) or (A(I) and C(I)) or (B(I) and C(I));
end generate;
end generate;
end archi;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cckkppll

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

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

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

打赏作者

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

抵扣说明:

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

余额充值