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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Переключение входов I2S на плис
Flip-fl0p
сообщение Mar 16 2017, 09:05
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 276
Регистрация: 11-06-13
Пользователь №: 77 140



Продолжаю в свободное от работы время изучать шину I2C. Особых проблем при написании логики работы SLAVE устройства я не встретил. За одним маленьким исключением.
Линии SDA и SCL подтянуты к питанию, т.е линия постоянно в лог. 1.
Все SLAVE устройства "висящие" на этих линиях находятся Z состоянии и подключены по типу "монтажное И".
Читаю кучу мануалов, но просветления не наступило. Как правильно описать пин в Quartuse для реализации подключения по схеме "монтажное И", да ещё и с Z состоянием.
Вопросов как описать Z состояние у меня нет. Пугает то, что ПЛИС для выдачи в линию лог. нуля, должна "придавить" эту линию к земле. Что по сути будет короткое замыкание...
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Mar 16 2017, 09:45
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 910
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(Flip-fl0p @ Mar 16 2017, 12:05) *
...
Вопросов как описать Z состояние у меня нет. Пугает то, что ПЛИС для выдачи в линию лог. нуля, должна "придавить" эту линию к земле. Что по сути будет короткое замыкание...

С какой это стати КЗ?
Код
assign SDA = (sda_oe_n==1'b0) ?  1'b0 : 1'bz;

Тоесть пин либо в Z (висит в воздухе) либо в 0. К VCC никогда не подключается, вот поэтому и нужны внешние резисторы на VCC.

Успехов! Rob.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 16 2017, 10:06
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 4 186
Регистрация: 17-02-06
Пользователь №: 14 454



Я бы даже сказал что внешние резисторы как раз и делают чтобы не было КЗ. Линию не подключают к питанию напрямую, а подключают через резистор на нем и будет все падать, когда слейв затянет линию в 0, и никакого КЗ.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 16 2017, 10:17
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 276
Регистрация: 11-06-13
Пользователь №: 77 140



Цитата(RobFPGA @ Mar 16 2017, 12:45) *
Приветствую!

С какой это стати КЗ?
Код
assign SDA = (sda_oe_n==1'b0) ?  1'b0 : 1'bz;

Тоесть пин либо в Z (висит в воздухе) либо в 0. К VCC никогда не подключается, вот поэтому и нужны внешние резисторы на VCC.

Успехов! Rob.

Ну кончено ! Как я мог забыть ! biggrin.gif У нас же ток пойдет от источника, через подтягивающие резисторы, через токоограничивающий резистор на макетной плате, в пин, а затем в землю. И таким образом линия линия станет нулём. Хм... Вроде логично.
Возник вопрос тогда, как правильнее моделировать на VHDL линию подтянутую к питанию ?
Написал модуль тестбенча, которые генерирует сигналы SDI и SCL (по сути написал Master'a выдающий нужные мне значения). Соответственно если мастер присваивает линиям SDI и SCL лог. 1, а Slave присваивает им лог.0 я получаю закономерные X при моделировании, поскольку так устроена разрешающая функция в VHDL для типа STD_LOGIC.
Присваивать этим линиям значение слабой единицы, т.е "Н" - то-же не самая лучшая идея. Поскольку Slave устройство в итоге вместо нормальных данных (единицы и нули) принимает значения H.
И в итоге регистр вместо байта B"1111_1111" содержит B"HHHH_HHHH".
Думаю, что правильнее либо писать собственную функцию разрешения. Либо функцию, которая из "H" значения делает лог единицу. Как бы вы смоделировали это ?

Сообщение отредактировал Flip-fl0p - Mar 16 2017, 10:37
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 16 2017, 12:48
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 4 186
Регистрация: 17-02-06
Пользователь №: 14 454



а чего бы не поставить туда логическое И, которым данная схема и является изначально?

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 16 2017, 13:01
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 276
Регистрация: 11-06-13
Пользователь №: 77 140



Цитата(Golikov A. @ Mar 16 2017, 15:48) *
а чего бы не поставить туда логическое И, которым данная схема и является изначально?

К сожалению не совсем понял Вас...
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Mar 16 2017, 13:21
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 910
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(Flip-fl0p @ Mar 16 2017, 13:17) *
Думаю, что правильнее либо писать собственную функцию разрешения. Либо функцию, которая из "H" значения делает лог единицу. Как бы вы смоделировали это ?


Код
Library UNISIM;
use UNISIM.vcomponents.all;
-- PULLUP: I/O Pullup
-- Xilinx HDL Libraries Guide, version 2014.1
PULLUP_inst : PULLUP
port map (
  O => O -- 1-bit output: Pullup output (connect directly to top-level port)
);


Удачи! Rob.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 17 2017, 12:51
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 4 186
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(Flip-fl0p @ Mar 16 2017, 16:01) *
К сожалению не совсем понял Вас...


я бы писал драйвер I2C который выдает на выход 1 и 0, а не 0 и Z. Потом уже в топовом модуле я бы 1 и 0 развел бы на внешнюю ногу правильно.
А симулил работу именно драйвера, объединяя их выходы по И, если надо несколько
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Mar 17 2017, 13:35
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 512
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Хочу задать наводящий вопрос: коллеги, вы в курсе что I2C и I2S - разные интерфейсы?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Mar 17 2017, 13:44
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 276
Регистрация: 11-06-13
Пользователь №: 77 140



Цитата(alexadmin @ Mar 17 2017, 16:35) *
Хочу задать наводящий вопрос: коллеги, вы в курсе что I2C и I2S - разные интерфейсы?

Теперь в курсе smile3046.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th June 2017 - 12:31
Рейтинг@Mail.ru


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