[an error occurred while processing this directive]
Не получается все скомпилить в .bdf - файле(+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

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

Отправлено Question 16 апреля 2004 г. 09:00

Я пишу на VHDL. Сначала описал блоки проекта в отдельных vhd - файлах (разбил их по функциональному назначению). Прокомпелил их по отдельности. Все отлично работает. Затем начал "склеивать". Создал новый проект (bdf - файл). С помощью инструмента "block tool" создал блоки. В них скопировал содержимое vhd - файлов из моих отдельных проектов. Имя блока соответствует имени vhd - файла. Порты у блока соответственно. Например(привожу один из блоков):

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY shift_reg IS
PORT
(
after_NCO : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
clock_1 : IN STD_LOGIC ;

tap0 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap1 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap2 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap3 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap4 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap5 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap6 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap7 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap8 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap9 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
tap10 : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)
);
END shift_reg;

ARCHITECTURE SYN OF shift_reg IS
SIGNAL tap0x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap1x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap2x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap3x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap4x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap5x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap6x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap7x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap8x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap9x : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL tap10x : STD_LOGIC_VECTOR (15 DOWNTO 0);

BEGIN
tap0 <= tap0x;
tap1 <= tap1x;
tap2 <= tap2x;
tap3 <= tap3x;
tap4 <= tap4x;
tap5 <= tap5x;
tap6 <= tap6x;
tap7 <= tap7x;
tap8 <= tap8x;
tap9 <= tap9x;
tap10 <= tap10x;

PROCESS (clock_1)
BEGIN
IF (clock_1'event AND clock_1 = '1') THEN
tap0x <= after_NCO;
tap1x <= tap0x;
tap2x <= tap1x;
tap3x <= tap2x;
tap4x <= tap3x;
tap5x <= tap4x;
tap6x <= tap5x;
tap7x <= tap6x;
tap8x <= tap7x;
tap9x <= tap8x;
tap10x <= tap9x;
END IF;
END PROCESS;
END SYN;

Отдельно он прекрасно компилируется.


Значит для него создаю блок (уже в новом проекте, в bdf - файле) с именем "shift_reg" и с пинами:

after_NCO INPUT
clock_1 INPUT
tap0 OUTPUT
tap1 OUTPUT
tap2 OUTPUT
.........
tap10 OUTPUT

И так для каждого блока. Ввожу связи между блоками. Ввожу пины, соответственно с именами tap0, tap1, ... Начинаю компилить и он мне начинает выводить такие вот предупреждения:
Warning: Port result does not exist in macrofunction inst5. The range of the port is wider in the macrofunction than in the design.

Такое ощущение, что он не видит внутренности блоков, или не включает их.

Выход из ситуации я нашел. Создал для каждого отдельного блока символ. Символы склеил в bdf - файле. Далее в Settings указал пути к User Library (где у меня находяться мои скомпелированные проекты) и все скомпилил. Но я считаю что это через ж..у. Тем более что в tutorial (в help'е) все компилится, хотя они там пишут на Verilog'е.
Я думаю у меня проблемы с шинами (присвоение имен к пинам), но не пойму что именно. Хелпните, если кто знает.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

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

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

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


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru