|
Вопросы начинающего: VHDL + Precision + Xilinx, Precision не хочет цеплять примитивы Xilinx |
|
|
|
Oct 22 2007, 15:20
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Возникла проблема: решил попробовать систем верилог, взял последний Precision 2006a3, уже есть ISE 8.2. Подсунул туда свой старый проект на VHDL, а пресижн на кусочек кода:
data_pos: for i in 0 to 7 generate data_lutP : RAM16X1D port map( d => DATA_IN_FROM_TIGER(i), we => '1', wclk => CLK_IN_FROM_TIGER, a0 => EXT_CNTR_DATA_POS_p(0), a1 => EXT_CNTR_DATA_POS_p(1), a2 => EXT_CNTR_DATA_POS_p(2), a3 => EXT_CNTR_DATA_POS_p(3), dpra0 => INT_CNTR_DATA_p(0), dpra1 => INT_CNTR_DATA_p(1), dpra2 => INT_CNTR_DATA_p(2), dpra3 => INT_CNTR_DATA_p(3), spo => open, dpo => LUT_DATA_OUT_POS_p(i) ); end generate data_pos;
говорит:
# Error: [42512]: "C:/1/PrecisionTest/../../My/My_work/Almaz/HDL/Viod/Multiplexer_FPGA/rec_anal_tigr.vhd", line 70: Use of undeclared identifier 'RAM16X1D' # Error: [40000]: HDL analysis failed.
Не могу понять в чем дело. Кристалл на котором все должно работать указан - Виртекс 2, его либа в папке пресижена есть, в либе есть елемент RAM16X1D. Может быть я неправильно указываю тип либы с ксилинским компонентом ? Для хилинкса либа была
library unisim ; use unisim.all ; Знающие подскажите.
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Oct 24 2007, 07:23
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
на объявление либы library unisim; use unisim.vcomponents.all ; Precision говорит варнинг, а когда пытаюсь поюзать RAM16X1D возникает ошибка: грит не знаю такого.
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Oct 24 2007, 07:32
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(a123-flex @ Oct 24 2007, 09:46)  не, ни хрена не работает и в 2007  . та же самая ошибка. Блин неужели никто не знает как вкомпилить в проект либу unisim Да не надо её вкопиливать. Объявите компоненту памяти в том файле, где она вставляется и назначьте ему атрибут black box
|
|
|
|
|
Oct 24 2007, 07:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Ок. вот текст с головы файла до места ошибки..
Library IEEE; use IEEE.std_logic_1164.all; use MY_PACKAGE_MULT.all; library unisim; use unisim.vcomponents.all ;
entity rec_anal_tigr is generic( LINK_BUS_WIDTH : integer := 8 ); port( -- global_in RESET : in std_logic; --main clock (state mashine base) CLK_IN_LOW_HLF : in std_logic; --tiger transiver part CLK_OUT_TO_TIGER : out std_logic; CLK_IN_FROM_TIGER : in std_logic; DATA_IN_FROM_TIGER : in std_logic_vector(LINK_BUS_WIDTH-1 downto 0);-- data by tiger -- fifo control FIFO_PROG_FULL : in std_logic; FIFO_WRITE_EN : out std_logic; DATA_WR_TO_FIFO : out std_logic_vector(15 downto 0); ERR_SYNCH_CNTR : out std_logic_vector(ERR_CNTR_SIZE-1 downto 0) ); end entity;
--}} End of automatically maintained section library IEEE; use IEEE.std_logic_unsigned.all;
architecture rec_anal_tigr_arh of rec_anal_tigr is
type SregRecAnal_type is (PRESET, IDLE, TOKEN, RECEIVE, RECEIVE_END, FULL);
signal SregRecAnal_p : SregRecAnal_type := PRESET;
signal WAS_FULL_ST_p,FIFO_WAS_FULL_p : std_logic := '0'; signal FIFO_WRITE_EN_p,CLK_OUT_TO_TIGER_p : std_logic := '0'; signal LUT_DATA_OUT_POS_p,LUT_DATA_OUT_NEG_p : std_logic_vector(7 downto 0); signal ACK_COUNTER_p : std_logic_vector(2 downto 0); signal LAST_TAKT_EXT_CLK_CNTR1_p,LAST_TAKT_EXT_CLK_CNTR2_p : std_logic_vector(1 downto 0) := (others => '0'); signal INT_CNTR_DATA_p,EXT_CNTR_DATA_POS_p,EXT_CNTR_DATA_NEG_p : std_logic_vector(3 downto 0) := (others => '0'); signal ONE_CLK_IN_CNTR_p,ZERO_CLK_IN_CNTR_p,LAST_CNTR_DATA_NEG_p : std_logic_vector(3 downto 0) := (others => '0'); signal BIG_ACK_CNTR_p : std_logic_vector(11 downto 0); signal ERR_SYNCH_CNTR_p : std_logic_vector(ERR_CNTR_SIZE-1 downto 0);
begin
DATA_WR_TO_FIFO(15 downto 8) <= LUT_DATA_OUT_NEG_p(7 downto 0); DATA_WR_TO_FIFO( 7 downto 0) <= LUT_DATA_OUT_POS_p(7 downto 0);
data_pos: for i in 0 to 7 generate data_lutP : RAM16X1D port map( d => DATA_IN_FROM_TIGER(i), we => '1', wclk => CLK_IN_FROM_TIGER, a0 => EXT_CNTR_DATA_POS_p(0), a1 => EXT_CNTR_DATA_POS_p(1), a2 => EXT_CNTR_DATA_POS_p(2), a3 => EXT_CNTR_DATA_POS_p(3), dpra0 => INT_CNTR_DATA_p(0), dpra1 => INT_CNTR_DATA_p(1), dpra2 => INT_CNTR_DATA_p(2), dpra3 => INT_CNTR_DATA_p(3), spo => open, dpo => LUT_DATA_OUT_POS_p(i) ); end generate data_pos;
ошибка: # Error: [42512]: "C:/1/PrecisionTest/../../My/My_work/Almaz/HDL/Viod/Multiplexer_FPGA/rec_anal_tigr.vhd", line 70: Use of undeclared identifier 'RAM16X1D' # Error: [40000]: HDL analysis failed.
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Oct 24 2007, 08:10
|
Местный
  
Группа: Свой
Сообщений: 314
Регистрация: 7-12-05
Пользователь №: 11 917

|
Добавьте в секции объявления сигналов объявление компонента, который будете использовать: Код component RAM16X1D generic ( INIT : bit_vector(15 downto 0) := X"0000" ); port ( DPO : out std_ulogic; SPO : out std_ulogic; A0 : in std_ulogic; A1 : in std_ulogic; A2 : in std_ulogic; A3 : in std_ulogic; D : in std_ulogic; DPRA0 : in std_ulogic; DPRA1 : in std_ulogic; DPRA2 : in std_ulogic; DPRA3 : in std_ulogic; WCLK : in std_ulogic; WE : in std_ulogic ); end component; --Добавлено А вообще общий совет - учитесь пользоваться конструкциями VHDL его именно для этого и придумали, чтобы покомпонентно не писать. То, что вы вставили компонентом проще и быстрее написать на чистом VHDL без библиотечных элементов. Если заинтересуетесь - обращайтесь. А лучше книжку почитайте.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|