nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 23 Apr 2024 07:05



Reply to topic  [ 295 posts ]  Go to page Previous  1 ... 7, 8, 9, 10, 11, 12, 13 ... 20  Next
Proteus C++ DLL's 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
И, кстати говоря,...
HardWareMan wrote:
SYNC i8080 выдает в каждом машинном цикле.

Ты своё памятное слово из трёх букв назад себе возьмёшь, или как?
Учитель танкистов... :wink:

Я прочитал, только то что написано, вместе со словом из трёх букв...
Видимо, торопясь написать это слово, ты в свои книжечки про
исключения из правил не посмотрел... :wink:
И попал пальцем в небо... :lol: Ладно, торопливый ты наш похабник...
HardWareMan wrote:
Действительно. Команда DAD во время М2 и М3 шину не дергает.
Image
И, похоже, не только DAD.

А в какие ещё команды, кроме DAD, "во время М2 и М3 шину не дергают"?

_________________
iLavr


10 Dec 2012 08:15
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Что-то не совсем понимаю в татировании 8080
между спадом Ф2 фронтом Ф1 есть пауза или нет? Когда первый
раз увидел такие диаграммы (Радио за 80-ый год) - там такт
был поделен на четыре части - первая четверть Ф1, потом 2
части - Ф2 и потом все одыхают.

Типовая диаграмма вот такая:

Image

Минимальная пауза даже по справочным данным может быть = 0.

Да - диаграмму из "Радио" мы здесь на форуме тоже привели:

Image

Хотя реальный ГФ24 паузу между Ф1 и Ф2 действительно вставляет...



Я немного озадачился по поводу сигнала RESET.
В оригиналах моделей Протезуса обычно реагируют просто на его наличие.

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

И второй вопрос: если в схеме так получается, что RESET установлен активным
постоянно - что должна делать наша модель в этом случае?
Тактовые сигналы Ф1 и Ф2 при этом ведь в модель поступают! :wink:

_________________
iLavr


10 Dec 2012 08:50
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
2 aav8: тут оффтоп подзавалил, про такты - я на предыдущей странице ответил.
aav8 wrote:
И похожий вопрос про условные переходы - читаются - ли
байты адреса перехода? - я думаю в модели их можно будет
просто проскочить.

Этот вопрос не совсем понял... :oops:
Если ты про Jxx ADDR - то да ADDR_lo и ADDR_hi - должны по шине данных заскочить в WZ.
Конечно, если ты именно это имел в виду...

_________________
iLavr


10 Dec 2012 11:24
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
Quote:
Да - диаграмму из "Радио" мы здесь на форуме тоже привели

Отличная диаграмка - журнал к сожалению не
нашел - наверное на даче.
Сразу вопросик - SYNC и выдача слова состояния по времени
совпадают - передний фронт SYNC с данными, и аналогично
задний. У меня при аналогичной тактировки не захотелось писаться
в ОЗУ - Я поднимал WR в высокое состояние, и одновременно
ШД переключал в 3-е состояние. Сейчас сделал вот-так:
Code:
/*** 04-12-2012 ****************** aav@lora.nsk.su [Алексеев А.В.] ***
 * Цикл записи                                                       *
 *********************************************************************/

void _stdcall mWrite3(bool F1,bool F2,x80* o) { // ****** такт 3 ... *
  if(F1) {
  } else {
   o->pinMREQ=true;
   o->pinWR  =true;
   o->tNxt=tNxtT;
  }
}  // *************************************************** ... такт 3 *
void _stdcall mWrite2(bool F1,bool F2,x80* o) { // ****** такт 2 ... *
  if(F1) {
  } else {
   o->pinWR=false;
   o->tNxt=mWrite3;
  }
} // **************************************************** ... такт 2 *
void _stdcall mWrite1(bool F1,bool F2,x80* o) { // ****** такт 1 ... *
  if(F1) {
    o->tNxt=mWrite1;
  } else {
   o->pinMREQ=false;
   o->busData=Data;
   o->tNxt=mWrite2;
  }
} // **************************************************** ... твкт 1 *
void _stdcall mWrite(bool F1,bool F2,x80* o,unsigned short A,unsigned char D,tagTx T) { // * запись ... *
  o->busAddr=A;
  Data=D;
  tNxtT=T;
  mWrite1(F1,F2,o);
//sh(o,"mWrite");
} // **************************************************** ... запись *


Quote:
Я немного озадачился по поводу сигнала RESET.
В оригиналах моделей Протезуса обычно реагируют просто на его наличие.

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

И второй вопрос: если в схеме так получается, что RESET установлен активным
постоянно - что должна делать наша модель в этом случае?
Тактовые сигналы Ф1 и Ф2 при этом ведь в модель поступают!

Сейчас примерно так:
Code:
/*** 27-11-2012 ***************** aav@lora.nsk.su [Алексеев А.В.] ***
 * Симуляция                                                        *
 ********************************************************************/

VOID x80model::simulate (ABSTIME time,DSIMMODES mode) {

  Digital::time=time;

  if(!time) { // **************************** запуск симулятора ... *
   Reset();
   oldCLK=false;
   return;
  } // ************************************** ... запуск симулятора *

  if(!pinReset) Reset(); // сброс

  bool CLK=pinCLK;           // состояние CLK
  if(CLK == oldCLK) return;  // CLK не изменился
  oldCLK=CLK;
   
  Exec(CLK,0);

}

Т.е. если Reset активен - все остальное игнорируется.
А сама модель обрабатывает его вот так:
Code:
/*** 28-11-2012 ***************** aav@lora.nsk.su [Алексеев А.В.] ***
 * Сброс                                                            *
 ********************************************************************/

unsigned long _stdcall x80::Reset(void) {

  tNxt=m1t1; // первый такт первый цикл

  busAddr=PC=0;
  busData.Z();

  pinMREQ=true;
  pinRD  =true;
  pinWR  =true;
  pinM1  =true;
  pinRFSH=true;

  return 0;

}

По поводу минимальной длительности - надо будет подумать.
Quote:
Этот вопрос не совсем понял...
Если ты про Jxx ADDR - то да ADDR_lo и ADDR_hi - должны по шине данных заскочить в WZ.
Конечно, если ты именно это имел в виду...

Да - именно это имел в виду - буду читать все байты, а потом
принимать решение.


10 Dec 2012 18:25
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
Ну вот - модель в первом приближении работает.
Надо к ней как-то подключить 8250 и запустить тест.
В и-нете пока нашел только как ее программировать
а про подключение - что-то глухо.


11 Dec 2012 04:46
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Сразу вопросик - SYNC и выдача слова состояния по времени
совпадают - передний фронт SYNC с данными, и аналогично
задний. У меня при аналогичной тактировки не захотелось писаться
в ОЗУ - Я поднимал WR в высокое состояние, и одновременно
ШД переключал в 3-е состояние.

Посмотри вот эту диаграмку - на ней задержки учтены и хорошо виден интересующий
тебя процесс, как мне кажется...

Image

aav8 wrote:
Lavr wrote:
Я немного озадачился по поводу сигнала RESET.
В оригиналах моделей Протезуса обычно реагируют просто на его наличие.

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

И второй вопрос: если в схеме так получается, что RESET установлен активным
постоянно - что должна делать наша модель в этом случае?
Тактовые сигналы Ф1 и Ф2 при этом ведь в модель поступают!

Т.е. если Reset активен - все остальное игнорируется.
По поводу минимальной длительности - надо будет подумать.

По всем справочным данным:
Quote:
Сигнал Reset (Сброс) должен длиться не менее трёх периодов тактовой частоты.

Я предлагаю при старте модели его по умолчанию отрабатывать, потому как
задающую RC-цепь Сброса в Протеусе не ставят обычно, поэтому при старте
модели или при любом Сбросе надо хотя бы эти три такта точно отработать,
а для этого модель должна "слушать" Ф1 и Ф2 - вот я о чём.

Если длительность Reset задана извне нормально, то надо его отслеживать,
а как он закончился - начинать работу модели чётко с ближайшего фронта Ф1.
Это таже причина, по которой надо "слушать" Ф1 и Ф2 во время Reset.

Я Ф1 и Ф2 немного иначе, похоже, "слушаю", чем ты...
Code:
  if(pinC1->isposedge())  //--- если фронт сигнала на выводе C1
    {
     dbPopup->print("\n> Front C1");
...
     return;
    }
//   else //------------------- если спад сигнала на выводе C1:
  if(pinC1->isnegedge())
    {
     dbPopup->print("\n> Spad_ C1");
...
     return;
    }

  if(pinC2->isposedge())  //--- если фронт сигнала на выводе C2
    {
     dbPopup->print("\n> Front C2");
...
     return;
    }
//   else //------------------- если спад сигнала на выводе C2:
  if(pinC2->isnegedge())
    {
     dbPopup->print("\n> Spad_ C2");
...
     return;
    }

Потому что по всем мануалам всё привязано к фронтам и спадам - по этим "точкам"
приявязывается анализ остальных сигналов.

_________________
iLavr


11 Dec 2012 13:24
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Надо к ней как-то подключить 8250 и запустить тест.
В и-нете пока нашел только как ее программировать
а про подключение - что-то глухо.

Вот тебе пример подключения более продвинутого аналога 8250 - 16550:

Image

Соответствие с 8250 у них следующее:

Image

Ну и вроде как оригинальная 8250 именно так и включается:

Image

По программированию - ты сказал - материал у тебя есть. Да и я взглянул -
в Инете его много...



PS. Я не знаю - работает ли у тебя прерывание, но 8250 можно обслуживать
и по опросу, я так делал...

_________________
iLavr


11 Dec 2012 15:06
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
Quote:
Если длительность Reset задана извне нормально, то надо его отслеживать,
а как он закончился - начинать работу модели чётко с ближайшего фронта Ф1

Вот это конечно не учел, да и сброс пока не подключал -
проц сбрасывается при старте симуляции.
Quote:
Quote:
Сигнал Reset (Сброс) должен длиться не менее трёх периодов тактовой частоты.

То, что ДОЛЖЕН длиться для надежжного сброса проца.
Если он длится меньше - сброс может быть не полный.
В модели можно все сбросить за 0 пикосекунд - поэтому не вижу
необходимости считать эти 3 такта.
Quote:
Вот тебе пример подключения более продвинутого аналога 8250 - 16550:

Спасибо за схемку. Как раз именно то-что нужно.
В протеусе есть модель 8250A - я думаю практически все
должно подойти.
Прерывания пока не обрабатываются.
И пока нет ввода/вывода.
Буду рисовать схему...
PS:
А в диаграмке обнаружил отключение ША. А уменя она всегда
включена...


11 Dec 2012 18:21
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Quote:
Сигнал Reset (Сброс) должен длиться не менее трёх периодов тактовой частоты.

То, что ДОЛЖЕН длиться для надежжного сброса проца.
Если он длится меньше - сброс может быть не полный.
В модели можно все сбросить за 0 пикосекунд - поэтому не вижу
необходимости считать эти 3 такта.

Мне всё же хочется придержаться правильных времянок, фронтов и др. мелочей.
Раз уж мы учли, что работаем от внешней синхронизации...

Я привёл тут страницу назад пример i8086 от Labcenter - у них опять все растактовки внутри.
Я так понимаю, это проще - у них процессор "ведущий" для всей схемы.
А у нас - "ведомый" внешним генератором...
Но ты меня "уговорил" на это, т.к. без этого трудно смоделировать "Специалисты" и "Спектрумы"... :wink:

aav8 wrote:
Прерывания пока не обрабатываются.
И пока нет ввода/вывода.

Ну лучше введи один вектор по типу RST_N. Это не трудно, мне кажется,
а по опросу - довольно нудно программировать... :-?
А нет ввода/вывода - ну мы в "Специалисте" привыкли делать всё через LDA/STA
и другие операции с памятью... :wink:

aav8 wrote:
А в диаграмке обнаружил отключение ША. А уменя она всегда
включена...

Не - во всех справочниках точно указано, когда она выключается...

Я поседею наверно, читая эти справочники! Ну такие древние процессоры,
а в справочниках - разнобой бывает... :(

Но бывают и очень интересные вещи! Я никогда ранее не видел вот такой подробной
"блок-схемы" нашего процессора-прадедушки! :o

Image

_________________
iLavr


11 Dec 2012 19:28
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
Сумел все-таки подключить 8250 - информация довольно
запутанная - в одном месте тактовая частота указана
1.19Мгц, в другом 1.8 с копейками, а делители одинаковые
для одинаковых скоростей. Да еще повозился с подключением
к шине отдельных проводников.
По поводу отладки - функция модели runctrl принимает
параметр RUNMODES - режим работы - в случае
значения suspend я устанавливаю внутренний флаг
отладки, и в начале первого машинного цикла
вызыаю функцию suspend протеуса - получается пошаговая
отладка - видны все регистры и все такое.
Так-же такой вызов вставил в HLT.
После подключения 8250 - у нее есть внутренняя трассировка -
нашлись кое - какие косяки. Но эхо заработало.


12 Dec 2012 06:36
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
Сумел все-таки подключить 8250 - информация довольно
запутанная - в одном месте тактовая частота указана
1.19Мгц, в другом 1.8 с копейками, а делители одинаковые
для одинаковых скоростей.

1.19Мгц - это, наверное, CLK задействовали как задающий...

Впрочем, даже если и "1.8 с копейками" то при делении до рабочей частоты,
и с учётом асинхронного характера обмена, ошибка не будет слишком большой
на длине кадра передачи, как мне кажется...

_________________
iLavr


12 Dec 2012 12:43
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
Ну вот, наконец добрался до тестов.
Сообразил как это дело скомпилить.
Вылетает на DAA - ну я ее и не реализовывал.
И сдвиги - в User Manual что-то не все понятно - в одном
месте стрелок нет, а в другом смотрят друг на друга.
Буду читать в другом месте.
И с 8250 пришлось повозиться - двоила символы,
пришлось строборовать запись тактированием.


14 Dec 2012 01:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
И сдвиги - в User Manual что-то не все понятно - в одном
месте стрелок нет, а в другом смотрят друг на друга.

Какие сдвиги-то? RAL, RAR, RRC, RRC что ли?
Или я не понял вопроса?

_________________
iLavr


14 Dec 2012 10:31
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
Quote:
Какие сдвиги-то? RAL, RAR, RRC, RRC что ли?

Да, они.
И вопросик - у меня не проходит такой тест:
Code:
 STC
 MVI A,042h
 RLC
 CC  err     
 RLC
 CNC err
 CPI 0009h    ;? 1
 CNZ err      ;? 2
 RRC
 CNC err
 RRC
 CPI 042h
 CNZ err

В строке, помеченной "? 1" у меня получается 00Ah
Если сравнивать с 00Ah - сбрасывается CY
и не проходять стоки после стоки "? 2"
При старте тестс выдает информацию:
Quote:
MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC VERSION 1.0 (C) 1980


14 Dec 2012 23:02
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 860
Reply with quote
Post 
aav8 wrote:
В строке, помеченной "? 1" у меня получается 00Ah

0100 0010 CY=1
RLC
1000 0100 CY=0
RLC
0000 1001 CY=1

0100 0010 CY=1
RAL
1000 0101 CY=0
RAL
0000 1010 CY=1

Ты ничего не напутал? :)

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


15 Dec 2012 01:26
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 295 posts ]  Go to page Previous  1 ... 7, 8, 9, 10, 11, 12, 13 ... 20  Next

Who is online

Users browsing this forum: No registered users and 36 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.