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

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

Сообщение Tacho »

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

Сообщение dinets »

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

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

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

Сообщение Tolmi »

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

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

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

Сообщение 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.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

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

Сообщение Tolmi »

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

Сообщение kras »

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

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

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


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

Сообщение 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 КБ) 276 скачиваний
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина

Сообщение Tolmi »

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

Сообщение kras »

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

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

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

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

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

b0 05 88 06 05 00 eb f8.

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

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

Сообщение Tolmi »

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

Сообщение clawham »

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

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

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

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

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

Сообщение kras »

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

Сообщение 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 КБ) 544 скачивания
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Закрыто

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