Просмотр полной версии : Z80 - чтение из памяти
Вот смотрю я на времянку чтения памяти и тупею. Я правильно понимаю, что действительные данные на шине можно поднимать по спаду третьего периода? А можно юзать фронт /MREQ + /RD для этого? Маловато времени, в Z180 и то больше.
James DiGreze
27.02.2006, 19:51
Судя по всему, понимаешь правильно. А по фронту /MREQ и /RD делать этого не стоит, так как рискуешь подхватить "нечто" при переходном процессе шины данных... Интересно что чтение команды идет по переднему фронту 3-го такта, а чтение данных по заднему...
Судя по всему, понимаешь правильно. А по фронту /MREQ и /RD делать этого не стоит, так как рискуешь подхватить "нечто" при переходном процессе шины данных...
Мда... В который раз убеждаюсь, что японцы пошли на пользу Z80. Спасибо.
Кстати, я так понимаю, что все имеющиеся клоны да и вообще системы на Z80 "реагируют" именно на спад Т3?
Интересно что чтение команды идет по переднему фронту 3-го такта, а чтение данных по заднему...
А как же ещё? При М1 грубо говоря по фронту третьего периода начинается по идее рефреш. Т.е. к этом моменту шина данных должна быть в Z. Другой вопрос что мешало им сделать задержку данных на шине на момент с фронта и по спад Т3?
Не буду новую тему открывать, вопрос касается чтения, как памяти так и портов в/в. Итак, согласно DS при считывание из порта в/в вводится автоматом один цикл ожидания и действительные данные снимаются с шины в промежутке между спадом и фронтом третьего периода (третьего не по счёту, а потому что счёт идёт Т1, Т2, Tw и Т3). При чтении из памяти такая же ситуация (за исключением 3-х тактов вместо 4-х, но один фиг, перепады на последнем периоде играют роль). Я так думаю, страшно не будет , если данные появятся скажем по спаду Т1 на шине, а исчезнут по спаду Т3 в обоих случаях (что бы не запутаться с номерами периодов, посмотрите диаграммы)? Не охота подгонят именно под рисунок из DS. Ведь при записи данные долго на шине должны висеть.
Ну что, нет идей по вышеуказаному вопросу? Хорошо, спрошу по-другому у бывших и действующих разработчиков: в цикле считывания из порта в/в или памяти, когда выставляются данные на шину данных и когда они оттуда "удаляются"?
ты скажи на кой тебе это надо ?
в смысле тебе надо проц симитировать ? или девайс правильно прикрутить ?
если девайс - просят у тебя по rd,mreq данные - так и выдавай хоть сразу после rd,mreq но держи до Т3. проц схватит по срезу Т3 - можешь снимать.
в даташите показано когда проц читает, а не когда устройства выдают. в промежутках процу вобще плевать что там на ШД твориться - а там могут твориться и реальные данные.
ты скажи на кой тебе это надо ?
в смысле тебе надо проц симитировать ? или девайс правильно прикрутить ?
Ну почему сразу спрашивают "зачем это надо"? В своё время всё узнаешь :) Тайны никакой нет, просто ещё рано.
если девайс - просят у тебя по rd,mreq данные - так и выдавай хоть сразу после rd,mreq но держи до Т3. проц схватит по срезу Т3 - можешь снимать.
в даташите показано когда проц читает, а не когда устройства выдают. в промежутках процу вобще плевать что там на ШД твориться - а там могут твориться и реальные данные.
Вот, я так и думал. Т.е. я ещё не совсем тупой буратино и тайминги можно разгрузить. Ура и спасибо.
В КАY данные из памяти защелкиваются каждый положительный перепад сигнала с частотой 3.5МГц а выставляются на шину данных по MREQ=0 RD=0
Запись происходит CAS=0 MREQ=0 RD=1 и текущее время доступа к памяти принадлежит процу при эти всех делах формируется сигнал WE в память. В режиме турбо чуть по хуже там процессору сигнал WAIT подсовываю пока его очередь не наступит
Ну почему сразу спрашивают "зачем это надо"? В своё время всё узнаешь Тайны никакой нет, просто ещё рано.
просто когда знаешь для чего - проще объяснять. а не от праздного любопытства :D
В КАY данные из памяти защелкиваются каждый положительный перепад сигнала с частотой 3.5МГц а выставляются на шину данных по MREQ=0 RD=0
Когда выставляются я уже допёр, спасибо. Мне вот было в основном непонятно, когда они снимаются. Имеется две библии от Zilog, одна старая, другая та, которая лежит у них сейчас и в обоих написано немного по-разному, точнее несходятся они в диаграмме чтения памяти (в новой нарисовано, что данные снимаются до перепада /MREQ и /RD, в старой, что как раз в момент этого перепада). В тексте не особо внятно это описано, минской книге я доверяю меньше, чем библии :) Отсюда собсно и возник вопрос.
В тексте не особо внятно это описано, минской книге я доверяю меньше, чем библии Отсюда собсно и возник вопрос.
читай не юз/ман um0080.pdf а криво отсканеный прод/спек ps0178.pdf - там на fig.6 pag.25 времена разрисованы. Только нафига тебе это надо не понимаю - там все также относительно спада Т3 разрисовано.
блин только что заметил что min time16=0ns !!! (а max ессно не нормирован) хаха вот как.
читай не юз/ман um0080.pdf а криво отсканеный прод/спек ps0178.pdf - там на fig.6 pag.25 времена разрисованы.
Это была моя вторая библия
Только нафига тебе это надо не понимаю - там все также относительно спада Т3 разрисовано.
Так да не так. Именно поэтому и возникли вопросы. В UM по спаду Т3 уже данные ёк, а в PS данные ещё некоторое время висят после этого спада. Т.е. согласно PS именно момент спада Т3 есть момент, когда процессор поднимает данные шины. Я уже разобрался, спасибо. Кстати, в Z180 такая же бадяга.
блин только что заметил что min time16=0ns !!! (а max ессно не нормирован) хаха вот как.
Ну вот, как только /RD сняли - данный тю-тю. И в UM именно так и нарисовано. Хотя для меня это не критично, до конца Т3 шину осободить успею.
Ну вот, как только /RD сняли - данный тю-тю. И в UM именно так и нарисовано. Хотя для меня это не критично, до конца Т3 шину осободить успею.
данные проц читает по срезу Т3, но холлд до снятия RD/ видимо нужен (так в PS нарисовано). хотя на практике наверно необязательно.
данные проц снять с ШД не может - не он выставлял :)
убирать их можно сразу после снятия RD/, а можно и подождать покурить (точнее это время получается в результате задержки в элементах от RD/ до Z-буфера данных - и оно ненулевое)
James DiGreze
06.03.2006, 11:11
Главное успеть покурить до переднего фронта следующего такта ;)
Скорее всего данные нужно "снять" когда /RD "впадет в спячку", т.е. "1"
Главное успеть покурить до переднего фронта следующего такта ;)
Скорее всего данные нужно "снять" когда /RD "впадет в спячку", т.е. "1"
Именно так и сделано на данный момент.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot