Перейти к содержанию
    

component внутри рабочей entity

Можно ли внутри своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?

Как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно тогда у вас будет набор отдельных процесов и statements, коорые потом можно сдеать компонентом.

 

 

out1 <= in1 and in2;

process(clk)

begin

if clk ='1' and clk'event then

out2 <= out1;

end if;

end process;

 

etc.........

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно тогда у вас будет набор отдельных процесов и statements, коорые потом можно сдеать компонентом.

 

 

out1 <= in1 and in2;

process(clk)

begin

if clk ='1' and clk'event then

out2 <= out1;

end if;

end process;

 

etc.........

 

а библиотечный component?

как в таком случае подключать его входы и выходы к своим сигналам

- через port map?

можно ли так делать, а то у меня компилятор ругается, что выводы не подсоединены (cannot find map for port ...)

 

спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так надо делать через port map, также незабуьте что весящих пинов не должно быть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В архитектуре его объявляешь:

COMPONENT такойто

PORT(

входной : in STD_LOGIC;

выходной : out STD_LOGIC);

Далее объявляешь сигналы

Signal входной : STD_LOGIC;

Signal выходной : STD_LOGIC;

После begin

Чтонибудь(любое) : такойто PORT MAP(

входной => входной,

выходной => выходной);

Далее работаешь с сигналами как хочешь!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В архитектуре его объявляешь:

COMPONENT такойто

PORT(

входной : in STD_LOGIC;

выходной : out STD_LOGIC);

Далее объявляешь сигналы

Signal входной : STD_LOGIC;

Signal выходной : STD_LOGIC;

После begin

Чтонибудь(любое) : такойто PORT MAP(

входной => входной,

выходной => выходной);

Далее работаешь с сигналами как хочешь!!!

Хмм вобще то вопрос был не про архитектуру а про ентити, хотя мне не понятно зачем это нужно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините, стормозил ;)

Согласен с Des00 зачем это надо?

Мне кажется что такое в принципе не возможно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:smile3046:

В архитектуре его объявляешь:

COMPONENT такойто

PORT(

входной : in STD_LOGIC;

выходной : out STD_LOGIC);

Далее объявляешь сигналы

Signal входной : STD_LOGIC;

Signal выходной : STD_LOGIC;

После begin

Чтонибудь(любое) : такойто PORT MAP(

входной => входной,

выходной => выходной);

Далее работаешь с сигналами как хочешь!!!

 

Вот как я сделал (кусок из программы):

 

Почему то раньше не получалось, сделал как вы написали - вроде все проходит и синтезатор память добавляет, хотя саму работу памяти я еще не тестировал.

 

[ответ на следующее сообщение]

Нужно это для того чтобы в моей 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хмм, мне кажеться что вы не совсем понимате, принципы объединения компоненнтов :)

Если вам нужно использовать какие нибудь компоненнты в вашем объекте, то просто делкрируете их в секции описания сигналов архитектры, а потом вставляете.

И их может быть сколько угодно, и именно ваш файл и будет являться основным :)

Зачем огород то городить ?

 

А вопрос к вам, был потому как вы задали не правильный вопрос :)

вы спросили " ожно ли внутри своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?"

а нужно было (в вашем случае) "ожно ли внутри АРХИТЕКТУРЫ своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?".

 

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хмм, мне кажеться что вы не совсем понимате, принципы объединения компоненнтов :)

 

до сегодняшнего дня совсем не понимал

 

Если вам нужно использовать какие нибудь компоненнты в вашем объекте, то просто делкрируете их в секции описания сигналов архитектры, а потом вставляете.

И их может быть сколько угодно, и именно ваш файл и будет являться основным :)

Зачем огород то городить ?

 

А вопрос к вам, был потому как вы задали не правильный вопрос :)

вы спросили " ожно ли внутри своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?"

а нужно было (в вашем случае) "ожно ли внутри АРХИТЕКТУРЫ своей рабочей entity описать компонент (component) и управлять им (входы и выходы) из этой же entity посредством сигналов, портов и проч.?".

 

:)

 

все ясно, спасибо за разъяснения :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...