Как запустить i8086

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Tacho
Родился
Сообщения: 8
Зарегистрирован: Пт янв 06, 2012 19:04:54

Re: Как запустить i8086

Сообщение Tacho »

Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
Реклама
dinets
Потрогал лапой паяльник
Сообщения: 360
Зарегистрирован: Чт авг 12, 2010 10:16:32

Re: Как запустить i8086

Сообщение dinets »

Tacho писал(а):Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
Минябы так дрючили....

кстати вопрос из праздного любопытства какие порты в процессоре????? насколько я понимаю там только шина адреса\данных и куча управляющиих и прерываний

или эта команда ложит данные в определённый адрес в оперативе и этот адресс наш порт ввода вывода.... а откель он знает что этот тот самый порт? если он выбран заранее значит они уже заранее жостко назначены?
Реклама
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Как запустить i8086

Сообщение Tolmi »

dinets писал(а):
Tacho писал(а):Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
Минябы так дрючили....

кстати вопрос из праздного любопытства какие порты в процессоре????? насколько я понимаю там только шина адреса\данных и куча управляющиих и прерываний

или эта команда ложит данные в определённый адрес в оперативе и этот адресс наш порт ввода вывода.... а откель он знает что этот тот самый порт? если он выбран заранее значит они уже заранее жостко назначены?
Не запутывайте ТС, в i8086 раздельное адресное пространство памяти и портов в/в
Посмотрите из праздного любопытства на ножку M/IO в минимальном режиме.
In theory, theory and practice are the same. In practice, they're not.
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Как запустить i8086

Сообщение Tolmi »

Tacho писал(а):Шину А\Д надо смотреть относительно управляющих сигналов. То что адреса перебирает - скорее всего, завис.
Ваши команды- загрузить число 1234 в рег АХ и выдать в 112 порт вывода.
Скорее не завис, а слетел по прерыванию с HLT и теперь бродит по пустому ОЗУ

kras, поставьте бесконечный цикл вокруг

out 112, ax

чтобы хорошо было видно сигналы на ножках.

PS Я когда-то так с платой от PC/XT развлекался, навесил тучу светодиодов на все шины и смотрел, как при работе всё мигает и переливается. Осталась любовь к инженерным пультам от больших ЭВМ :)
In theory, theory and practice are the same. In practice, they're not.
Реклама
Эиком - электронные компоненты и радиодетали
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Как запустить i8086

Сообщение kras »

Поставил, стало что-то похожее на норм работу. Сейчас не хочу отвлекаться, проблема в том, что сигнал меняется и в отрицательную сторону. То есть проверяю 16 битов двумя аналоговыми осциллографами, изменяю адрес, вроде поведение более-менее, адрес короче данных, константы примерно получаются, но возникают странности, особенно с тем, что сигнал бывает отрицательным! Если это серьезно странно, смоделирую попозже и дам скрин. Не хочу отвлекаться потому, что решил все-таки пробовать программную реализацию сначала, а 6 февраля уже выгоняют, то есть мне сегодня-завтра надо закончить с самой курсовой, а я программной реализации пока знаю, как делать под эмулятор. Кстати, а нужны какие-нибудь дополнительные команды для реального микропроцессора, чтобы он загрузился? Ну и по завершению работы.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Реклама
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Как запустить i8086

Сообщение Tolmi »

kras писал(а): проблема в том, что сигнал меняется и в отрицательную сторону.
Это не понял.
Кстати, а нужны какие-нибудь дополнительные команды для реального микропроцессора, чтобы он загрузился?
Нет, он сразу начинает работать. Но можно поразрешать/позапрещать/настроить прерывания, по вкусу. А вообще и так всё должно работать.
Ну и по завершению работы.
По завершению работы нужно выключить приборы и оборудование, закрыть воду и погасить свет :)
In theory, theory and practice are the same. In practice, they're not.
Реклама
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Как запустить i8086

Сообщение kras »

Что-то я пока не успел повторить отрицательный сигнал, но попробую. Зато запустил процессор в отдельном проекте, но я тогда не понимаю, как передаются данные по шине АД. Прилагаю скрин, на CLK счетчиков - 5МГц, тактовая частота процессора 1кГц, программа такая:

Код: Выделить всё

m1:
mov al,1
out 1,al
jmp m1


Почему-то сигнал передается каждый 15 тактовый импульс, как я понял. Но при чем здесь вообще ША и ШД? Когда действует адрес, а когда данные? Хотя, вроде, написано об этом неплохо в литературе, но что-то не доходит.
Безымянный863.png
(121.67 КБ) 569 скачиваний
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Как запустить i8086

Сообщение kras »

Вот тут, как я считаю, минус.
И вообще, если не смотреть на знаки, вот что пока не понимаю:
mov al,1
out 0,al - выдает на первом канале короткий ноль и единицу

mov al,2
out 0,al - на втором канале короткий ноль и единица

mov al,3
out 0,al - сигналы первого и второго канала одинаковы - короткий ноль и единица

mov al,3
out 1,al - по моей логике первый канал всегда "1", а второй - короткий ноль и единица. Реально все так: на первом канале короткая единица и ноль, на втором - вечный ноль. Почему?
Вложения
Безымянный864.png
(210.62 КБ) 274 скачивания
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Как запустить i8086

Сообщение Tolmi »

Я не знаю, как работает модель, и как в симуляторе работает цифровой осцилограф, но я точно знаю, что у i8086 совмещенная шина адреса и данных. Это значит, что в нормальном состоянии, без разделения на данные и программу через какие-нибудь внешние дешифраторы, понаблюдать за одними только данными на осциллографе, тыкая его на ноги процессора, не получится. Там в первом такте каждой команды сначала будет присутствовать адрес ( для считывания команды из ОЗУ ), в это время выдается строб ALE в минимальном режиме и потом в третьем-четвертом такте будут присутствовать данные, и строб DEN. Всё, что выводится в адресное пространство I/O, можно определить по низкому уровню на ноге M/IO, при этом DEN тоже дожен быть активен. Прежде чем что-то симулировать в симуляторе, хорошо самому представлять, что именно можно увидеть в этом симуляторе.
In theory, theory and practice are the same. In practice, they're not.
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Как запустить i8086

Сообщение kras »

Ну у меня на последнем скрине 3 сигнал сверху - это ALE. Прикладываю тогда еще рисунок. Программа для него такая:

Код: Выделить всё

m1:
mov al,5
mov dx,5
out dx, al
jmp m1
Безымянный865.png
(145.92 КБ) 522 скачивания
Но на порту A0 вижу только одну единицу - адрес. Видно, что ALE - B, DEN - C. А где единица для данных? А М/IO# всегда 0, так и должно быть, я ведь работаю без mov. mov вообще не работает, скрин:
Безымянный866.png
(155.51 КБ) 288 скачиваний
То есть даже ALE нету!:(
А код такой:

Код: Выделить всё

m1:
mov al,5
mov 5, al
jmp m1
Проблема, может быть, в компиляторе, бинарник такой:

b0 05 88 06 05 00 eb f8.

Я не знаю насчет 88 06 05.

Кстати, а есть какие-нибудь книжки рода "подайте в мк такой-то код, получите на выходе такой-то сигнал"? Ну на элементарнейшем уровне. Кстати, если есть для других микропроцессоров, тоже интересно почитать.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Tolmi
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина
Контактная информация:

Re: Как запустить i8086

Сообщение Tolmi »

Посмотрел я на модель 8086 Demo Board в протеусе. Насколько я понял, модель сильно упрощенная. т.е. моделью предполагается, что внутри 8086 есть некоторая "программная память", которой на самом деле реально нет, но такое упрощение позволяет приравнять процессор к микроконтроллеру. И писать для модели программы в виде обычных exe файлов, что тоже сильное упрощение. Реальной работе с процессором по такой модели не научиться и без понимания, что на самом деле упрощено, а что в реальности существует в железе, такая модель больше запутывает, чем объясняет.
In theory, theory and practice are the same. In practice, they're not.
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

Re: Как запустить i8086

Сообщение clawham »

смотрю я тут и думаю...неужто такив институтах даже не объясчнили что такое мультиплексированная шина?
это как у АВРок - снаружи нужна защелка промежуточная которая будет выцеплять из 16 мультиплексированных ног первую младшую часть шины адреса, остальная подтянется на ногах Адреса 16...19

дальше...а почему вы не используете логический анализатор? там 16 раздельных ног входов и 4 шинных 8-мибитных входа!!! разве не то что вам надо

дальше...КТО вам сказал что микропроцессор исполняет ЕХЕ файлы???? это файлы для операционной системы с определенными загооловками и так далее!!! они вам не ну ж ны!!!
вам надо просто BIN файлик с машинными кодами заливать во внешнюю память !!! в частности в протеусе сделали львиную услугу - внешний РОМ для программ заменили подставой...но это не исключает того что этот проц будет шагать по программе выдавая на шину адреса собственно адреса програмкаунтера!ну и пытаться с шины данных получать собственно машинные комманды

по сути надо сделать развязку шины ввода-вывода и адреса, вешать внешнюю РАМ/РОМ/НОР флеш и вперед!
а порты вводавывода можно проэмулировать например повешать на шину адреса дешифратор на 4 бита вход и енейблом с ноги M-IO которая и говорит что на шине адреса сейчас не адрес памяти а адрес внешнего устройства....сути от этого не меняется...просто другие комманды....ну а после дешифратора на каждом выходе поставить какую-то 16-тибитную защелку которая будет защелкиваться по определенному адресу команды OUT дешифратором...
дальше из этих защелок(читай внешних буферов) загоняеш на какой-нить программируемый счетчик-делитель, на какой-то ГУН через r-2r ЦАП и вот тебе генератор.....кстати...аналогично(только надо защелку развернуть) можно и ВХОД опрашивать ..кнопочки типа....или резюк...эмулируя PIO перебирая разные адреса защелок :)

как-то так в общем....10-ток корпусов и в минималистическом варианте будет работать :)
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Как запустить i8086

Сообщение kras »

А я уже сам посмотрел. Память внутри. И я так понял, что из-за этого команды mov не используются, то есть все надо делать с помощью out, даже если подключать ПЗУ. Но тогда не понял, как действует M/IO#. С процессором, пока, с критическим непониманием решил вопрос. Но я не понял, как происходить мультиплексирование. Учитель вчера рассказывал, что в первом такте из 4 адрес, в 3 - данные, да я так и думал, но у меня то в модели все не так! Либо хэлп, у меня адрес идет много тактовых циклов, а, в зависимости от числа, на выходе я вообще не разбираюсь, что наблюдаю. Кстати, я начал читать редактирование моделей Proteus, а может кто короче объяснить, что делается после того, как нарисована схема? Обязательно ли "группировать" ее элементы? Где я читаю, пишется последовательность действий, а я не могу понять, как в Протеусе работают модели. Это же не VHDL. Что это вообще за язык такой? А, еще такая проблема. RD# всегда "0" на МП при выполнении холостых ходов. Как так? Что прописать, чтобы сделать его нормальным?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Как запустить i8086

Сообщение kras »

Блин. Ну ладно, отправляют скрин. Решил перепрограммировать контроллер клавиатуры и индикации с помощью МП, получилось, но благодаря двойному стробу ALE у меня не защелкивается адрес. Хотя код самый простой:

Код: Выделить всё

org 100h

m1:
mov ax,257
mov dx,257
out dx,ax
jmp m1

ret 
Read синий, что делать?!

Ну ладно, поставил NOT после ALE. А Почему при ax=dx=1 дрыгаются две ножки, как A0, так и A1?
Вложения
Безымянный1.png
(122.44 КБ) 542 скачивания
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»