Author |
Message |
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
ПО "извне" контролирует признак занятости, то есть записали в регист данных, крутимся в while пока регистр статуса & 0x40 не равен нулю (ждем снятия BUSY).
Так же пробовал играться с задержками, правда не очень огромными, но вставлял 6 штук nop'ов перед следующей записью в регистр данных. Влияет на результат мало -
Поведение остается такое-же, только может быть вместо 3-его удачного байта передается удачно второй байт, а третий становится 0xFF. В целом иногда байты меняются, но всегда не больше 3-4 байт из 10ти передается нормально. Остальные 0xFF.
С другой стороны, если ПО "извне" игнорит BUSY и лупит подряд в порт данных, то передаются только "хорошие байты", но остальные есстественно теряются. Из тех же 10-ти байт передаются три нормальных байта - 0x03,0x05,0xE (к примеру).
|
05 Dec 2017 04:39 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 709 Location: WWW
|
Для начала, я бы не читал ничего (чтобы лишний раз не обращаться к устройству), а просто потихоньку передавал бы байты с гарантированной паузой
|
05 Dec 2017 04:58 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Попробую при случае.
Вот еще меня смущает вопрос о назначении пинов (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 повесить?
|
05 Dec 2017 05:08 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
А, вот картинка то: Половина шины данных оказалась в B.....
You do not have the required permissions to view the files attached to this post.
|
05 Dec 2017 05:40 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 709 Location: WWW
|
GCLR как-то задействован ? Если нет, то он вроде может работать, как сброс - т.е. наводки на него будут сбрасывать регистры. Он вроде сбрасывает по низкому уровню, поэтому нужно подать 1.
|
05 Dec 2017 05:49 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 709 Location: WWW
|
Выше увидел, что используется, как Reset...
|
05 Dec 2017 05:50 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Задействован. Туда запаян сигнал Res. В XT он активный высокий...
|
05 Dec 2017 05:51 |
|
|
DimkaM
Maniac
Joined: 22 Jun 2005 04:35 Posts: 260 Location: МО Россия
|
Извиняюсь, не в курсе. Сколько тактов ОУТ в порт на ващем проце? И какой клок на проце?! На отсылку байта, нужно 16 тактов Каким клоком щас тактируется SPI?
Вот и считайте
|
05 Dec 2017 10:03 |
|
|
DimkaM
Maniac
Joined: 22 Jun 2005 04:35 Posts: 260 Location: МО Россия
|
8 тактов на отсылку байта
|
05 Dec 2017 10:20 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Так чего делать-то? Варианты вижу пока такие: 1) попробовать на кардинально другой машине, например на первом пне. 2) перемахнуть местами nRD и nWR 3) перенести всю шину данных в мегаячейку B (разряды Dat[2..0]) 4) бубен...
|
06 Dec 2017 00:53 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Вообще-то пофигу. Циклону - так точно. Это может происходить при плотной упаковке. Т.е., при фиттигне тупо невозможно распихать лог. элементы так, чтобы сигнал прошел как надо. Для emp3032 с ее 32-мя (?) LE это настанет гораздо быстрее, чем для циклона с его 6000. Это я к тому, что натыкался на это при заполнении циклона на 80-90%. Клоки лучше (правильнее) заводить на Global clock, они внутрях идут по выделеным линиям, и квартусу проще с ними работать. Но это не значит, что клок нельзя завести на другой пин. Исключение - ньюансы с PLL, там, где эти PLL есть, но это не ваш случай Остальное - непринципиально, все эти Global* работают, если явно заказать их использование, иначе - обычные пины. Опять же, могут быть варианты, когда пин работает только в какой-то определенной роли, например на выход или как программирования. Но по этому поводу квартус должен выругаться.
|
06 Dec 2017 01:00 |
|
|
DimkaM
Maniac
Joined: 22 Jun 2005 04:35 Posts: 260 Location: МО Россия
|
НОПов побольше. Если клок СПИ 400кгц, то ОООчень много нопов. К примеру, в пентагоне 2.666, клок з80 21мгц, клок СПИ 7мгц. В этом случае две подряд операции ИН или ОУТ не работают. КоЮ пришлось вайты вставлять. В Еве 14мгц з80, и СПИ 7мгц работают ок. Но в з80 ИН 16 тактов вроде, или 21 даже напомню.
|
06 Dec 2017 05:09 |
|
|
DimkaM
Maniac
Joined: 22 Jun 2005 04:35 Posts: 260 Location: МО Россия
|
Хотя, пропустил, есть же сигнал занятости тут.
|
06 Dec 2017 05:12 |
|
|
DimkaM
Maniac
Joined: 22 Jun 2005 04:35 Posts: 260 Location: МО Россия
|
Еще мысль. Когда захватываешь логоанализатором, убери синхронизацию лога по клоку, пускай захватывает всё подряд, и сигнал бази тоже захватывай
У тебя СалеаеЛоджик16 ?! У него вроде три пина тока с максимальной частотой можно. Захватывай только клок,мисо и бази
|
06 Dec 2017 05:19 |
|
|
newold86
Devil
Joined: 30 Nov 2013 11:08 Posts: 709 Location: WWW
|
|
06 Dec 2017 05:36 |
|