【发布时间】:2017-04-17 05:39:31
【问题描述】:
我正在尝试制作具有特定逻辑的全加器的二维数组及其输入和输出。我目前有两个用于生成行和列的语句,然后是一个 if-elsif-else 语句来决定如何连接该全加器。我的代码如下所示:
rows : for row in 0 to n-1 generate
columns : for col in 0 to n-1 generate
if row = 0 then
null;
elsif row = 1 then
first: entity work.fa
port map ( A => Ain(row)(col),
B => Bin(row)(col),
sum => sum(row+1)(col),
cin => cin,
cout => cout(row)(col+1)
);
else
process begin
if (row = n/2) then
last: entity work.fa
port map ( A => Ain(row)(col),
B => Bin(row)(col-offset),
sum => sum(row)(col-offset),
cin => cin,
cout => cout(row)(col)
);
else
middle: entity work.fa
port map ( A => mandq(row)(col-offset),
B => sout(row)(col-offset),
sum => sout(row)(col-offset),
cin => cout(row)(col),
cout => cout(row)(col+1)
);
end if;
end process;
end if;
end process;
end generate;
end generate;
每个实体都收到以下错误: - “实体”附近的语法错误。 - “端口”附近的语法错误。 - “;”附近的语法错误。
标题为first、middle 和last 的行出现“实体”错误
“端口”问题出现在实体之后的行上。
“;”包含以 ); 结尾的端口映射的行出现问题
【问题讨论】:
-
流程语句部分只能包含顺序语句。组件实例化(例如您的设计实体 work.fa)是并发语句。
-
您可以尝试使用
if...generate构造来生成需求实例化。 -
您的代码示例不是 Minimal, Complete and Verifiable example 尤其缺少声明,这意味着有人很难向您展示正确的构造并且不可能复制错误。
-
这能回答你的问题吗? port map in structural VHDL code
标签: vhdl hdl xilinx-ise digital-logic