реклама на сайте
подробности

 
 
> inout в VHDL, использование портов inout
Vanёk
сообщение Apr 3 2008, 06:32
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 14-03-06
Из: Russia, Vidnoe
Пользователь №: 15 249



Sorry, если такой вопрос на форуме уже был, что-то я не нашёл.

Порт SDA обозначен в компоненте как inout.

Если я использую этот компонент, и пытаюсь подать значение на порт SDA

Код
entity TEST is
end TEST;
architecture TEST_arch of TEST is
    component COMPONENT_1
       port (SCL: in BIT;  
                  SDA: inout BIT);
    end component;
    signal SCLin: BIT;
    signal SDAin: BIT;
    begin
       p1: COMPONENT_1 port map(SCL=>SCLin,SDA=>SDAin);  
  
           SCLin<='1';
           SDAin<='1';

end TEST_arch;


, выдаётся онибка:** Error: Nonresolved signal 'sdain' has multiple sources..

Подскажите пожалуйста, как правильно задавать значение на inout порт?

Сообщение отредактировал Vanёk - Apr 3 2008, 06:34


--------------------
Puro delirio, una chochez verdadera.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
andrew_b
сообщение Apr 3 2008, 06:43
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



C типом bit так не получится. Используйте std_logic.
Go to the top of the page
 
+Quote Post
Vanёk
сообщение Apr 3 2008, 07:17
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 14-03-06
Из: Russia, Vidnoe
Пользователь №: 15 249



Цитата(andrew_b @ Apr 3 2008, 10:43) *
C типом bit так не получится. Используйте std_logic.
А это единственный вариант? Непонятно, как работает std_logic, можно ли в этом случае использовать такое присваивание: SDAin<='1' ? Можно ли преобразовывать std_logic в bit?

Подключил библиотеку
Код
library ieee;
use ieee.std_logic_1164.all;
, но что-то на выходной диаграмме все выходы std_logic = U, как правильно задавать уровни std_logic?

Сообщение отредактировал Vanёk - Apr 3 2008, 07:18


--------------------
Puro delirio, una chochez verdadera.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Apr 3 2008, 07:37
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Vanёk @ Apr 3 2008, 10:17) *
А это единственный вариант? Непонятно, как работает std_logic, можно ли в этом случае использовать такое присваивание: SDAin<='1' ? Можно ли преобразовывать std_logic в bit?
Что вас смущает? std_logic -- это стандартный тип. Потребности в типе bit нет совсем.
Цитата
Подключил библиотеку
Код
library ieee;
use ieee.std_logic_1164.all;
, но что-то на выходной диаграмме все выходы std_logic = U, как правильно задавать уровни std_logic?
Какую книжку по языку вы читаете?
Go to the top of the page
 
+Quote Post
Amper25
сообщение Apr 3 2008, 07:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 215
Регистрация: 10-04-07
Пользователь №: 26 929



Vanёk,
Проблема в том, что одному сигналу вы одновременно присваиваете как минимум 2 значения. Поэтому колмпиллер и ругается.
Непонятно что вы хотите при этом получить.

Вообщем, при желании, можно обойтись и типом bit, главное грамотно составить программу.
Go to the top of the page
 
+Quote Post
Vanёk
сообщение Apr 3 2008, 08:06
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 14-03-06
Из: Russia, Vidnoe
Пользователь №: 15 249



Цитата(andrew_b @ Apr 3 2008, 11:37) *
Что вас смущает? std_logic -- это стандартный тип. Потребности в типе bit нет совсем.
Какую книжку по языку вы читаете?
Я пользуюсь 3мя книгами - Бибило, Поляков и Суворова.

Задаю изменение сигналов:
Код


library ieee;
use ieee.std_logic_1164.all;
entity TEST is
end TEST;
architecture TEST_arch of TEST is
    component COMPONENT_1

       port (SCL: in std_logic;
             SDA: inout std_logic);
    end component;
    signal SCLin: std_logic;
    signal SDAin: std_logic;
    begin
      
       p1: COMPONENT_1 port map(SCL=>SCLin,SDA=>SDAin);  

       SDAin<='1',
            '0' after 50 ns,
            '1' after 150 ns;
    
      SCLin<='1',            

            '0' after 100 ns,
            '1' after 200 ns,
            '0' after 300 ns;

  
end TEST_arch;
При этом на выходной диаграмме сигналы SCLin и SCL изменяются как надо, а вот inout-сигналы SDAin и SDA постоянные и равны U...

Сообщение отредактировал Vanёk - Apr 3 2008, 08:42


--------------------
Puro delirio, una chochez verdadera.
Go to the top of the page
 
+Quote Post
Vanёk
сообщение Apr 3 2008, 09:46
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 14-03-06
Из: Russia, Vidnoe
Пользователь №: 15 249



Кажется, почти разобрался. Если в port задавать начальное значение (SDA: inout std_logic:='0'), то что-то на выходе правильное уже появляется. Попробую дальше покопать.
p/s/ Спасибо за помощь andrew_b!

Сообщение отредактировал Vanёk - Apr 3 2008, 09:50


--------------------
Puro delirio, una chochez verdadera.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th August 2025 - 21:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016