[an error occurred while processing this directive]
|
Один и тотже кусок кода по разному работает если его скомпилить для SPARTAN2 и SPARTAN3. Точнее сказать - на SPARTAN2 работает (как в сииуляторе так и на железе), а на SPARTAN3 - не работает даже в симуляторе!!!!
В симуляторе(лдя SPARTAN3) входные данные (data_in) не записываются в регистр "reg" (регистр "reg" при любом состоянии "data_in" устанавливается в "Z"). Ну и data_out тоже = "Z".
Теперь на счет ворнингов:
- синтез проходит на ура - без единого предупреждения.
- при имплиментации выдаётся одно предупреждение -
NetListWriters:306 - Signal bus _n0007( 7 downto 0 ) on block data_out
is not reconstructed, because there are some missing bus signals.
Но это предупреждение выдаётся как при компиляции для SPARTAN2 так и для SPARTAN3!!!
Что делать - не знаю (наверное вешаться) - срочно нужно переводить проект под SPARTAN3. Помогите решить эту проблему.
Использую ПО - Xilinx ISE 6.2i совместно с Active-HDL 6.2
Привожу кусочек кода - может кто попробует у себя скомпилить
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY data_out IS
PORT (
clk : in std_logic;
reset : in std_logic;
enable_c : in std_logic;
data_in : IN std_logic_vector (7 downto 0);
enable_d : out std_logic;
TSFSC_work : out std_logic;
data_out : OUT std_logic);
END data_out;
ARCHITECTURE max OF data_out IS
signal enable : std_logic;
signal count : integer range 7 downto 0;
BEGIN
process (reset,clk)
variable reg : std_logic_vector(7 downto 0);
-- variable count : integer range 0 to 7;
begin
if (reset = '0') then
reg := conv_std_logic_vector(0,8);
count <= 7;
TSFSC_work <= '0';
data_out <= '0';
elsif (clk'event and clk = '0') then
if enable_c = '1' then
if (count = 7) then
reg := data_in;
end if;
data_out <= reg(count);
count <= count - 1;
-- reg(7) := reg(6);
-- reg(6) := reg(5);
-- reg(5) := reg(4);
-- reg(4) := reg(3);
-- reg(3) := reg(2);
-- reg(2) := reg(1);
-- reg(1) := reg(0);
-- reg(0) := '0';
-- enable_d <= '0';
if (count = 0) then
enable <= '1';
else
enable <= '0';
end if;
if (count = 7) then
TSFSC_work <= '1';
else
TSFSC_work <= '0';
end if;
else
reg := conv_std_logic_vector(0,8);
count <= 7;
end if;
end if;
end process;
enable_d <= enable;
END max;
(при построении диаграмм достаточно установить - data_in = 0, reset = '1', clk = любой клок, enable_c = '1')
E-mail: info@telesys.ru