nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 18 Oct 2019 23:55



Reply to topic  [ 42 posts ]  Go to page 1, 2, 3  Next
8086 - проверка без приборов 
Author Message
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Процессор 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.


23 Nov 2014 21:32
Profile
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Несколько странную картину наблюдаю в формирователе сигнала 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


24 Nov 2014 07:29
Profile
Devil

Joined: 30 Nov 2013 12:08
Posts: 668
Location: WWW
Reply with quote
Post 
Посмотрел на реально работающей схеме - как и ожидалось, даже картинку с осциллографа на выходе READY нет смысла приводить, так как это просто единица.

Генератор - CP82C84AZ

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

P.S. Насчет картинок - скажите, как к сообщению прицепить вложенную картинку, а не ссылку на картинку на другом сайте ???


24 Nov 2014 10:40
Profile
Devil

Joined: 30 Nov 2013 12:08
Posts: 668
Location: WWW
Reply with quote
Post 
Не поленился, и посмотрел на осциллографе еще и процесс формирования READY, все выглядит, как и должно быть:

Image


24 Nov 2014 11:58
Profile
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Post 
newold86 wrote:
Посмотрел на реально работающей схеме - как и ожидалось, даже картинку с осциллографа на выходе READY нет смысла приводить, так как это просто единица.

Генератор - CP82C84AZ

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

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

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

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


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

Оригинальный мануал на 8284А в общем-то уделяет достаточно внимания этми "играм" в различных ситуациях...


24 Nov 2014 14:38
Profile
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Немного задержали меня проблемы с генератором КР1810ГФ84, но самую минималистскую
схему тестирования процессора КР1810ВМ86 я всё-таки доделал:

Image

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

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

Номиналы резисторов выбраны ориентировочно, исходя из нагрузочной способности
микропроцессора КР1810ВМ86
:
Quote:
Выходной ток лог."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

Видно, что он следует с разными интервалами... интересно, связано ли это с
чтением кода операции с младшего и старшего байтов, или же это особенность
связана с процессом пополнения конвейера?


24 Nov 2014 21:53
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18032
Location: Colorado
Reply with quote
Post 
да там вроде как нет конвейера, но зато вроде как имеется микрокод...

_________________
:eugeek: https://twitter.com/Shaos1973


24 Nov 2014 21:57
Profile WWW
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Post 
Shaos wrote:
да там вроде как нет конвейера, но зато вроде как имеется микрокод...

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

Image

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

А микрокод к данному вопросу отношения и вовсе не имеет.


24 Nov 2014 22:26
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18032
Location: Colorado
Reply with quote
Post 
Конвеер таки появился впервые (среди микропроцессоров) в 6502 ;)

А тут какой-то псевдоконвеер судя по картинке - чисто кэш на вычитку инструкций и не более...

_________________
:eugeek: https://twitter.com/Shaos1973


24 Nov 2014 23:06
Profile WWW
Devil

Joined: 30 Nov 2013 12:08
Posts: 668
Location: WWW
Reply with quote
Post 
Stan wrote:
newold86 wrote:
Кстати, с самого начала тоже наблюдаю некоторые проблемы с генерацией - чаще всего запускается на какой-то странной частоте (заметно выше), да еще и частота плавает. Потрогаешь пальцем - начинает работать нормально. С резисторами/конденсаторами в цепи кварца не игрался - лень.

Оригинальный мануал на 8284А в общем-то уделяет достаточно внимания этми "играм" в различных ситуациях...


Должен заметить, что мануал к оригинальному 8284 рекомендует ставить резисторы, а к моему 82C84 - конденсаторы. Я сейчас просто добавил один конденсатор (22 pF - сколько под руку подвернулось, к одной из ног кварца и на землю) - все вроде стало запускаться стабильно.


25 Nov 2014 00:03
Profile
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Post 
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 10:58, edited 1 time in total.



25 Nov 2014 08:31
Profile
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Post 
В общем-то в своих предположениях, что сигнал "чтения" должен быть периодичным, я основывался вот на чем:
МИКРОПРОЦЕССОР INTEL 8086 wrote:
Команды всегда выбираются из памяти как слова, независимо от четности или нечетности адреса, по которому производится чтение команды.
Слово - две последовательные ячейки памяти, которые используются для запоминания 16-разрядных данных (слова данных), причем младшие восемь разрядов всегда хранятся в ячейке памяти с меньшим адресом, а старшие - с большим.
При адресации 16-разрядных данных указывается адрес первой ячейки слова памяти. Слово памяти может располагаться в памяти как по четному, так и нечетному адресу. Чтение (запись) данных из слова памяти по четному адресу осуществляется за одно обращение к памяти, а по нечетному - за два обращения.
Для достижения максимальной производительности слова и двойные слова данных должны размещаться в памяти по четным адресам.
Шинный интерфейс инициирует выборку из памяти следующего командного слова, когда в очереди оказываются два свободных (пустых) байта.

Я подставляю ему на ШД слово 9090Н (NOP,NOP). Процессор "набивает" свою 6-байтную очередь команд словами 9090Н и начинает их выполнять.
Он так и делает /BHE - активен, я посмотрел.
После выполения двух последовательных NOP,NOP "в очереди оказываются два свободных (пустых) байта" и "Шинный интерфейс" должен взять ещё два 90Н,90Н из памяти в очередь и т.д.
Т.е. всё расположено словами по четным адресам, и процесс чтения памяти должен был бы быть периодическим.
Но осциллограмма этому вроде как противоречит... либо я её как-то неверно истолковываю... :(


newold86 - у Вас, видимо, и сам процессор х86 аутентичный зарубежный, Вы не взглянете, как он выполняет подряд NOP,NOP,NOP,NOP... по осциллографу?


25 Nov 2014 12:51
Profile
Devil

Joined: 30 Nov 2013 12:08
Posts: 668
Location: WWW
Reply with quote
Post 
Смогу посмотреть, в лучшем случае, послезавтра


25 Nov 2014 13:00
Profile
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Post 
Shaos wrote:
А тут какой-то псевдоконвеер судя по картинке - чисто кэш на вычитку инструкций и не более...

Но в описании звучит следующее:
Quote:
В процессорах 8086 и 8088 применена конвейерная архитектура, позволяющая выполнять выборку кодов инструкций из памяти и их декодирование во время выполнения внутренних операций. Конвейер повышает производительность процессора за счет сокращения времени простоя его операционных узлов. Конвейер процессора 8086 имеет 6-байтную внутреннюю очередь инструкций. Блок предварительной выборки при наличии двух свободных байт в очереди старается ее заполнить в то время, когда внешняя шина процессора не занята операциями обмена. Очередь у процессора 8088 сокращена до 4 байт, а предварительная выборка выполняется уже при наличии одного свободного байта. Эти отличия оптимизируют конвейер с учетом разрядности шины данных. Очередь обнуляется при выполнении любой команды передачи управления, даже при переходе на следующий адрес. Этим свойством часто пользуются при программировании управления устройствами ввода/вывода, требующими задержки между соседними операциями обмена.


25 Nov 2014 13:09
Profile
Devil

Joined: 30 Nov 2013 12:08
Posts: 668
Location: WWW
Reply with quote
Post 
newold86 wrote:
Смогу посмотреть, в лучшем случае, послезавтра


Не выдержал, встал и посмотрел:

Image


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

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


25 Nov 2014 14:42
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 42 posts ]  Go to page 1, 2, 3  Next

Who is online

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