nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 25 Apr 2024 12:00



Reply to topic  [ 198 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 14  Next
ISA-8 SD-контроллер (SPI) на CPLD 
Author Message
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
ПО "извне" контролирует признак занятости, то есть записали в регист данных, крутимся в while пока регистр статуса & 0x40 не равен нулю (ждем снятия BUSY).

Так же пробовал играться с задержками, правда не очень огромными, но вставлял 6 штук nop'ов перед следующей записью в регистр данных. Влияет на результат мало -

Поведение остается такое-же, только может быть вместо 3-его удачного байта передается удачно второй байт, а третий становится 0xFF. В целом иногда байты меняются, но всегда не больше 3-4 байт из 10ти передается нормально. Остальные 0xFF.

С другой стороны, если ПО "извне" игнорит BUSY и лупит подряд в порт данных, то передаются только "хорошие байты", но остальные есстественно теряются. Из тех же 10-ти байт передаются три нормальных байта - 0x03,0x05,0xE (к примеру).

_________________
https://t.me/tronix_blog


05 Dec 2017 04:39
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Для начала, я бы не читал ничего (чтобы лишний раз не обращаться к устройству), а просто потихоньку передавал бы байты с гарантированной паузой


05 Dec 2017 04:58
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Попробую при случае.

Вот еще меня смущает вопрос о назначении пинов (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 повесить?

_________________
https://t.me/tronix_blog


05 Dec 2017 05:08
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
А, вот картинка то:

Attachment:
tdp.PNG
tdp.PNG [ 23.78 KiB | Viewed 4884 times ]


Половина шины данных оказалась в B.....

_________________
https://t.me/tronix_blog


05 Dec 2017 05:40
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
GCLR как-то задействован ? Если нет, то он вроде может работать, как сброс - т.е. наводки на него будут сбрасывать регистры. Он вроде сбрасывает по низкому уровню, поэтому нужно подать 1.


05 Dec 2017 05:49
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
newold86 wrote:
GCLR как-то задействован ? Если нет, то он вроде может работать, как сброс - т.е. наводки на него будут сбрасывать регистры. Он вроде сбрасывает по низкому уровню, поэтому нужно подать 1.

Выше увидел, что используется, как Reset...


05 Dec 2017 05:50
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Задействован. Туда запаян сигнал Res. В XT он активный высокий...

_________________
https://t.me/tronix_blog


05 Dec 2017 05:51
Profile
Maniac

Joined: 22 Jun 2005 04:35
Posts: 260
Location: МО Россия
Reply with quote
Извиняюсь, не в курсе. Сколько тактов ОУТ в порт на ващем проце? И какой клок на проце?!
На отсылку байта, нужно 16 тактов
Каким клоком щас тактируется SPI?

Вот и считайте


05 Dec 2017 10:03
Profile ICQ
Maniac

Joined: 22 Jun 2005 04:35
Posts: 260
Location: МО Россия
Reply with quote
8 тактов на отсылку байта


05 Dec 2017 10:20
Profile ICQ
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Так чего делать-то? :question: Варианты вижу пока такие: 1) попробовать на кардинально другой машине, например на первом пне. 2) перемахнуть местами nRD и nWR 3) перенести всю шину данных в мегаячейку B (разряды Dat[2..0]) 4) бубен...

_________________
https://t.me/tronix_blog


06 Dec 2017 00:53
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Tronix wrote:
у epm3032 вроде нет разных банков IO, и я думал сначала что вообще пофигу

Вообще-то пофигу. Циклону - так точно.
Tronix wrote:
но квартус при компиляции стал ругаться на тему что-то не может проложить (найти) путь от пина (или сигнала) такого-то до пина такого-то

Это может происходить при плотной упаковке. Т.е., при фиттигне тупо невозможно распихать лог. элементы так, чтобы сигнал прошел как надо.
Для emp3032 с ее 32-мя (?) LE это настанет гораздо быстрее, чем для циклона с его 6000.
Это я к тому, что натыкался на это при заполнении циклона на 80-90%.
Tronix wrote:
Global Clock. Туда приходит OSC 14,3 MHz, это Clk у меня. Дальше есть еще Global Clear - это у меня Res и Global OE - это у меня nCS

Клоки лучше (правильнее) заводить на Global clock, они внутрях идут по выделеным линиям, и квартусу проще с ними работать. Но это не значит, что клок нельзя завести на другой пин. Исключение - ньюансы с PLL, там, где эти PLL есть, но это не ваш случай :)
Остальное - непринципиально, все эти Global* работают, если явно заказать их использование, иначе - обычные пины.
Опять же, могут быть варианты, когда пин работает только в какой-то определенной роли, например на выход или как программирования. Но по этому поводу квартус должен выругаться.


06 Dec 2017 01:00
Profile
Maniac

Joined: 22 Jun 2005 04:35
Posts: 260
Location: МО Россия
Reply with quote
Tronix wrote:
Так чего делать-то? :question: Варианты вижу пока такие: 1) попробовать на кардинально другой машине, например на первом пне. 2) перемахнуть местами nRD и nWR 3) перенести всю шину данных в мегаячейку B (разряды Dat[2..0]) 4) бубен...

НОПов побольше. Если клок СПИ 400кгц, то ОООчень много нопов.

К примеру, в пентагоне 2.666, клок з80 21мгц, клок СПИ 7мгц. В этом случае две подряд операции ИН или ОУТ не работают. КоЮ пришлось вайты вставлять.
В Еве 14мгц з80, и СПИ 7мгц работают ок. Но в з80 ИН 16 тактов вроде, или 21 даже напомню.


06 Dec 2017 05:09
Profile ICQ
Maniac

Joined: 22 Jun 2005 04:35
Posts: 260
Location: МО Россия
Reply with quote
Хотя, пропустил, есть же сигнал занятости тут.


06 Dec 2017 05:12
Profile ICQ
Maniac

Joined: 22 Jun 2005 04:35
Posts: 260
Location: МО Россия
Reply with quote
Еще мысль.
Когда захватываешь логоанализатором, убери синхронизацию лога по клоку, пускай захватывает всё подряд, и сигнал бази тоже захватывай

У тебя СалеаеЛоджик16 ?!
У него вроде три пина тока с максимальной частотой можно.
Захватывай только клок,мисо и бази


06 Dec 2017 05:19
Profile ICQ
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Tronix wrote:
Так чего делать-то?

Повторюсь:
newold86 wrote:
Для начала, я бы не читал ничего (чтобы лишний раз не обращаться к устройству), а просто потихоньку передавал бы байты с гарантированной паузой


06 Dec 2017 05:36
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 198 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 14  Next

Who is online

Users browsing this forum: No registered users and 30 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.