The syntax is perfectly right
Не совсем.
cin:in std_logic='0'
Должно быть
cin: in std_logic := '0'
------------------^
Вы также отсутствует пункт контекстного в начале:
library ieee;
use ieee.std_logic_1164.all;
Вы удалили, что и некоторые комментарии заголовка, по-видимому, без указания, какая линия была строка 45 (и это строка, взятая выше). Ваш пример не совсем Minimal, Complete, and Verifiable example.
Ошибки синтаксиса обычно проявляются легко, когда вы используете пробел и отступы последовательно и хорошо.
Готов ли подать иск о семантике?
Дополнения к «Больше чем фактическому найденным формалям в карте порта»
Как вы обнаружили у вас также есть смысловые ошибки, а также вышеуказанная ошибка синтаксиса. Хотя вы не обновили свой вопрос, эти ошибки также могут быть объяснены здесь.
В «Больше чем Actuals найдены формали в карте порта» для оригинальных линий 54 - 59 является, потому что вы не имеете такое же количество портов в карте порта ассоциациях, объявлены в декларациях компонентов для twobitmult
и rca
экземпляров ,
Вы можете излечить их, используя именованную ассоциацию, которая позволяет использовать элементы массива формального элемента, связанные с фактическим типом базового элемента массива. (Разрешить больше записей списка ассоциаций, чем количество портов).
Обратите внимание, что у вас возникла ошибка с объявлением компонента rca
, показано больше ассоциаций карт портов, чем это возможно, путем расширения типов массивов.
Похоже, что carry
предназначен для типа массива (и для его отражения были аннотированы ниже).
Также обратите внимание, что ваши типы массивов в ваших компонентах объявляются с индексами элементов порта в порядке убывания, и вы связываете их с элементами возрастания объекта fourbitmult
портов типа массива.
Если вы можете использовать срезы фактических данных с таким же диапазоном направления, как они объявлены, запись списка ассоциаций может быть упрощена, например, как a => a(1 downto 0),
. То же самое справедливо и для других мест, в которых вы можете подключить фактические данные среза.
Так что делают количество портов матча с помощью формальных элементов:
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;
Этого анализ, но без лица/архитектура пара для заявленных компонентов не может быть разработана, ни функциональность проверена.
Я попробовал ур предложение, но я получаю ошибку, как «Более актуальные факты, чем форматы в карте порта» в строках от 54 до 59.plz дать некоторые другие предложения.Спасибо вам сэр – Jyoti