nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 19 Jun 2018 08:01



Reply to topic  [ 255 posts ]  Go to page Previous  1 ... 13, 14, 15, 16, 17  Next
CGA и CF IDE адаптер на Altera MAX10 
Author Message
Maniac

Joined: 16 Dec 2014 12:58
Posts: 317
Location: Киев
Reply with quote
newold86 wrote:
Вообще смысл есть, особенно для медленных компьютеров.

Я про то, что если скорости SPI не хватает для обмена с RAM на ее скорости, то накладные расходы на DMA только замедлят обмен по сравнению с CPU, даже на 8088@4.77
newold86 wrote:
там чтение из гибкого диска вообще идет побайтно - контроллер приготовил байт, потом выдает запрос на DMA

Может быть, сам уже не помню точно чего там и как.
Кто мешает этот самый on-demand в вашем случае? Биос ваш, контроллер ваш.
newold86 wrote:
так придется городить сложную конструкцию

Ой... как все просто выглядело у меня в голове, когда я свое городить начинал :lol:


12 Nov 2017 07:36
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 628
Location: WWW
Reply with quote
Vic3Dexe wrote:
Я про то, что если скорости SPI не хватает для обмена с RAM на ее скорости, то накладные расходы на DMA только замедлят обмен по сравнению с CPU, даже на 8088@4.77

Долго объяснять сейчас не могу, поэтому поверьте на слово - при выбранном мною подходе DMA помогает (цифры приводил чуть выше). Если кратко, то поток от SPI медленнее памяти, но намного быстрее цепочки - SPI - CPU - память. И даже с памятью проблема не столько в медленном потоке, а в его сдвинутости по фазе относительно времянок памяти

Vic3Dexe wrote:
Кто мешает этот самый on-demand в вашем случае?

Побайтно - нет проблем, но тогда расходы на DMA как раз на корню всю идею перечеркнут. Через FIFO - уже раньше объяснял.


12 Nov 2017 08:19
Profile
Maniac

Joined: 16 Dec 2014 12:58
Posts: 317
Location: Киев
Reply with quote
newold86 wrote:
поэтому поверьте на слово

Да без проблем, мне-то что :)

В общем ладно, я все, что знал - рассказал.


12 Nov 2017 08:25
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 328
Location: Москва
Reply with quote
newold86 wrote:
Mixa64 wrote:
WE придерживаем до момента как появится READY. Подразумевается, что к появлению READY данные для записи уже есть. (название WRMEM - условное, единый строб для памяти, формируемый из требования процессора или DMA, смотря кто из них активен.)

Такое впечатление, что памяти глубоко наплевать на READY (если под этим подразумевается CHRDY) - как я уже писал, у меня не получается придержать момент записи в память байта с шины данных...

Да, IOCHRDY. Он расщепляется, попадает на READY процессора или READY DMA, в зависимости от текущего цикла. И WE на память не подается до тех пор, пока READY не появится. Иначе - нонсенс, DMA придержали, потому что IO еще не готово, а в память уже пишем.


12 Nov 2017 10:06
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 628
Location: WWW
Reply with quote
Mixa64 wrote:
И WE на память не подается до тех пор, пока READY не появится. Иначе - нонсенс, DMA придержали, потому что IO еще не готово, а в память уже пишем.

Кем именно не подается ? Да вся проблема у меня из-за того, что память не ждет и пишет в себя в тот момент, когда CHRDY в нуле и нужных данных на шине еще нет. Вот картинка (прошу прощения - на Retina дисплее Quartus фигово масштабирается):

Attachment:
memw.png
memw.png [ 1.36 MiB | Viewed 1075 times ]


В районе метки 224 SPI передает последний бит первого байта, и на шину данных выставляются правильные данные - 33h, после чего IORDY возвращается в 1. Тем не менее, в память записывается предыдущее значение с шины данных - FEh, потому что MEMWn идет в 0 в самом начале DMA цикла, и CAS, очевидно, поднимается еще до выставления правильных данных на ШД, не дожидаясь IORDY...


12 Nov 2017 10:29
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 328
Location: Москва
Reply with quote
Вот тот MEMWn, посередине которого 224, запускает цепочку сначала RAS, потом CAS, а WE идет не автоматически за/вместе с CAS или просто тупо как повторение MEMWn, а придерживается до момента, когда IODRY не появится, момент метки 224.

P.S. Это не то как оно в реальности происходит, а то, как хотелось бы, чтобы нонсенса не было. Если в реале DMA на мамке по IORDY задерживается, а сигналы на ОЗУ живут своей жизнью, то нафига тогда READY для DMA делать.


Last edited by Mixa64 on 12 Nov 2017 11:31, edited 1 time in total.



12 Nov 2017 11:24
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 628
Location: WWW
Reply with quote
Mixa64 wrote:
WE идет не автоматически за/вместе с CAS или просто тупо как повторение MEMWn, а придерживается до момента, когда IODRY не появится, момент метки 224.

И как тогда в память попадают старые данные ? Причем я даже пробовал придержать IORDY еще подольше - чтобы быть уверенным, что после появления данных на ШД проходит достаточно времени - картина не изменилась вообще никак...


12 Nov 2017 11:30
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 328
Location: Москва
Reply with quote
я там предыдущий пост поправил, см. P.S.


12 Nov 2017 11:31
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 628
Location: WWW
Reply with quote
Mixa64 wrote:
я там предыдущий пост поправил, см. P.S.

Небольшое такое уточнение :)
Именно этим вопросом я и задавался - нафига тогда CHRDY для DMA...


12 Nov 2017 11:34
Profile
Maniac

Joined: 25 Aug 2009 08:02
Posts: 328
Location: Москва
Reply with quote
newold86 wrote:
Именно этим вопросом я и задавался - нафига тогда CHRDY для DMA...

Ну вот и консенсус :)
Я не стал листать альбомы со схемами XT, влом. Посмотрел только в старой тетрадке, что осталось от моих записей на тему XT, когда делал свое программно-совместимое. И нету там у меня специального сигнала WE к памяти, RAS-CAS0..CAS2 формируются (три ряда РУ7 было), а WE нету! Неужели и вправду WE так и идет напрямую от шинного MEMWn ? Ну это косяк тогда, косяк.


12 Nov 2017 11:55
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 628
Location: WWW
Reply with quote
При DMA, сигнал WE идет напрямую от 8237. Это не было бы проблемой, если бы CAS задерживался по CHRDY. Причем, кстати, логика формарования RAS/CAS довольно сложная, и в ней присутствуют сигналы, имеющие отношение к DMA. Только вот сходу понять не могу - довольно сложно замешано :(


12 Nov 2017 12:12
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 628
Location: WWW
Reply with quote
Посмотрел чуть внимательнее - на времянки памяти сигнал CHRDY не влияет вообще никак. Все жестко начинается после опускания в 0 сигнала MEMW/R (причем не важно, кто их выдает - DMA или процессор), далее вообще все происходит через линию задержки, так что даже стало понятно, когда именно нужно выставить данные, чтобы они записались


12 Nov 2017 12:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Tronix wrote:
Я вешаю комп обычно так:
Code:
cli
hlt
А говорят, что под Вендой комп так не вешается... 8)

_________________
iLavr


23 Nov 2017 11:02
Profile
Maniac

Joined: 16 Dec 2014 12:58
Posts: 317
Location: Киев
Reply with quote
Lavr wrote:
А говорят, что под Вендой комп так не вешается...

Правду говорят :)
Ежели win32 приложение - схлопочет #GP.
Ежели досовское - повесит только себя.


24 Nov 2017 01:37
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Vic3Dexe wrote:
Ежели досовское - повесит только себя.

и то не насмерть - диспетчером легко снимется

_________________
iLavr


24 Nov 2017 05:51
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 255 posts ]  Go to page Previous  1 ... 13, 14, 15, 16, 17  Next

Who is online

Users browsing this forum: No registered users and 1 guest


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.