Я пытаюсь создать схему потока данных для компаратора в VHDL. Он компилирует и имитирует штраф в Xilinx, но я должен использовать Cadence/NCLaunch. Когда я скопировал один и тот же код в gedit и запустил его, он дал ошибку о запятой.Код VHDL в NCLaunch, дающий ошибки, не указанные в Xilinx
мой код:
library ieee;
use ieee.std_logic_1164.all;
-----------------------------------------------------
entity Comparator is
port( A: in std_logic_vector (3 downto 0);
B: in std_logic_vector (3 downto 0);
AeqB: out std_logic;
AltB: out std_logic;
AgtB: out std_logic);
end Comparator;
architecture dataflow of Comparator is
signal AeB : std_logic;
signal AlB : std_logic;
signal AgB : std_logic;
signal i : std_logic_vector (3 downto 0);
signal j : std_logic_vector (3 downto 0);
begin
B1: BLOCK BEGIN
AeB <= i(3) AND i(2) AND i(1) and i(0);
AgB <= j(3) or j(2) or j(1) or j(0);
AlB <= AeB nor AgB;
END BLOCK B1;
B2: BLOCK BEGIN
i <= a xnor b;
END BLOCK B2;
B3: BLOCK BEGIN
j(3) <= (not b(3)) and a(3);
j(2) <= i(3) and not b(2) and a(2);
j(1) <= i(3) and i(2) and not b(1) and a(1);
j(0) <= i(3) and i(2) and i(1) and not b(0) and a(0);
END BLOCK B3;
B4: BLOCK BEGIN
AeqB <= AeB;
AltB <= AlB;
AgTB <= AgB;
END BLOCK B4;
end dataflow;
... и ошибка, я получаю:
i <= a xnor b;
|
ncvhdl_p: *E,EXPSMI (/ugrad/syedhuq/ECE425/Lab2/Comparator.vhd,29|11): expecting a semicolon (';') [9.5.1].
Насколько я могу сказать, у меня есть точка с запятой там ... и если я заменить заявление на четыре отдельных заявления, таких как
i(n) <= a(n) xnor b(n); //[n = 1, 2, 3, 4],
Я получаю ту же ошибку 4 раза. Может ли кто-нибудь помочь мне с этим?
Кроме того, он отлично компилируется в Synopsys (VCSMX) и так же файл TestBench, но в процессе связывания, он говорит мне:
Design unit 'COMPARATOR(BEHAVE)' from library '.' cannot be opened for
reading.
Possible causes:
[1] Incorrect logical to physical mapping in synopsys_sim.setup file.
[2] Intermediate file generation was prematurely terminated during analysis.
Reanalyze the design unit and resolve any errors that occur during analysis.
соответствующая строка из кода TestBench является:
for x1: Comparator use entity work.Comparator(Behave);
Заранее благодарим за помощь.
И если вы можете это исправить есть три места в обоих std_logic_1164.vhdl И std_logic_1164-body.vhdl, которые должны быть просто не заметил, std_ulogic_vector, std_logic_vector (различных типов) и std_ulogic (std_logic - это подтип std_logic). – user1155120
Да, вы правы. Мой одноклассник позже сказал мне, что xnor не работает. Я просто предположил, что это произошло, так как он стал синим в xilinx и, будучи опытным в компиляторах C++, я думал, что это означает, что он распознал функцию. – DDauS
Вы можете получить свои типы администрирования sys, чтобы исправить это более чем вероятно. – user1155120