kuzis 0 18 ноября, 2008 Опубликовано 18 ноября, 2008 · Жалоба Вопрос следующий. В ActiveHDL создается электрическая схема, в которую вставляется элемент, представляющий собой кор, сгенеренный коргенератором. После компиляции схемы в получившемся VHDL файле появляется вот такая строка for DATA_FROM_RAM_FIFO : async_fifo_32bits_deph1024_bram_001 use entity ip_cores.async_fifo_32bits_deph1024_bram_001(async_fifo_32bits_deph1024_bram_001 _a); Кто нибудь может точно объяснить что это означает. Сам элемент, когда ставится на схему, в отдельном VHDL файле выглядит так: LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off Library XilinxCoreLib; -- synthesis translate_on ENTITY async_fifo_32bits_deph1024_bram_001 IS port ( din: IN std_logic_VECTOR(31 downto 0); rd_clk: IN std_logic; rd_en: IN std_logic; rst: IN std_logic; wr_clk: IN std_logic; wr_en: IN std_logic; almost_full: OUT std_logic; dout: OUT std_logic_VECTOR(31 downto 0); empty: OUT std_logic; full: OUT std_logic; prog_full: OUT std_logic; valid: OUT std_logic); END async_fifo_32bits_deph1024_bram_001; ARCHITECTURE async_fifo_32bits_deph1024_bram_001_a OF async_fifo_32bits_deph1024_bram_001 IS -- synthesis translate_off component wrapped_async_fifo_32bits_deph1024_bram_001 port ( din: IN std_logic_VECTOR(31 downto 0); rd_clk: IN std_logic; rd_en: IN std_logic; rst: IN std_logic; wr_clk: IN std_logic; wr_en: IN std_logic; almost_full: OUT std_logic; dout: OUT std_logic_VECTOR(31 downto 0); empty: OUT std_logic; full: OUT std_logic; prog_full: OUT std_logic; valid: OUT std_logic); end component; -- Configuration specification for all : wrapped_async_fifo_32bits_deph1024_bram_001 use entity XilinxCoreLib.fifo_generator_v3_3(behavioral) generic map( c_rd_freq => 100, c_wr_response_latency => 1, c_has_srst => 0, c_has_rd_data_count => 0, c_din_width => 32, c_has_wr_data_count => 0, c_implementation_type => 2, c_family => "virtex2", c_has_wr_rst => 0, c_wr_freq => 100, c_underflow_low => 0, c_has_meminit_file => 0, c_has_overflow => 0, c_preload_latency => 0, c_dout_width => 32, c_rd_depth => 512, c_default_value => "BlankString", c_mif_file_name => "BlankString", c_has_underflow => 0, c_has_rd_rst => 0, c_has_almost_full => 1, c_has_rst => 1, c_data_count_width => 9, c_has_wr_ack => 0, c_use_ecc => 0, c_wr_ack_low => 0, c_common_clock => 0, c_rd_pntr_width => 9, c_has_almost_empty => 0, c_rd_data_count_width => 9, c_enable_rlocs => 0, c_wr_pntr_width => 9, c_overflow_low => 0, c_prog_empty_type => 0, c_optimization_mode => 0, c_wr_data_count_width => 9, c_preload_regs => 1, c_dout_rst_val => "0", c_has_data_count => 0, c_prog_full_thresh_negate_val => 449, c_wr_depth => 512, c_prog_empty_thresh_negate_val => 3, c_prog_empty_thresh_assert_val => 2, c_has_valid => 1, c_init_wr_pntr_val => 0, c_prog_full_thresh_assert_val => 450, c_use_fifo16_flags => 0, c_has_backup => 0, c_valid_low => 0, c_prim_fifo_type => "512x36", c_count_type => 0, c_prog_full_type => 1, c_memory_type => 1); -- synthesis translate_on BEGIN -- synthesis translate_off U0 : wrapped_async_fifo_32bits_deph1024_bram_001 port map ( din => din, rd_clk => rd_clk, rd_en => rd_en, rst => rst, wr_clk => wr_clk, wr_en => wr_en, almost_full => almost_full, dout => dout, empty => empty, full => full, prog_full => prog_full, valid => valid); -- synthesis translate_on END async_fifo_32bits_deph1024_bram_001_a; при синтезе, синтезатор XST должен взять только Entity, а архитектуру не смотреть, и уже при имплементации подключить edn файл. Я так понимал, что эта строка и говорит синтезатору, использовать только Entity. Потому что все работает правильно, а вот если строчку for DATA_FROM_RAM_FIFO : async_fifo_32bits_deph1024_bram_001 use entity ip_cores.async_fifo_32bits_deph1024_bram_001(async_fifo_32bits_deph1024_bram_001 _a); удалить, то синтезатор начинает синтезировать архитектуру, говорит что все входы не используются, и все выходы он сажает на 0. Однако... В одном из проектов этого не произошло. Синтезатор начинает синтезировать архитектуру, и как результат никакого фифо в прошивке не появляется. Проверили все настройки синтеза. Все одинаково. В чем может быть дело? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vadim 0 18 ноября, 2008 Опубликовано 18 ноября, 2008 · Жалоба Кто нибудь может точно объяснить что это означает. Конечно. Точно это может объяснить, например, IEEE Std 1076™-2002. Параграф 1.3. Зачем скрыто от синтезатора архитектурное тело async_fifo_32bits_deph1024_bram_001_a? Если это издержки подсаживания на рисуночки, завязывайте, пока не поздно. Читайте стандарты. Помогает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 18 ноября, 2008 Опубликовано 18 ноября, 2008 · Жалоба Зачем скрыто от синтезатора архитектурное тело async_fifo_32bits_deph1024_bram_001_a? Если это издержки подсаживания на рисуночки, завязывайте, пока не поздно. Читайте стандарты. Помогает. Затем, что это архитектурное тело не синтезируемо, а работает лишь при моделировании. И использование графического редактора или VHDL описания сути не меняет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 18 ноября, 2008 Опубликовано 18 ноября, 2008 · Жалоба Затем, что это архитектурное тело не синтезируемо, а работает лишь при моделировании. И использование графического редактора или VHDL описания сути не меняет На мой взгляд :( (я так думаю) , архитектурное тело синтезируемо или не синтезируемо зависит от описания, т.е. какие операторы/функции/библиотеки используются при описании цифрового устройства на языке VHDL и поддерживаются ли они синтезатором :) В графическом редакторе (схематике) библиотека элементов, которая доступна для использования, является пригодной для синтеза, и схемы нарисованные в схематике, с помощью библиотечных элементов будут синтезироваться и моделироваться :) В данном случае может быть требуется какая-то лицензия на корку фифо (хотя мало вероятно) либо Вы не правильно подсоединяете к проекту либо синтезатор упростил Вашу схему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 19 ноября, 2008 Опубликовано 19 ноября, 2008 · Жалоба На мой взгляд :( (я так думаю) , архитектурное тело синтезируемо или не синтезируемо зависит от описания, т.е. какие операторы/функции/библиотеки используются при описании цифрового устройства на языке VHDL и поддерживаются ли они синтезатором :) В графическом редакторе (схематике) библиотека элементов, которая доступна для использования, является пригодной для синтеза, и схемы нарисованные в схематике, с помощью библиотечных элементов будут синтезироваться и моделироваться :) В данном случае может быть требуется какая-то лицензия на корку фифо (хотя мало вероятно) либо Вы не правильно подсоединяете к проекту либо синтезатор упростил Вашу схему. Неправильно вы все думаете. Посмотрите на приведенный код. Там стоят директивы -- synthesis translate_off -- synthesis translate_on Для синтезатора архитектурное тело пустое!!!! выглядит так ARCHITECTURE async_fifo_32bits_deph1024_bram_001_a OF async_fifo_32bits_deph1024_bram_001 IS BEGIN END async_fifo_32bits_deph1024_bram_001_a; И оно должно быть пустым!!! Т.к. сам фифо уже существует в виде списка цепей, отсинтезированный!!! И когда синтезатор видит такую архитектуру, он естественно делает пустой блок, а не берет edn файл из библиотеки коров. Насколько я понял, use entity должна говорить о том, чтобы синтезатор не брал архитектуру, а фактически вставил компонент как black box! Но судя по всему, я понял не совсем верно! Вот и вопрос, что не так я понял Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться