ISA-8 SD-контроллер (SPI) на CPLD
Moderator: Shaos
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: ISA-8 SD-контроллер (SPI) на CPLD
ПО "извне" контролирует признак занятости, то есть записали в регист данных, крутимся в while пока регистр статуса & 0x40 не равен нулю (ждем снятия BUSY).
Так же пробовал играться с задержками, правда не очень огромными, но вставлял 6 штук nop'ов перед следующей записью в регистр данных. Влияет на результат мало -
Поведение остается такое-же, только может быть вместо 3-его удачного байта передается удачно второй байт, а третий становится 0xFF. В целом иногда байты меняются, но всегда не больше 3-4 байт из 10ти передается нормально. Остальные 0xFF.
С другой стороны, если ПО "извне" игнорит BUSY и лупит подряд в порт данных, то передаются только "хорошие байты", но остальные есстественно теряются. Из тех же 10-ти байт передаются три нормальных байта - 0x03,0x05,0xE (к примеру).
Так же пробовал играться с задержками, правда не очень огромными, но вставлял 6 штук nop'ов перед следующей записью в регистр данных. Влияет на результат мало -
Поведение остается такое-же, только может быть вместо 3-его удачного байта передается удачно второй байт, а третий становится 0xFF. В целом иногда байты меняются, но всегда не больше 3-4 байт из 10ти передается нормально. Остальные 0xFF.
С другой стороны, если ПО "извне" игнорит BUSY и лупит подряд в порт данных, то передаются только "хорошие байты", но остальные есстественно теряются. Из тех же 10-ти байт передаются три нормальных байта - 0x03,0x05,0xE (к примеру).
-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: ISA-8 SD-контроллер (SPI) на CPLD
Для начала, я бы не читал ничего (чтобы лишний раз не обращаться к устройству), а просто потихоньку передавал бы байты с гарантированной паузой
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: ISA-8 SD-контроллер (SPI) на CPLD
Попробую при случае.
Вот еще меня смущает вопрос о назначении пинов (pin assigment). Там у epm3032 вроде нет разных банков IO, и я думал сначала что вообще пофигу, какой пин куда назначать. Но как оказалось - не пофигу. Я хотел сигналы SD вывести на "правую" сторону EPM, назначил их, но квартус при компиляции стал ругаться на тему что-то не может проложить (найти) путь от пина (или сигнала) такого-то до пина такого-то. Ладно, распихал пины более-менее последовательно, начиная с первого и до какого-то, скажем 27. Ругаться перестал и стал компилироваться. Странно, я такого не ожидал.
И еще опять по пинам. У EPM3032 есть "глобальные" пины - Global Clock. Туда приходит OSC 14,3 MHz, это Clk у меня. Дальше есть еще Global Clear - это у меня Res и Global OE - это у меня nCS. И есть еще Ded. input (pin 2). Я туда nRD посадил. В то время как nWR у меня на обычном IO пине. Думаю не может здесь что-то такого быть. Может лучше nRD то же на обычный IO повесить?
Вот еще меня смущает вопрос о назначении пинов (pin assigment). Там у epm3032 вроде нет разных банков IO, и я думал сначала что вообще пофигу, какой пин куда назначать. Но как оказалось - не пофигу. Я хотел сигналы SD вывести на "правую" сторону EPM, назначил их, но квартус при компиляции стал ругаться на тему что-то не может проложить (найти) путь от пина (или сигнала) такого-то до пина такого-то. Ладно, распихал пины более-менее последовательно, начиная с первого и до какого-то, скажем 27. Ругаться перестал и стал компилироваться. Странно, я такого не ожидал.
И еще опять по пинам. У EPM3032 есть "глобальные" пины - Global Clock. Туда приходит OSC 14,3 MHz, это Clk у меня. Дальше есть еще Global Clear - это у меня Res и Global OE - это у меня nCS. И есть еще Ded. input (pin 2). Я туда nRD посадил. В то время как nWR у меня на обычном IO пине. Думаю не может здесь что-то такого быть. Может лучше nRD то же на обычный IO повесить?
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: ISA-8 SD-контроллер (SPI) на CPLD
А, вот картинка то:
Половина шины данных оказалась в B.....
Половина шины данных оказалась в B.....
You do not have the required permissions to view the files attached to this post.
-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: ISA-8 SD-контроллер (SPI) на CPLD
GCLR как-то задействован ? Если нет, то он вроде может работать, как сброс - т.е. наводки на него будут сбрасывать регистры. Он вроде сбрасывает по низкому уровню, поэтому нужно подать 1.
-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: ISA-8 SD-контроллер (SPI) на CPLD
Выше увидел, что используется, как Reset...newold86 wrote:GCLR как-то задействован ? Если нет, то он вроде может работать, как сброс - т.е. наводки на него будут сбрасывать регистры. Он вроде сбрасывает по низкому уровню, поэтому нужно подать 1.
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: ISA-8 SD-контроллер (SPI) на CPLD
Задействован. Туда запаян сигнал Res. В XT он активный высокий...
-
- Maniac
- Posts: 261
- Joined: 22 Jun 2005 04:35
- Location: МО Россия
Re: ISA-8 SD-контроллер (SPI) на CPLD
Извиняюсь, не в курсе. Сколько тактов ОУТ в порт на ващем проце? И какой клок на проце?!
На отсылку байта, нужно 16 тактов
Каким клоком щас тактируется SPI?
Вот и считайте
На отсылку байта, нужно 16 тактов
Каким клоком щас тактируется SPI?
Вот и считайте
-
- Maniac
- Posts: 261
- Joined: 22 Jun 2005 04:35
- Location: МО Россия
Re: ISA-8 SD-контроллер (SPI) на CPLD
8 тактов на отсылку байта
-
- Doomed
- Posts: 662
- Joined: 18 Nov 2013 02:38
- Location: Москва
Re: ISA-8 SD-контроллер (SPI) на CPLD
Так чего делать-то?
Варианты вижу пока такие: 1) попробовать на кардинально другой машине, например на первом пне. 2) перемахнуть местами nRD и nWR 3) перенести всю шину данных в мегаячейку B (разряды Dat[2..0]) 4) бубен...

-
- Doomed
- Posts: 370
- Joined: 16 Dec 2014 11:58
- Location: Киев
Re: ISA-8 SD-контроллер (SPI) на CPLD
Вообще-то пофигу. Циклону - так точно.Tronix wrote: у epm3032 вроде нет разных банков IO, и я думал сначала что вообще пофигу
Это может происходить при плотной упаковке. Т.е., при фиттигне тупо невозможно распихать лог. элементы так, чтобы сигнал прошел как надо.Tronix wrote:но квартус при компиляции стал ругаться на тему что-то не может проложить (найти) путь от пина (или сигнала) такого-то до пина такого-то
Для emp3032 с ее 32-мя (?) LE это настанет гораздо быстрее, чем для циклона с его 6000.
Это я к тому, что натыкался на это при заполнении циклона на 80-90%.
Клоки лучше (правильнее) заводить на Global clock, они внутрях идут по выделеным линиям, и квартусу проще с ними работать. Но это не значит, что клок нельзя завести на другой пин. Исключение - ньюансы с PLL, там, где эти PLL есть, но это не ваш случайTronix wrote:Global Clock. Туда приходит OSC 14,3 MHz, это Clk у меня. Дальше есть еще Global Clear - это у меня Res и Global OE - это у меня nCS

Остальное - непринципиально, все эти Global* работают, если явно заказать их использование, иначе - обычные пины.
Опять же, могут быть варианты, когда пин работает только в какой-то определенной роли, например на выход или как программирования. Но по этому поводу квартус должен выругаться.
-
- Maniac
- Posts: 261
- Joined: 22 Jun 2005 04:35
- Location: МО Россия
Re: ISA-8 SD-контроллер (SPI) на CPLD
НОПов побольше. Если клок СПИ 400кгц, то ОООчень много нопов.Tronix wrote:Так чего делать-то?Варианты вижу пока такие: 1) попробовать на кардинально другой машине, например на первом пне. 2) перемахнуть местами nRD и nWR 3) перенести всю шину данных в мегаячейку B (разряды Dat[2..0]) 4) бубен...
К примеру, в пентагоне 2.666, клок з80 21мгц, клок СПИ 7мгц. В этом случае две подряд операции ИН или ОУТ не работают. КоЮ пришлось вайты вставлять.
В Еве 14мгц з80, и СПИ 7мгц работают ок. Но в з80 ИН 16 тактов вроде, или 21 даже напомню.
-
- Maniac
- Posts: 261
- Joined: 22 Jun 2005 04:35
- Location: МО Россия
Re: ISA-8 SD-контроллер (SPI) на CPLD
Хотя, пропустил, есть же сигнал занятости тут.
-
- Maniac
- Posts: 261
- Joined: 22 Jun 2005 04:35
- Location: МО Россия
Re: ISA-8 SD-контроллер (SPI) на CPLD
Еще мысль.
Когда захватываешь логоанализатором, убери синхронизацию лога по клоку, пускай захватывает всё подряд, и сигнал бази тоже захватывай
У тебя СалеаеЛоджик16 ?!
У него вроде три пина тока с максимальной частотой можно.
Захватывай только клок,мисо и бази
Когда захватываешь логоанализатором, убери синхронизацию лога по клоку, пускай захватывает всё подряд, и сигнал бази тоже захватывай
У тебя СалеаеЛоджик16 ?!
У него вроде три пина тока с максимальной частотой можно.
Захватывай только клок,мисо и бази
-
- Devil
- Posts: 716
- Joined: 30 Nov 2013 11:08
- Location: WWW
Re: ISA-8 SD-контроллер (SPI) на CPLD
Повторюсь:Tronix wrote:Так чего делать-то?
newold86 wrote:Для начала, я бы не читал ничего (чтобы лишний раз не обращаться к устройству), а просто потихоньку передавал бы байты с гарантированной паузой