Еще один "Специалист" в Proteus
Moderator: Lavr
-
- Doomed
- Posts: 463
- Joined: 12 Feb 2016 13:39
Re: Еще один "Специалист" в Proteus
касательно работы SD карт и SPI есть такой момент - ввод бита и вывод бита идет на разных фронтах CLK, при реализации ввода и вывода на двух мс это решается инвертированием CLK у одной из них, а вот как быть с одной мс(ИР24, в частности) это вопрос.
-
- Maniac
- Posts: 269
- Joined: 05 Oct 2006 04:45
- Location: Moscow
Re: Еще один "Специалист" в Proteus
Я так себе представляю. Чтение хостом из нашего регистра ИР24 в отдельной команде, поэтому корректность тактирования от SCK интересна только в контексте корректного сдвига ИР24 <=> SPI-устройство в момент прохождения пакета импульсов сдвига, ограниченного счетчиком ИЕ7 и запускаемого отдельно. Защелкивание (т.е. актуальное состояние "0"/"1") MISO и MOSI имеют в один и тот же момент, и перенос со вход на выход (как экивалентный регистр сдвига) тоже в один момент (если верить диаграмме ниже - для дефолтного режима CPHA=0 чтение/хранение состояния битов SPI-устройств актуально по фронту такта, а сдвиг в следующий разряд идет по спаду такта). Т.е. SPI-устройство можно рассматривать как обычный сдвиговый регистр со входом (= значению младшего разряда) и выходом (=значению старшего разряда). Верно же? Регистр ИР24 нашего адаптера всего лишь такой же сдвиговый регистр, и в эквивалентной схеме получаем два встречно включенных регистра (чтобы образовать "кольцо" из двух регистров) где оба регистра (адаптера и устройства) должны сдвигаться синхронно (в том смысле, что SPI на один бит, и ИР24 на один бит - перезаписываясь один в другого).PVV wrote:касательно работы SD карт и SPI есть такой момент - ввод бита и вывод бита идет на разных фронтах CLK, при реализации ввода и вывода на двух мс это решается инвертированием CLK у одной из них, а вот как быть с одной мс(ИР24, в частности) это вопрос.

ИР24 осуществляет все действия по фронту тактового импульса, то для режима CPHA=0, где сдвиг идет спадом, ее как мне кажется можно оставить как есть - в противофазе SPI устройству, чтобы в момент сдвига (вывода) в SPI-устройство, ИР24 держала выход неизменным, и сама писала вход со SPI-устройства в момент, когда SPI-устройство находится в режиме вывода - её стабильного состояния (а не в процессе сдвига). Как то так я рассуждал.
Но вообще, диаграмма как-то не очень сочетается с текстом той же статьи о "For CPHA=0, data are captured on the clock's rising edge (low→high transition) and data is output on a falling edge (high→low clock transition)." Тут какие-то разночтения. Относится ли это к тому, что эффективное время (активность сигнала) MISO и MOSI должны быть сдвинуты относительно друг друга? По диаграмме это не так (и по логике не так - иначе нельзя бы было устройства последовательно включать - при трех и более элементов в цепочке у них "уедет" общее тактирование от мастера), но текст можно интерпретировать что это так. Вот тогда, все может усложниться, т.к. писать в ИР24 младший разряд и выводить из нее старший придется в разное время, что учитывая что это просто сдвиговый регистр (как и SPI-устройства), где все разряды модифицируются при сдвиге от общего импульса, выглядит бредом.
Скорее всего сдвиг в SPI-устройсте происходит единомоментно, и разница MISO и MOSI упоминается только в контексте чтобы пропускать недетерминированный период когда триггеры внутри SPI-устройства последовательно перезапишутся и выставится последний разряд (выход). И достаточно будет только понять картинке верить или тексту по моменту защелкивания входного бита в SPI-устройстве, и моменту сдвига, и поймать "противофазу" для ИР24. Тут я сомневаюсь - прямым или инверсным импульсом относительно SCK надо тактировать ИР24. Но вариантов всего два: тактировать ИР24 инверсным SCK или сойдет и так как уже нарисовано (с тактированием ИР24 прямым SCK).
Статью смотрел в Wiki: https://en.wikipedia.org/wiki/Serial_Pe ... erface_Bus
Всем добра!
-
- Doomed
- Posts: 463
- Joined: 12 Feb 2016 13:39
Re: Еще один "Специалист" в Proteus
вот здесь есть неплохое описание как работать с SD картой, и есть диаграммка:
и по ней видно как именно карта 'хочет' видеть биты и как их выдает.
получается для карты SCK CPOL=0, CPHA=0, но для ИР24 SCK надо проинвертировать(те CPOL=1), что бы получились правильные биты на выдачу, однако принимаемый бит будет в этот момент уже упущен, значит надо поставить однобитную защелку(ТМ2) на входе ИР24, тактируемую от SCK карты(те не инвертированный!), что бы задержать на пол такта принимаемые от карты данные, вот в этом случае все будет работать верно.
У меня тут мысль возникла - а почему бы не применить такую мс как 561ГГ1(CD4046, 74HC4046-TTL вариант) в качестве управляемого генератора тактовой карты, можно выбрать и высокую скорость тактирования и низкую, а управлять одной ножкой... глядишь и две мс ЛЛ1(7402) получится выкинуть из схемы... для КМОП версии при питании 5В в разных источниках разные данные приводятся для максимально генерируемой частоты, но если 2Мгц получится с нее получить, то это самое то! TTL версия вообще до 18Мгц, тут и вопросов нет, но только импорт
.
получается для карты SCK CPOL=0, CPHA=0, но для ИР24 SCK надо проинвертировать(те CPOL=1), что бы получились правильные биты на выдачу, однако принимаемый бит будет в этот момент уже упущен, значит надо поставить однобитную защелку(ТМ2) на входе ИР24, тактируемую от SCK карты(те не инвертированный!), что бы задержать на пол такта принимаемые от карты данные, вот в этом случае все будет работать верно.
У меня тут мысль возникла - а почему бы не применить такую мс как 561ГГ1(CD4046, 74HC4046-TTL вариант) в качестве управляемого генератора тактовой карты, можно выбрать и высокую скорость тактирования и низкую, а управлять одной ножкой... глядишь и две мс ЛЛ1(7402) получится выкинуть из схемы... для КМОП версии при питании 5В в разных источниках разные данные приводятся для максимально генерируемой частоты, но если 2Мгц получится с нее получить, то это самое то! TTL версия вообще до 18Мгц, тут и вопросов нет, но только импорт

You do not have the required permissions to view the files attached to this post.
-
- Maniac
- Posts: 269
- Joined: 05 Oct 2006 04:45
- Location: Moscow
Re: Еще один "Специалист" в Proteus
Хм, пожалуй что красивее всего так получится - и половинка ТМ2 есть свободная. Только не надо ли будет в пакете выдавать при чтении на один импульс больше? Чтобы все разряды сдвинулись в ИР24 чтобы прочитать ее по тем же D0..D7 откуда и пишем? Может что и не надо - разведутся по фронту и спаду. Плохо не знать Протеус.PVV wrote:вот здесь есть неплохое описание как работать с SD картой, и есть диаграммка: и по ней видно как именно карта 'хочет' видеть биты и как их выдает.
получается для карты SCK CPOL=0, CPHA=0, но для ИР24 SCK надо проинвертировать(те CPOL=1), что бы получились правильные биты на выдачу, однако принимаемый бит будет в этот момент уже упущен, значит надо поставить однобитную защелку(ТМ2) на входе ИР24, тактируемую от SCK карты(те не инвертированный!), что бы задержать на пол такта принимаемые от карты данные, вот в этом случае все будет работать верно.

Тоже интересная мысль! Можно тогда обойтись без кварцевых источников, которые еще поделить надо чтобы получить 2 частоты. А использовать можно, к примеру, и кондовые кр1533АГ3 в качестве генератора (там как раз 2 раздельных управляемых одновибратора, работают до 50 МГц) - нам же не надо точные частоты, лишь бы примерно по времени укладывалось в ожидаемые рамки.PVV wrote: У меня тут мысль возникла - а почему бы не применить такую мс как 561ГГ1(CD4046, 74HC4046-TTL вариант) в качестве управляемого генератора тактовой карты, можно выбрать и высокую скорость тактирования и низкую, а управлять одной ножкой... глядишь и две мс ЛЛ1(7402) получится выкинуть из схемы... для КМОП версии при питании 5В в разных источниках разные данные приводятся для максимально генерируемой частоты, но если 2Мгц получится с нее получить, то это самое то! TTL версия вообще до 18Мгц, тут и вопросов нет, но только импорт.
Всем добра!
-
- Doomed
- Posts: 463
- Joined: 12 Feb 2016 13:39
Re: Еще один "Специалист" в Proteus
Вот до чего можно 'ужаться' при использовании ИР24, отказом от считывания состояния передачи по SPI ( сигнал busy), переключением скорости и собственного тактового генератора CLK. Нужен внешний меандр CLK с частотой от 2Мгц: 8 корпусов мс
You do not have the required permissions to view the files attached to this post.
-
- Doomed
- Posts: 463
- Joined: 12 Feb 2016 13:39
Re: Еще один "Специалист" в Proteus
Проверил работу SD интерфейса, согласно схеме выложенной ранее, с учетом 'ненужности' U38 с дополнительной ТМ2. Все заработало, как и предполагалось, затем переделал схему на базе решения, найденного для РК-86, все работает четко и однозначно.
В процессе вспомнил, зачем ставил ТМ7 на цепь MSC - устранение программной ошибки(о которой я на тот момент не знал) Loader_а МХ2 аппаратным способом...
, суть в том, что в момент инициализации SD карты на малой скорости тактирования идет проверка сигнала busy после каждого выданного байта, как и положенно, но на выдаче последнего байта этой проверки нет, и тут приходит активация чип селекта карты, когда еще идут импульсы тактирования... у карты 'сносит крышу' - в результате SD интерфейс не работает(это все актуально и для реализации SD интерфейса на ПЛИС)... если эту ошибку исправить, то ТМ7 оказывается не нужной, соотв из схемы я ее исключил.
Вот результат полученный в итоге, 11 корпусов, полностью самостоятельная схема, не требующая дополнительных сигналов, все необходимые сигналы приведены к активным уровням ППА К580ВВ55, и эту схему можно собрать как 'вставку' в замен ВВ55 на плате ПК или как подключаемую в разъем расширения внешней ВВ55(порта программатора):
и версия sd_dos_v5c с небольшими исправлениями и доработками, которая сейчас у меня работает с этим SD интерфейсом
В процессе вспомнил, зачем ставил ТМ7 на цепь MSC - устранение программной ошибки(о которой я на тот момент не знал) Loader_а МХ2 аппаратным способом...

Вот результат полученный в итоге, 11 корпусов, полностью самостоятельная схема, не требующая дополнительных сигналов, все необходимые сигналы приведены к активным уровням ППА К580ВВ55, и эту схему можно собрать как 'вставку' в замен ВВ55 на плате ПК или как подключаемую в разъем расширения внешней ВВ55(порта программатора):
и версия sd_dos_v5c с небольшими исправлениями и доработками, которая сейчас у меня работает с этим SD интерфейсом
You do not have the required permissions to view the files attached to this post.
-
- Maniac
- Posts: 269
- Joined: 05 Oct 2006 04:45
- Location: Moscow
Re: Еще один "Специалист" в Proteus
А я начал было собирать для своего Ориона на макетке+МГТФ схему на ИР24, и вдруг осознал, что уже 8 корпусов для меня паять проводочками - мУка мучительная. Бросил пока что недопаянную, задолбался. Думаю - не проще ли было протравить печатку. А ты как делаешь согласование с SD-картой, на резисторах или с использованием 74LVC125 (как то так: http://obrazki.elektroda.pl/8066786300_1334332113.jpg) ?
Всем добра!
-
- Doomed
- Posts: 463
- Joined: 12 Feb 2016 13:39
Re: Еще один "Специалист" в Proteus
Я собирал на своей макетной плате по схеме один в один из предыдущего поста, те согласование на выход к карте через ОК инверторов ЛН2 (хотя fifan делает через резисторные делители, и соотв не инверсные сигналы надо давать), а выход карты сразу на вход ИР8 без преобразования уровней.
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Еще один "Специалист" в Proteus
А насколько сложно выйдет удержать в одной модели 'Специалист МХ' сразу оба режима развертки -PVV wrote:... добавил еще одну ТМ2, сначала в модели,PVV wrote:... что б еще сделать? VGA выход? надо попробовать...
затем в макете, и мой 'Специалист МХ2 SVGA' показал приглашение на мониторе, загрузившись с SD карты!
TV и VGA, сделав их переключаемыми?
iLavr