gpt4 book ai didi

syntax-error - VHDL 4位吠陀乘法器

转载 作者:行者123 更新时间:2023-12-03 08:29:13 24 4
gpt4 key购买 nike

entity fourbitmult is
Port ( a,b : in STD_LOGIC_VECTOR (3 downto 0);
p : out STD_LOGIC_VECTOR (7 downto 0));
end fourbitmult;

architecture Behavioral of fourbitmult is
component twobitmult

port(a,b:in std_logic_vector(1 downto 0);
p:out std_logic_vector (3 downto 0));
end component;
component rca
port(a,b:in std_logic_vector(3 downto 0);
s:out std_logic_vector(3 downto 0);
carry:out std_logic;
cin:in std_logic='0'
);
end component;
component halfadder
port(a,b:in std_logic;
s,c:out std_logic);
end component;
signal c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22: std_logic;
begin
m1:twobitmult port map(a(0),a(1),b(0),b(1),p(0),p(1),c1,c2);
m2:twobitmult port map(a(2),a(3),b(0),b(1),c15,c16,c17,c18);
m3:twobitmult port map(a(0),a(1),b(2),b(3),c19,c20,c21,c22);
m4:twobitmult port map(a(2),a(3),b(2),b(3),c7,c8,c9,c10);
r1:rca port map(c15,c16,c17,c18,c19,c20,c21,c22,c3,c4,c5,c6,c12);
r2:rca port map(c1,c2,c7,c8,c3,c4,c5,c6,p(2),p(3),p(4),p(5),c11);
c13<=c11 or c12;
h1:halfadder port map(c13,c9,p(6),c14);
h2:halfadder port map(c14,c10,p(7));
end Behavioral;

我为4位吠陀乘法器编写了VHDL代码。
我收到以下错误消息:
Line 45. parse error, unexpected EQ, expecting SEMICOLON or CLOSEPAR"..

语法完全正确,我不明白为什么会出错。有什么事吗

最佳答案

The syntax is perfectly right
不完全的。

cin:in std_logic='0'

应该
cin: in std_logic := '0'
------------------^

您一开始也缺少context子句:
library ieee;
use ieee.std_logic_1164.all;

您显然已经删除了该行和一些标题注释,而没有指出第45行是哪行(这是上面摘录的行)。您的示例不是 Minimal, Complete, and Verifiable example

当您一致且良好地使用空格和缩进时,语法错误往往容易出现。

愿意就语义提出主张吗?

“在端口图中发现的实际数量多于形式数量的附录”

正如您发现的那样,您还存在语义错误以及上述语法错误。虽然您没有更新问题,但是这里也可以解释这些错误。

原始行54-59的“在端口映射中发现的实际数据多于形式映射”是因为您在端口映射关联中没有与 twobitmultrca实例的组件声明中声明的端口数量相同的端口。

您可以使用命名关联来解决这些问题,该关联允许您使用与实际的数组基础元素类型相关联的形式化的数组端口元素。 (允许的关联列表条目多于端口数)。

请注意,您似乎对 rca组件声明有错误,显示的端口映射关联比扩展数组类型所能提供的更多。

看来 carry是一种数组类型(以下注释已反射(reflect)出来)。

还要注意,组件中的数组类型是使用port元素索引以降序声明的,并将它们与实体 fourbitmult数组类型port的升序元素相关联。

如果您能够以与声明时相同的范围方向使用实际片段,则关联列表条目可以简化为 a => a(1 downto 0),例如。对于可以连接 slice 实际值的其他位置也是如此。

因此,通过使用形式元素使端口数匹配:
library ieee;
use ieee.std_logic_1164.all;

entity fourbitmult is
port (
a,b: in std_logic_vector (3 downto 0);
p: out std_logic_vector (7 downto 0));
end fourbitmult;

architecture behavioral of fourbitmult is
component twobitmult
port (
a,b: in std_logic_vector (1 downto 0);
p: out std_logic_vector (3 downto 0)
);
end component;
component rca
port (
a,b: in std_logic_vector (3 downto 0);
s: out std_logic_vector (3 downto 0);
carry: out std_logic_vector (3 downto 0); -- std_logic;
cin: in std_logic := '0' -- formerly line 45
);
end component;
component halfadder
port (
a,b: in std_logic;
s,c: out std_logic
);
end component;
signal c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,
c13,c14,c15,c16,c17,c18,c19,c20,c21,c22: std_logic;
begin
m1:
twobitmult
port map (
-- a(0),a(1),b(0),b(1),p(0),p(1),c1,c2
a(1) => a(0),
a(0) => a(1),
b(1) => b(0),
b(0) => b(1),
p(3) => p(0),
p(2) => p(1),
p(1) => c1,
p(0) => c2
);
m2:
twobitmult
port map (
-- a(2),a(3),b(0),b(1),c15,c16,c17,c18
a(1) => a(2),
a(0) => a(3),
b(1) => b(0),
b(0) => b(1),
p(3) => c15,
p(2) => c16,
p(1) => c17,
p(0) => c18
);
m3:
twobitmult
port map (
-- a(0),a(1),b(2),b(3),c19,c20,c21,c22
a(1) => a(0),
a(0) => a(1),
b(1) => b(2),
b(0) => b(3),
p(3) => c19,
p(2) => c20,
p(1) => c21,
p(0) => c22
);
m4:
twobitmult
port map (
-- a(2),a(3),b(2),b(3),c7,c8,c9,c10
a(1) => a(2),
a(0) => a(3),
b(1) => b(2),
b(0) => b(3),
p(3) => c7,
p(2) => c8,
p(1) => c9,
p(0) => c10
);
r1:
rca
port map (
--c15,c16,c17,c18,c19,c20,c21,c22,c3,c4,c5,c6,c12
a(3) => c15,
a(2) => c16,
a(1) => c17,
a(0) => c18,
b(3) => c19,
b(2) => c20,
b(1) => c21,
b(0) => c22,
carry(3) => c3,
carry(2) => c4,
carry(1) => c5,
carry(0) => c6,
cin => c12
);
r2:
rca
port map (
-- c1,c2,c7,c8,c3,c4,c5,c6,p(2),p(3),p(4),p(5),c11
a(3) => c1,
a(2) => c2,
a(1) => c7,
a(0) => c8,
b(3) => c3,
b(2) => c4,
b(1) => c5,
b(0) => c6,
carry(3) => p(2),
carry(2) => p(3),
carry(1) => p(4),
carry(0) => p(5),
cin => c11
);

c13 <= c11 or c12;

h1:
halfadder
port map (
c13,c9,p(6),c14
);
h2:
halfadder
port map (
c14,c10,p(7)
);
end behavioral;

这可以分析,但是如果没有声明的组件的实体/架构对,就无法进行详细说明,也无法验证功能。

关于syntax-error - VHDL 4位吠陀乘法器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26604245/

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