gpt4 book ai didi

generics - VHDL 泛型的使用

转载 作者:行者123 更新时间:2023-12-03 08:47:33 31 4
gpt4 key购买 nike

我正在学习 VHDL,但我还不明白如何正确使用泛型。假设我需要使用具有可变位数的 2:1 MUX 来描述不同的多路复用器。我们称这个参数为 p。这是一个示例代码(这个代码在这种情况下并不重要)

library ieee;
use ieee.std_logic_1164.all;

entity mux2to1_gen is
generic ( p : POSITIVE := 1 );
port (
x,y : in std_logic_vector ( p-1 downto 0 );
s : in std_logic;
m : out std_logic_vector ( p-1 downto 0 )
);
end mux2to1_gen;


architecture logic of mux2to1_gen is
signal s_vector : std_logic_vector ( p-1 downto 0 );
begin
s_vector <= ( others => s );
m <= (NOT (s_vector) AND x) OR (s_vector AND y);
end architecture;

我想使用此代码轻松创建一个 2:1 8 位 MUX,即 p = 8 或者在 1 位上使用四个 2:1 MUX 的 5:1 MUX。所以基本上,我想创建另一个文件并轻松使用此代码,仅在第一种情况下声明 p 的值,在第二种情况下仅声明更多内容。我怎么做?

最佳答案

所有的魔法都发生在实例(组件或实体)中。假设您已经在要创建不同大小的多路复用器的位置完成了组件声明:

-- Create 8:1 Mux
Mux8_1 : mux2to1_gen
generic map (p => 8 )
port map (x => A8, y => B8, s => Mux8Sel, m => MuxOut8) ;

-- Create 5:1 Mux
Mux5_1 : mux2to1_gen
generic map (p => 5 )
port map (x => X5, y => Y5, s => Mux5Sel, m => MuxOut5) ;

上面使用了通常首选的命名关联方法。您还可以按如下所示在位置上关联端口,但这会使设计更难以维护和审查。请记住,大多数代码是由一个人编写的,但由许多人(包括进行下一次修订的人)审查,因此,虽然命名关联增加了设计捕获的工作量,但它减少了总体工作量。

-- Create 8:1 Mux
Mux8_1 : mux2to1_gen
generic map (8 )
port map (A8, B8, Mux8Sel, MuxOut8) ;

关于generics - VHDL 泛型的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60813731/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com