evgforum 0 18 июля, 2005 Опубликовано 18 июля, 2005 · Жалоба Можно ли внутри своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.? Как это сделать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Iouri 0 18 июля, 2005 Опубликовано 18 июля, 2005 · Жалоба можно тогда у вас будет набор отдельных процесов и statements, коорые потом можно сдеать компонентом. out1 <= in1 and in2; process(clk) begin if clk ='1' and clk'event then out2 <= out1; end if; end process; etc......... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgforum 0 18 июля, 2005 Опубликовано 18 июля, 2005 · Жалоба можно тогда у вас будет набор отдельных процесов и statements, коорые потом можно сдеать компонентом. out1 <= in1 and in2; process(clk) begin if clk ='1' and clk'event then out2 <= out1; end if; end process; etc......... <{POST_SNAPBACK}> а библиотечный component? как в таком случае подключать его входы и выходы к своим сигналам - через port map? можно ли так делать, а то у меня компилятор ругается, что выводы не подсоединены (cannot find map for port ...) спасибо Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Iouri 0 19 июля, 2005 Опубликовано 19 июля, 2005 · Жалоба так надо делать через port map, также незабуьте что весящих пинов не должно быть Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DLR 0 21 июля, 2005 Опубликовано 21 июля, 2005 · Жалоба В архитектуре его объявляешь: COMPONENT такойто PORT( входной : in STD_LOGIC; выходной : out STD_LOGIC); Далее объявляешь сигналы Signal входной : STD_LOGIC; Signal выходной : STD_LOGIC; После begin Чтонибудь(любое) : такойто PORT MAP( входной => входной, выходной => выходной); Далее работаешь с сигналами как хочешь!!! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 июля, 2005 Опубликовано 21 июля, 2005 · Жалоба В архитектуре его объявляешь: COMPONENT такойто PORT( входной : in STD_LOGIC; выходной : out STD_LOGIC); Далее объявляешь сигналы Signal входной : STD_LOGIC; Signal выходной : STD_LOGIC; После begin Чтонибудь(любое) : такойто PORT MAP( входной => входной, выходной => выходной); Далее работаешь с сигналами как хочешь!!! <{POST_SNAPBACK}> Хмм вобще то вопрос был не про архитектуру а про ентити, хотя мне не понятно зачем это нужно :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DLR 0 21 июля, 2005 Опубликовано 21 июля, 2005 · Жалоба Извините, стормозил ;) Согласен с Des00 зачем это надо? Мне кажется что такое в принципе не возможно! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgforum 0 21 июля, 2005 Опубликовано 21 июля, 2005 · Жалоба :smile3046: В архитектуре его объявляешь: COMPONENT такойто PORT( входной : in STD_LOGIC; выходной : out STD_LOGIC); Далее объявляешь сигналы Signal входной : STD_LOGIC; Signal выходной : STD_LOGIC; После begin Чтонибудь(любое) : такойто PORT MAP( входной => входной, выходной => выходной); Далее работаешь с сигналами как хочешь!!! <{POST_SNAPBACK}> Вот как я сделал (кусок из программы): Почему то раньше не получалось, сделал как вы написали - вроде все проходит и синтезатор память добавляет, хотя саму работу памяти я еще не тестировал. [ответ на следующее сообщение] Нужно это для того чтобы в моей entity использовать внутреннюю sram память на кристалле (Actel APA075). Не хотелось писать еще один файл верхнего уровня, объединяющий мою entity и компонент SRAM. Хотя я уже попробовал их соединить в схематик, сделав файл схематик - уровнем top. Но как я только входы/выходы меняю, нужно обновлять symbol, рисовать связи - мне показалось это неудобным. Может я чего-то недопонимаю? library IEEE; use IEEE.STD_LOGIC_1164.all; entity temp is port( sramout: out STD_LOGIC_VECTOR(7 downto 0)) end temp; --}} End of automatically maintained section architecture temp of temp is component sram8x256 port(DO : out std_logic_vector (7 downto 0); DI : in std_logic_vector (7 downto 0); WRB : in std_logic; RDB : in std_logic; WADDR : in std_logic_vector (7 downto 0); RADDR : in std_logic_vector (7 downto 0)); end component; begin R_256_8: sram8x256 port map(DO => DOs, DI => DIs, WRB => WRBs, RDB => RDBs, WADDR => WADDRs, RADDR => RADDRs ); -- enter your statements here -- process(GlobalCLK,SVReset) variable rambuf : std_logic_vector(15 downto 0); variable counter0: integer range 0 to 7; variable temp: std_logic_vector (7 downto 0); begin if SVReset = '0' then DIs <= (others => '1'); WRBs <= '1'; RDBs <= '1'; WADDRs <= (others => '1'); RADDRs <= (others => '1'); counter0 := 0; temp := DOs; DIs <= "01010101"; elsif Rising_edge(GlobalCLK) then case counter0 is when 0 => WRBs <= '0'; WADDRs <= int_to_stN(counter0,7); RADDRs <= int_to_stN(counter0,7); when 1 => DIs <= "10101010"; when 2 => WRBs <= '1'; when 3 => RDBs <= '0'; when 4 => sramout <= DOs; when 5 => RDBs <= '1'; when others => end case; counter0 := counter0 + 1; end if; end process; end temp; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 22 июля, 2005 Опубликовано 22 июля, 2005 · Жалоба хмм, мне кажеться что вы не совсем понимате, принципы объединения компоненнтов :) Если вам нужно использовать какие нибудь компоненнты в вашем объекте, то просто делкрируете их в секции описания сигналов архитектры, а потом вставляете. И их может быть сколько угодно, и именно ваш файл и будет являться основным :) Зачем огород то городить ? А вопрос к вам, был потому как вы задали не правильный вопрос :) вы спросили " ожно ли внутри своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?" а нужно было (в вашем случае) "ожно ли внутри АРХИТЕКТУРЫ своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?". :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DLR 0 22 июля, 2005 Опубликовано 22 июля, 2005 · Жалоба Да, я всетаки оказался прав... ;) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgforum 0 22 июля, 2005 Опубликовано 22 июля, 2005 · Жалоба хмм, мне кажеться что вы не совсем понимате, принципы объединения компоненнтов :) до сегодняшнего дня совсем не понимал Если вам нужно использовать какие нибудь компоненнты в вашем объекте, то просто делкрируете их в секции описания сигналов архитектры, а потом вставляете. И их может быть сколько угодно, и именно ваш файл и будет являться основным :) Зачем огород то городить ? А вопрос к вам, был потому как вы задали не правильный вопрос :) вы спросили " ожно ли внутри своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?" а нужно было (в вашем случае) "ожно ли внутри АРХИТЕКТУРЫ своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?". :) <{POST_SNAPBACK}> все ясно, спасибо за разъяснения :rolleyes: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться