[an error occurred while processing this directive]
Люди добрые, подскажите .... +
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Amid 01 июня 2006 г. 10:00

Один и тотже кусок кода по разному работает если его скомпилить для 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: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru