gpt4 book ai didi

port - VHDL端口映射问题

转载 作者:行者123 更新时间:2023-12-05 00:43:56 25 4
gpt4 key购买 nike

我对 VHDL 比较陌生。我正在尝试编写代码来使用全加器的组合进行无符号乘法。编译时,它向上传递到端口映射。我已经解决了第一张 map 中的错误,但所有其他 map 都给我带来了问题。

我得到相同的错误:“端口映射方面的实际表达式必须是静态的”

这是我的代码。任何帮助表示赞赏。此外,如果您有基于查看我的代码的一般提示,我将不胜感激。

谢谢,
布兹基

library  ieee;
use ieee.std_logic_1164.all;


entity fulladder is

port (a, b, c: in std_logic;
sout, cout: out std_logic);

end fulladder;

architecture behav of fulladder is
begin

sout <= (a xor b) xor c ;
cout <= (a and b) or (c and (a xor b));

end behav;

library ieee;
use ieee.std_logic_1164.all;

entity unsignedmult is
port (a,b: in std_logic_vector (3 downto 0);
pro: out std_logic_vector (7 downto 0));

end unsignedmult;


architecture synth of unsignedmult is

--Declarations
signal c1,c2,c3,c4,c5: std_logic_vector (3 downto 0);
signal s1,s2,s3,s4: std_logic_vector (2 downto 0);
component fulladder
port (a,b,c:in std_logic;
sout,cout:out std_logic);
end component;

begin

--Row 0 ----Sin-----A&B-------Cin--Sout---Cout
Fand00: fulladder port map('0',(a(0) and b(0)),'0',pro(0),c1(0));
Fand01: fulladder port map('0',(a(1) and b(0)),'0',s1(0),c1(1));
Fand02: fulladder port map('0',(a(2) and b(0)),'0',s1(1),c1(2));
Fand03: fulladder port map('0',(a(3) and b(0)),'0',s1(2),c1(3));

--Row 1
Fand10: fulladder port map(s1(0),(a(0) and b(1)),c1(0),pro(1),c2(0));
Fand11: fulladder port map(s1(1),(a(1) and b(1)),c1(1),s2(0),c2(1));
Fand12: fulladder port map(s1(2),(a(2) and b(1)),c1(2),s2(1),c2(2));
Fand13: fulladder port map('0',(a(3) and b(1)),c1(3),s2(2),c2(3));

--Row 2
Fand20: fulladder
----Sin------A&B------Cin-Sout-Cout
port map(s2(0),(a(0) and b(2)),c2(0),pro(2),c3(0));
Fand21: fulladder
----Sin--A&B------Cin-Sout-Cout
port map(s2(1),(a(1) and b(2)),c2(1),s3(0),c3(1));
Fand22: fulladder
----Sin--A&B------Cin-Sout-Cout
port map(s2(2),(a(2) and b(2)),c2(2),s3(1),c3(2));
Fand23: fulladder
----Sin--A&B------Cin-Sout-Cout
port map('0',(a(3) and b(2)),c2(3),s3(2),c3(3));

--Row 3
Fand30: fulladder
----Sin------A&B------Cin-Sout-Cout
port map(s3(0),(a(0) and b(3)),c3(0),pro(3),c4(0));
Fand31: fulladder
----Sin--A&B------Cin-Sout-Cout
port map(s3(1),(a(1) and b(3)),c3(1),s4(0),c4(1));
Fand32: fulladder
----Sin--A&B------Cin-Sout-Cout
port map(s3(2),(a(2) and b(3)),c3(2),s4(1),c4(2));
Fand33: fulladder
----Sin--A&B------Cin-Sout-Cout
port map('0',(a(3) and b(3)),c3(3),s4(2),c4(3));

--Row 4
F40: fulladder
port map(s4(0),c4(0),'0',pro(4),c5(0));
F41: fulladder
port map(s4(1),c4(1),c5(0),pro(5),c5(1));
F42: fulladder
port map(s4(2),c4(2),c5(1),pro(6),c5(2));
F43: fulladder
port map('0',c4(3),c5(2),pro(7),c5(3));

end synth;

最佳答案

我生疏了,但您可能需要为 a(_) and b(_) 设置显式和门。条目。我听说过线或,但没有听说过线与(至少在正逻辑中)。

至少,尝试用 a(_) 替换这些中的每一个。部分,看看错误是否消失。它不会是正确的电路,但它会确认我是否正确了解导致编译问题的原因。

关于port - VHDL端口映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/632422/

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