8086 - проверка без приборов

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

Где купить радиодетали

Post by Stan »

Процессор i8086 (КР1810BM86) интересен мне не был, поскольку требует
достаточно массивной обвески для своего включения. И в этом плане
8088, на мой взгляд, для любительской конструкции даже более приемлем.
Однако, как-то так получилось, что 8086 здесь многих заинтересовал, но как
оказалось не у всех здесь есть приборы для отладки системы на процессоре
8086, поэтому задача сборки и проверки устройства без использования
измерительных приборов, и, в частности, осциллографа показалась мне
даже интересной в спортивном плане.

И даже сначала я планировал и задающий генератор КР1810ГФ84 упрощенно
выполнить на мелочевке, но некоторые разночтения меня притормозили, и,
как выяснилось, внимание им надо было уделить.

Прежде всего - вот эта блок-схема задающего генератора от Intel 8284A:

Image

A ниже - блок-схема задающего генератора КР1810ВМ84:

Image

Меня разница уже тут как-то смутила и не зря: 8248A и КР1810ГФ84 полными
аналогами не являются. Вывод 15 (\ASYNK) генератора 8248A определяет два
режима формирования
сигнала READY, а вывод 15 (TANK) генератора КР1810ГФ84
позволяет подключить резонансный контур и работать на гармонике кварцевого
резонатора
. Т.е. если нет кварца на 16 МГц, то можно включить кварц на
8 МГц, а к выводу TANK подключить резонансный контур на 16 МГц.

Image

Прикидку задающего генератора на мелкой логике я сделал применительно к
структре КР1810ГФ84, но сначала - как проверить его работу без приборов.

На рисунке ниже показана схема проверки задающего генератора:

Image

Мультивибратор на К155ЛА3 формирует меандр в звуковом диапазоне частот.
Его работу на слух контролируем по пьезо-спикеру или высокоомному телефону
типа "Тон" или "Октава" (у меня был последний - 1700 Ом).
Телефон нужен просто, чтобы подобрать генерацию в низкочастотном диапазоне
на слух из интервала 400...1000Гц.
Эта частота "модулирует" (а на самом деле формирует пачки импульсов)
частоту, сформированную задающим генератором КР1810ГФ84, и её можно легко
услышать по китайскому приемнику с частотомером, которых полно в разных
ларьках.

Image

Можно и любым другим приёмником, поскольку у меандра широкий спектр, он
слышен даже в ФМ (ЧМ) диапазоне, по крайней мере включение довольно ощутимо
регистрируется моим приемником, по которому я дома слушаю ФМ станции.
Частоты подходящих для схемы кварцев попадают в диапазон коротких волн с частотой
от 3 МГц (длина волны 100 м) до 30 МГц (длина волны 10 м).

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

Значит, если на частоте резонатора мы слышим из приемника низкочастотный тон
мультивибратора, то задающий генератор работает нормально.
Удивительно, но частотомер китайского приемника точен до последнего знака! :o

Если частота генератора не попадает в диапазон приемника, то ловим её
гармонику - при кварце 8 МГц я слушал тон на 16 МГц.
Генератор устойчиво запускался у меня с кварцами 8, 12, 14.31818, 15.61 МГц.
С кварцем 16.63 МГц - запускался неустойчиво, на осциллограмме видна
модуляция по амплитуде. Возможно, я зря подключил резистор 4.7К ко входу TANK.

Теперь проверяем цепь сброса:

Image

По сути цепью сброса мы включаем и выключаем низкочастотный мультивибратор,
и кнопка RESET работает фактически как телеграфный ключ.
Контролируем работу кнопки и цепей RESET опять же по приемнику.

Далее проверим формирователь сигнала READY, для чего перестроим мультивибратор
на инфранизкую частоту порядка 1 Гц, контролировать которую будем светодиодом.

Image

Если мультивибратор не запускается на низкой частоте, следует подобрать резистор
R2 в диапазоне до 1 кОм.
Если светодиод "моргает" нормально, подключаем выход мультивибратора на вход RDY1,
а выход READY контролируем вентилем DD 1.1 со светодиодом на выходе.
Частота "моргания" должна быть такая же, как и у самого мультивибратора.

Image

Работоспособность по входу RDY2 проверяем аналогично, переключив на него выход
мультивибратора.

Ну и в заключение проверим формирование сигналов CLK и PCLK:

Image

Для этого по выводу F/C отлючаем внутренний генератор, а на вход внешней частоты
EFI - подаем сигнал инфранизкой частоты мультивибратора.
Сигналы CLK и PCLK формируются согласно следующей осциллограме:

Image

CLK составляет 33% от частоты на входе EFI (переключается на каждый 3-й импульс EFI),
а PCLK - составляет половину частоты CLK.

Я не стал фотографировать все эти "эксперименты" - но вот фотография этого последнего:

Image

Светодиоды видны плохо, поскольку под рукой оказались повышенной яркости, а они -
прозрачные, но при работе полностью засвечивают объектив.

Очень удивился, что светодиоды повышенной яркости приемлемо загораются при их
"прозвонке" мультиметром Mastech M830BZ в режиме тестирования диодов с зуммером.
Обычные светодиоды типа АЛ307Б еле "тлеют" при проверке их в этом режиме.

Image

Надеюсь, эти "изыскания" помогут нашим молодым коллегам смелее запустить свои
творения, а я на неделе подключу процессор и попробую также протестировать его
с помощью светодиодов и 155ЛА3.


P.S. При проверке задающего генератора и цепей RESET вход вентиля DD 1.1 следует подключать
к выводу 12 - OSC микросхемы КР1810ГФ84.
На схемах генератора надпись КР1810ВГ84 ошибочна, должно быть, конечно же, - КР1810ГФ84.
User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

КР1810ГФ84 - странный READY

Post by Stan »

Несколько странную картину наблюдаю в формирователе сигнала READY у КР1810ГФ84...

Если верить справочнику Шахнова Т.2 стр. 290, этот узел выполнен вот так:

Image

То есть сигнал, сформированный входной логикой из RDY1, RDY2, \AEN1, \AEN2, должен просто
"проталкиваться" через D-триггер по спаду CLK.

Но при RDY1=1, RDY2=1 и \AEN1=0, \AEN2=0 сигнал на выходе READY наблюдается вот такой:

Image


А при подаче на RDY1 меандра, соответственно, наблюдаются пакеты этих импульсов:

Image

Довольно непонятное поведение простой на вид схемы...

А вот если один из входов RDY1 или RDY2 заземлить, то схема начинает вести себя
в полном соответствии со своей логикой! :o

Либо экземпляр КР1810ГФ84 у меня неудачный, либо неконтакт в макетке этой
беспаечной где-то. :(


P.S. Генератор КР1810ГФ84 производства 90.04, и, кстати говоря, без резисторов по 510 Ом,
подключенных ко входам Х1 и Х2, он ни с одним кварцем не генерирует ничего вообще!
:o
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Посмотрел на реально работающей схеме - как и ожидалось, даже картинку с осциллографа на выходе READY нет смысла приводить, так как это просто единица.

Генератор - CP82C84AZ

Кстати, с самого начала тоже наблюдаю некоторые проблемы с генерацией - чаще всего запускается на какой-то странной частоте (заметно выше), да еще и частота плавает. Потрогаешь пальцем - начинает работать нормально. С резисторами/конденсаторами в цепи кварца не игрался - лень.

P.S. Насчет картинок - скажите, как к сообщению прицепить вложенную картинку, а не ссылку на картинку на другом сайте ???
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Не поленился, и посмотрел на осциллографе еще и процесс формирования READY, все выглядит, как и должно быть:

Image
User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

Post by Stan »

newold86 wrote:Посмотрел на реально работающей схеме - как и ожидалось, даже картинку с осциллографа на выходе READY нет смысла приводить, так как это просто единица.

Генератор - CP82C84AZ
Ну это не удивительно, поскольку у Вас аутентичный CP82C84AZ, а у меня - КР1810ГФ84, купленный на базаре у "дяди Васи", который носил эти микросхемы, видимо, с этого самого 1990 года, когда они были выпущены. :wink:

Но у меня их 4 штуки, все выпущены 90.04 и все ведут себя совершенно идентично.
Возможно, это просто заводской брак, который вынесли вместо мусорки на продажу...

Впрочем, в схемах ХТ эти КР1810ГФ84 должны работать нормально, поскольку RDY2 и \AEN2 в них не используются.
А без них RDY1 и \AEN1 работают совершенно правильно.

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

newold86 wrote:Кстати, с самого начала тоже наблюдаю некоторые проблемы с генерацией - чаще всего запускается на какой-то странной частоте (заметно выше), да еще и частота плавает. Потрогаешь пальцем - начинает работать нормально. С резисторами/конденсаторами в цепи кварца не игрался - лень.
Оригинальный мануал на 8284А в общем-то уделяет достаточно внимания этми "играм" в различных ситуациях...
User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

Схема тестирования КР1810ВМ86

Post by Stan »

Немного задержали меня проблемы с генератором КР1810ГФ84, но самую минималистскую
схему тестирования процессора КР1810ВМ86 я всё-таки доделал:

Image

Идея её уже не раз была озвучена здесь на форуме: на шину данных резисторами
подаются коды 90Н в младшую и старшую половину, что соответствует коду операции
NOP. В результате чего процессор КР1810ВМ86 будет перебирать по кругу 65536
адресов текущего сегмента, поскольку межсегментных переходов он сам при этом
сделать не сможет.

Регистр КР580ИР82 фиксирует старшую часть адреса сегмента А8...А15, и на 4
старших разряда
подключены светодиодные индикаторы, отображающие этот процесс
тестирования.
Большего числа светодиодов, я считаю, не нужно, поскольку младшие адреса
изменяются быстро и визуально этого не зафиксировать.
Конечно, надо бы было притормозить процессор на каждом обращении за кодом
операции схемой, выставляющей активный сигнал READY, но я решил немного
схалтурить и поставил кварц на 1МГц, так что процессоp работает на тактовой
частоте 333КГц, при этом адресные линии А12...А15 изменяются с приемлемой
для наблюдения скорость.

Номиналы резисторов выбраны ориентировочно, исходя из нагрузочной способности
микропроцессора КР1810ВМ86
:
Выходной ток лог."0" - 2mA max при 0.45В
поэтому для ТТЛ - Нагрузочная способность
N =~1 (у ТТЛ - Входной ток лог."0" - 1.6 mA)
Выходной ток лог."1" - 400 uA при 2.4В
Входной ток лог."0"("1") - 10 uA
Image

Image

Я использовал в рисунке часть схемы, которую выкладывал здесь Lavr, поскольку
резать готовое гораздо легче, нежели рисовать самому. :wink:

На плате видно, что деталей там поболее, нежели на схеме, поскольку по этой же
схеме я намереваюсь собрать весь узел процессора.

Здесь в форуме эту схему критиковали и указывали на неверное обозначение М/IO#
на УГО процесора, но это никак не влияет на правильность всей схемы, поскольку
в ней надо лишь исправить обозначения /MWR, /MRD и /IOW, /IOR, поменяв их
местами. В остальном всё совершенно верно и вот почему: в классической схеме от
Intel этот узел решен на Low Shottkey вентилях, поэтому их можно подключить к
одному выводу ЦПУ до 3-х и больше, как видно из схемы (8082 = 580ИР82, тоже LS).

Image

В схеме от Lavr-а можно поставить обычную серию 155 (ЛН1 и ЛА3), а при этом, как
было показано выше, к каждому выходу процессора можно подключить не более одного
входа ТТЛ
, что в схеме и соблюдено. Я взял на себя смелость подправить обозначения
на схеме, чтобы не возникало разночтения.

Image

Ну и последнее, довольно интересное наблюдение: я почему-то думал, что когда
процессор исполняет подряд коды NOP, NOP, NOP, NOP... то этот процесс должен
быть периодическим. Поэтому я был очень удивлен, наблюдая осциллограмму
строба /RD :

Image

Видно, что он следует с разными интервалами... интересно, связано ли это с
чтением кода операции с младшего и старшего байтов, или же это особенность
связана с процессом пополнения конвейера?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

да там вроде как нет конвейера, но зато вроде как имеется микрокод...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

Post by Stan »

Shaos wrote:да там вроде как нет конвейера, но зато вроде как имеется микрокод...
Не ожидал как-то от вас такой безграмотности, при стольких топиках про 8086 CPU...

Image

Очередь команд или конвеер как раз появились в процессорах 8086 - 8088, отчего
в них возникли проблемы с точными временнЫми интервалами исполнения программы
и особенности обращения к портам в точный момент времени.

А микрокод к данному вопросу отношения и вовсе не имеет.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Конвеер таки появился впервые (среди микропроцессоров) в 6502 ;)

А тут какой-то псевдоконвеер судя по картинке - чисто кэш на вычитку инструкций и не более...
Я тут за главного - если что шлите мыло на me собака shaos точка net
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Stan wrote:
newold86 wrote:Кстати, с самого начала тоже наблюдаю некоторые проблемы с генерацией - чаще всего запускается на какой-то странной частоте (заметно выше), да еще и частота плавает. Потрогаешь пальцем - начинает работать нормально. С резисторами/конденсаторами в цепи кварца не игрался - лень.
Оригинальный мануал на 8284А в общем-то уделяет достаточно внимания этми "играм" в различных ситуациях...
Должен заметить, что мануал к оригинальному 8284 рекомендует ставить резисторы, а к моему 82C84 - конденсаторы. Я сейчас просто добавил один конденсатор (22 pF - сколько под руку подвернулось, к одной из ног кварца и на землю) - все вроде стало запускаться стабильно.
User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

Post by Stan »

newold86 wrote:Должен заметить, что мануал к оригинальному 8284 рекомендует ставить резисторы, а к моему 82C84 - конденсаторы. Я сейчас просто добавил один конденсатор (22 pF - сколько под руку подвернулось, к одной из ног кварца и на землю) - все вроде стало запускаться стабильно.
Хорошо, я исправлю эту фразу:
Stan wrote:Оригинальный мануал в общем-то уделяет достаточно внимания этми "играм" в различных ситуациях...
Тем более, что как Вы сами пишете, Вы всё-таки уделили внимание этим "играм", согласно имеющемуся у Вас мануалу на Ваш 82C84. :lol:
Хотя мне встречался вариант, где и к 8284 подключали конденсаторы на землю от кварца, но схема эта не из оригинального мануала на 8284А:

Image
Shaos wrote:Конвеер таки появился впервые (среди микропроцессоров) в 6502
Нe буду обсуждать этот вопрос в топике пpо 8086, у которого действительно есть то, что изображено на блок-схеме, как это не назови.
И я имел в виду, не вызвана ли наблюдающаяся апериодичность осциллограммы сигнала "чтение" загрузкой этого устройства.
Я предполагал, что NOP выполняется, согласно мануалу за 3 такта, и я ожидал увидеть сигнал "чтение" с интервалом в 3 такта, а увидел вот это:

Image

что меня удивило, и вызвало вопросы.


Сегодня по пути с работы зашел в магазин электроники и неожиданно для себя обнаружил интересную БИС, о которой слышал, но не видел, и которая была всего одна в наличии:

81C55=M81C55-5 (КР1821РУ55) - это порт типа ВВ55 с укороченным С, таймер и 256х8 байт памяти на одном кристалле.

На этих "беспаечных" макетках место расходуется очень непродуктивно при всём их удобстве, так что может быть и пригодится мне этот "коктейль" 3 в одном.
Last edited by Stan on 05 Dec 2014 09:58, edited 1 time in total.
User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

Post by Stan »

В общем-то в своих предположениях, что сигнал "чтения" должен быть периодичным, я основывался вот на чем:
МИКРОПРОЦЕССОР INTEL 8086 wrote:Команды всегда выбираются из памяти как слова, независимо от четности или нечетности адреса, по которому производится чтение команды.
Слово - две последовательные ячейки памяти, которые используются для запоминания 16-разрядных данных (слова данных), причем младшие восемь разрядов всегда хранятся в ячейке памяти с меньшим адресом, а старшие - с большим.
При адресации 16-разрядных данных указывается адрес первой ячейки слова памяти. Слово памяти может располагаться в памяти как по четному, так и нечетному адресу. Чтение (запись) данных из слова памяти по четному адресу осуществляется за одно обращение к памяти, а по нечетному - за два обращения.
Для достижения максимальной производительности слова и двойные слова данных должны размещаться в памяти по четным адресам.
Шинный интерфейс инициирует выборку из памяти следующего командного слова, когда в очереди оказываются два свободных (пустых) байта.
Я подставляю ему на ШД слово 9090Н (NOP,NOP). Процессор "набивает" свою 6-байтную очередь команд словами 9090Н и начинает их выполнять.
Он так и делает /BHE - активен, я посмотрел.
После выполения двух последовательных NOP,NOP "в очереди оказываются два свободных (пустых) байта" и "Шинный интерфейс" должен взять ещё два 90Н,90Н из памяти в очередь и т.д.
Т.е. всё расположено словами по четным адресам, и процесс чтения памяти должен был бы быть периодическим.
Но осциллограмма этому вроде как противоречит... либо я её как-то неверно истолковываю... :(


newold86 - у Вас, видимо, и сам процессор х86 аутентичный зарубежный, Вы не взглянете, как он выполняет подряд NOP,NOP,NOP,NOP... по осциллографу?
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

Смогу посмотреть, в лучшем случае, послезавтра
User avatar
Stan
Banned
Posts: 397
Joined: 04 Jan 2013 10:09
Location: 95.24.178.158

Post by Stan »

Shaos wrote:А тут какой-то псевдоконвеер судя по картинке - чисто кэш на вычитку инструкций и не более...
Но в описании звучит следующее:
В процессорах 8086 и 8088 применена конвейерная архитектура, позволяющая выполнять выборку кодов инструкций из памяти и их декодирование во время выполнения внутренних операций. Конвейер повышает производительность процессора за счет сокращения времени простоя его операционных узлов. Конвейер процессора 8086 имеет 6-байтную внутреннюю очередь инструкций. Блок предварительной выборки при наличии двух свободных байт в очереди старается ее заполнить в то время, когда внешняя шина процессора не занята операциями обмена. Очередь у процессора 8088 сокращена до 4 байт, а предварительная выборка выполняется уже при наличии одного свободного байта. Эти отличия оптимизируют конвейер с учетом разрядности шины данных. Очередь обнуляется при выполнении любой команды передачи управления, даже при переходе на следующий адрес. Этим свойством часто пользуются при программировании управления устройствами ввода/вывода, требующими задержки между соседними операциями обмена.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Post by newold86 »

newold86 wrote:Смогу посмотреть, в лучшем случае, послезавтра
Не выдержал, встал и посмотрел:

Image


Процессор - Siemens 8086

Кстати, BHE все время находится в низком (активном) уровне, вообще без переходов в высокий. Я даже засомневался, но с прошивкой для мигания светодиодом BHE периодически сбрасывается.