Ender 0 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Вопрос следующий. Требуется (если быть точным, было бы очень желательно) использовать вместо создания каждый раз проекта в Core Generator тех же самых КИХ-ов (FIR-filter) в случае, скажем, изменения их разрядности, просто обращение к соответствующему компоненту из Xilinx CoreLib с изменением соответствующих generic. Это возможно, вот соответствующий пример FIR-фильтра на Distributed Arithmetics: Library XilinxCoreLib; ENTITY DAFIR12 IS port ( ND: IN std_logic; RDY: OUT std_logic; CLK: IN std_logic; RST: IN std_logic; RFD: OUT std_logic; DIN: IN std_logic_VECTOR(9 downto 0); DOUT: OUT std_logic_VECTOR(15 downto 0)); END DAFIR12; ARCHITECTURE DAFIR12_a OF DAFIR12 IS -- synthesis translate_off component wrapped_DAFIR12 port ( ND: IN std_logic; RDY: OUT std_logic; CLK: IN std_logic; RST: IN std_logic; RFD: OUT std_logic; DIN: IN std_logic_VECTOR(9 downto 0); DOUT: OUT std_logic_VECTOR(15 downto 0)); end component; -- Configuration specification for all : wrapped_DAFIR12 use entity XilinxCoreLib.C_DA_FIR_V9_0(behavioral) generic map( c_has_sout_r => 0, c_result_width => 16, c_reload_delay => 210, c_data_type => 0, c_channels => 1, c_filter_type => 0, c_response => 1, c_has_sout_f => 0, c_reg_output => 1, c_taps => 12, c_data_width => 10, c_enable_rlocs => 0, c_coeff_type => 0, c_has_sin_r => 0, c_reload_mem_type => 1, c_reload => 0, c_baat => 10, c_latency => 9, c_coeff_width => 2, c_optimize => 0, c_use_model_func => 0, c_zpf => 1, c_has_sin_f => 0, c_shape => 0, c_has_sel_o => 0, c_saturate => 0, c_mem_init_file => "DAFIR12.mif", c_polyphase_factor => 1, c_has_sel_i => 0, c_has_reset => 1); -- synthesis translate_on BEGIN -- synthesis translate_off U0 : wrapped_DAFIR12 port map ( ND => ND, RDY => RDY, CLK => CLK, RST => RST, RFD => RFD, DIN => DIN, DOUT => DOUT); -- synthesis translate_on END DAFIR12_a; Проблема заключается в том, что я не представляю, откуда взять описания параметров generic и как они должны изменяться в таких блоках, как пример, того же самого c_reload_delay, который должен меняться для различных разрядностей фильтра, при этом неизвестно мне как. Описания самой CoreLib я вот так сразу нигде не нашел. Может, кто сталкивался с соответствующим мануалом и может направить поиски или непосредственно дать искомый документ или ссылку на него? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 233 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Думаю, что Вам их не найти, т.к. эти параметры определяются и формируются CoreGen при создании соответсвующего экземпляра сконфигурированного IP-ядра. А CoreLib - это низкоуровневая служебная библиотека, до которой пользователям нет дела. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ender 0 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Думаю, что Вам их не найти, т.к. эти параметры определяются и формируются CoreGen при создании соответсвующего экземпляра сконфигурированного IP-ядра. А CoreLib - это низкоуровневая служебная библиотека, до которой пользователям нет дела. Определяются и формируются-то да! Но использовать можно сразу этот код, не создавая проект в CoreGen. И все-то хорошо, и все нормально. Большинство параметров понятные по смыслу, другие же, не понятные (как получено опытным путем) в основном не меняются от проекта к проекту. Если же была бы где-то документация, как должны меняться (т.е. какие настройки применяет CoreGen) изменяемые параметры, тот же самый delay, кроме него в данном конкретном FIR-е все прозрачно... А почему до нее пользователям дела нет?) Вот мне, например, очень даже есть! Например, у меня в проекте параметры некоторой системы полностью настраиваемые, соответственно, необходимо полностью настраивать в соответствии с входными дженериками в этой системе и блоки, генерируемые КорГенератором, которые имеют нормальный шаблон с нормальными настройками. Просто вот доков нет. А их надо. Не может быть, чтоб не было их. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ScorPio 0 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба Определяются и формируются-то да! Но использовать можно сразу этот код, не создавая проект в CoreGen. И все-то хорошо, и все нормально. Большинство параметров понятные по смыслу, другие же, не понятные (как получено опытным путем) в основном не меняются от проекта к проекту. Если же была бы где-то документация, как должны меняться (т.е. какие настройки применяет CoreGen) изменяемые параметры, тот же самый delay, кроме него в данном конкретном FIR-е все прозрачно... Легко эти параметры меняются в vhdl-файле, который используется только при моделировании. Собственно же IP-ядро живёт в edn-ке, которую так просто поменять нельзя. Если надо несоклько одинаковых блоков с разными характеристиками, то можно создать проект, там нужный блок, а потом выбирая recustomize менять нужные настройки и название генерить снова. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 233 19 марта, 2008 Опубликовано 19 марта, 2008 · Жалоба А почему до нее пользователям дела нет?) Вот мне, например, очень даже есть! Например, у меня в проекте параметры некоторой системы полностью настраиваемые, соответственно, необходимо полностью настраивать в соответствии с входными дженериками в этой системе и блоки, генерируемые КорГенератором, которые имеют нормальный шаблон с нормальными настройками. Просто вот доков нет. А их надо. Не может быть, чтоб не было их. Нет дела, т.к. есть графический интерфейс пользователя, позволяющий выполнять все разрешенные производителем задачи. Документация, наверняка, есть. Но где-то глубоко в недрах Xilinx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 20 марта, 2008 Опубликовано 20 марта, 2008 · Жалоба Требуется (если быть точным, было бы очень желательно) использовать вместо создания каждый раз проекта в Core Generator тех же самых КИХ-ов (FIR-filter) в случае, скажем, изменения их разрядности, просто обращение к соответствующему компоненту из Xilinx CoreLib с изменением соответствующих generic. Это возможно Это возможно, но гораздо проще (тайным знанием поделился кто-то на этом форуме): library IEEE; use IEEE.std_logic_1164.all; -- synopsys translate_off library XilinxCoreLib; -- synopsys translate_on entity dsp_regs_ram is port( Clk : in std_logic; Addr : in std_logic_vector; WE : in std_logic; Din : in std_logic_vector; Dout : out std_logic_vector ); end dsp_regs_ram; architecture structure of dsp_regs_ram is attribute box_type : string; attribute generator_default : string; component dsp_regs_ram_core generic( C_ADDR_WIDTH : integer := 11; C_DEFAULT_DATA : string := "eca97af001f81a864c057d76"; C_DEPTH : integer := 1034; C_ENABLE_RLOCS : integer := 0; C_FAMILY : string := "virtex2"; C_HAS_DEFAULT_DATA : integer := 1; C_HAS_DIN : integer := 1; C_HAS_EN : integer := 1; C_HAS_LIMIT_DATA_PITCH : integer := 0; C_HAS_ND : integer := 1; C_HAS_RDY : integer := 1; C_HAS_RFD : integer := 1; C_HAS_SINIT : integer := 1; C_HAS_WE : integer := 1; C_LIMIT_DATA_PITCH : integer := 18; C_MEM_INIT_FILE : string := "mif_file_16_1"; C_PIPE_STAGES : integer := 1; C_REG_INPUTS : integer := 0; C_SINIT_VALUE : string := "dcd461da8bac14a2d0902993"; C_WIDTH : integer := 96; C_WRITE_MODE : integer := 2; C_YBOTTOM_ADDR : string := "1024"; C_YCLK_IS_RISING : integer := 1; C_YEN_IS_HIGH : integer := 1; C_YHIERARCHY : string := "hierarchy"; C_YMAKE_BMM : integer := 1; C_YPRIMITIVE_TYPE : string := "4kx4"; C_YSINIT_IS_HIGH : integer := 1; C_YTOP_ADDR : string := "0"; C_YUSE_SINGLE_PRIMITIVE : integer := 0; C_YWE_IS_HIGH : integer := 1; C_YYDISABLE_WARNINGS : integer := 0 ); port( sinit : in std_logic := '0'; clk : in std_logic; addr : in std_logic_vector(C_ADDR_WIDTH - 1 downto 0); en : in std_logic := '1'; we : in std_logic := '0'; din : in std_logic_vector(C_WIDTH - 1 downto 0) := (others => '0'); nd : in std_logic := '0'; rfd : out std_logic; rdy : out std_logic; dout : out std_logic_vector(C_WIDTH - 1 downto 0) ); end component; attribute box_type of dsp_regs_ram_core : component is "black_box"; attribute generator_default of dsp_regs_ram_core : component is "generatecore com.xilinx.ip.blkmemsp_v6_2.blkmemsp_v6_2"; -- synopsys translate_off for all: dsp_regs_ram_core use entity XilinxCoreLib.blkmemsp_v6_2(behavioral); -- synopsys translate_on begin map_ram: dsp_regs_ram_core generic map( C_ADDR_WIDTH => Addr'length, C_DEFAULT_DATA => "0", C_DEPTH => 2**Addr'length, C_ENABLE_RLOCS => 0, C_FAMILY => "spartan3", C_HAS_DEFAULT_DATA => 1, C_HAS_DIN => 1, C_HAS_EN => 0, C_HAS_LIMIT_DATA_PITCH => 0, C_HAS_ND => 0, C_HAS_RDY => 0, C_HAS_RFD => 0, C_HAS_SINIT => 0, C_HAS_WE => 1, C_LIMIT_DATA_PITCH => 18, C_MEM_INIT_FILE => "BlankString", C_PIPE_STAGES => 0, C_REG_INPUTS => 0, C_SINIT_VALUE => "0", C_WIDTH => Din'length, C_WRITE_MODE => 2, C_YBOTTOM_ADDR => "0", C_YCLK_IS_RISING => 1, C_YEN_IS_HIGH => 1, C_YHIERARCHY => "hierarchy1", C_YMAKE_BMM => 0, C_YPRIMITIVE_TYPE => "16kx1", C_YSINIT_IS_HIGH => 1, C_YTOP_ADDR => "1024", C_YUSE_SINGLE_PRIMITIVE => 0, C_YWE_IS_HIGH => 1, C_YYDISABLE_WARNINGS => 1 ) port map( addr => Addr, clk => Clk, we => WE, din => Din, dout => Dout ); end structure; XST сам вызовет CoreGen, чтобы сгенерировать корку с указанными значениями в generic map. Проблема заключается в том, что я не представляю, откуда взять описания параметров generic и как они должны изменяться в таких блоках, как пример, того же самого c_reload_delay, который должен меняться для различных разрядностей фильтра, при этом неизвестно мне как. Описания самой CoreLib я вот так сразу нигде не нашел. Может, кто сталкивался с соответствующим мануалом и может направить поиски или непосредственно дать искомый документ или ссылку на него? На каждую корку есть datasheet. Ищите *.pdf в дереве $XILINX/coregen/ip/xilinx. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ender 0 20 марта, 2008 Опубликовано 20 марта, 2008 · Жалоба 1. Огромное спасибо за решение задачи, как заставить ISE сгенерировать автоматически нетлист по vhdl-шаблону из КорГена с измененнными параметрами! Проблема действительно казалась неразрешимой. 2. Насчет документации согласиться, к сожалению, не могу. Даташиты где искать, я знаю) Но в них не описаны параметры vhdl-шаблонов. Если я не прав, пожалуйста, ткните меня носом, например, в формулу для определения c_reload_delay для Distributed Arithmetic FIR ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 21 марта, 2008 Опубликовано 21 марта, 2008 · Жалоба 1. Огромное спасибо за решение задачи, как заставить ISE сгенерировать автоматически нетлист по vhdl-шаблону из КорГена с измененнными параметрами! Проблема действительно казалась неразрешимой. Спасибо не мне, а denisys ( http://electronix.ru/forum/index.php?showtopic=25860 ). 2. Насчет документации согласиться, к сожалению, не могу. Даташиты где искать, я знаю) Но в них не описаны параметры vhdl-шаблонов. Если я не прав, пожалуйста, ткните меня носом, например, в формулу для определения c_reload_delay для Distributed Arithmetic FIR ;) Увы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться