PC-совместимый компьютер на К1810

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

User avatar
renych
Writer
Posts: 21
Joined: 15 Nov 2013 05:34
Location: Москва

Re: PC-совместимый компьютер на К1810

Post by renych »

Пришлось конечно повозиться с этой ВТ3, но в итоге заработало ОЗУ :rotate:
Vic3Dexe wrote:А вы попробуйте его на штатной частоте пустить, и пусть часик поработает. У меня на шлейфах первые инструкции тоже вроде выбирались нормально - а дальше срыв в рандомный момент от пары секунд до 15-20 минут
newold86 wrote:Ну да, я то тоже изрядно помучился со случайными сбоями в конструкции со шлейфами
На штатной частоте действительно улетает "в космос" через какое-то время. Но у меня теперь есть
дебагер, который умеет понижать частоту CPU :) Сейчас я посылаю сигнал RDY 1000 раз
в секунду, т.о. проц работает на частоте 1KHz, последний час пока без сбоев. Наверняка может
и быстрее, но мне этого достаточно. Вообще вся эта модульная конструкция со шлейфами
была задумана как отладочная, чтобы отработать идеи, прежде чем воплотить их в
одноплатовом решении. По частям всё же проще отлаживать, коммутировать и переделывать )
newold86 wrote: Только мне кажется, что подход какой-то сложный выбран :) (контроллер памяти и т.д.).
На самом деле я просто не увидел альтернативы КДП. Статическое ОЗУ потребовало бы очень
много микросхем (я хочу 640К в итоге). Возможно когда прикручу ПДП, буду регенерировать ОЗУ
как в XT, через прямой доступ в память.
Хотя может быть щас есть уже всякая Flash память или DRAM со встроенной регенерацией.
Какой бы Вы подход выбрали? )

Теперь надо написать первую функцию будущего BIOS - тест ОЗУ. Пока не понятно куда выводить
результат. Наверное через порты I/O на LED индикаторы.
И вопрос - имеет значение, какой ассемблер использовать? Masm вроде умеет делать только exe,
но у него есть утилита ExeToBin. Сейчас я пишу инструкции в ПЗУ прям в шестнадцатеричных
кодах, но это совсем хардкор )
Как то пытался скомпилировать исходники биоса XT, перепробовал все версии Masm`а,
с первой по шестую, но ни одна не захотела компилировать.
Нет процессора кроме x86, и Фон Нейман пророк его.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PC-совместимый компьютер на К1810

Post by Lavr »

renych wrote:
Vic3Dexe wrote:У меня на шлейфах первые инструкции тоже вроде выбирались нормально - а дальше срыв в рандомный момент от пары секунд до 15-20 минут
newold86 wrote:Ну да, я то тоже изрядно помучился со случайными сбоями в конструкции со шлейфами
На штатной частоте действительно улетает "в космос" через какое-то время.
Интересно... а если паять шлейф "земля"-"сигнал"-"земля"-"сигнал"-... тоже всё улетать будет? :o
Что-то я не помню, чтобы контроллеры IDE и HDD "жаловались" на такие шлейфы... :-?
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: PC-совместимый компьютер на К1810

Post by Vic3Dexe »

Сейчас я посылаю сигнал RDY 1000 раз
в секунду, т.о. проц работает на частоте 1KHz
Нннууу... если совсем в общем... то да, килогерц. А тактовая какая? Т.е. что заходит на ногу CLK?
По частям всё же проще отлаживать, коммутировать и переделывать
Поверьте, я тоже так думал. Пока не загруз по оси в шлейфах. Такая "модульность" привносит кучу своих багов, помимо схемных. Так что непонятно с чем боремся.
Нужно соединить несколько плат? Меззонин (платы друг над другом) или любой другой вид КОРОТКИХ соединений. Дабы снизить наводки.
Статическое ОЗУ потребовало бы очень много микросхем (я хочу 640К в итоге).
Простите, что?
Статика на 512к, 1М, 2М, 4М - вполне доступны. Тайминги - 10/12/15/45/55/70 нс. Производителей несколько - Cypress, Alliance, возможно, гнусмас (у нас их просто нет). Выбирай что хочешь, как грицца. И к черту регенерацию, городить DRAM для таких объемов смысла нет при нынешних технологиях.
Нет, если стоит вопрос аутентичности... :)
Какой бы Вы подход выбрали?
Мы, царь Николай Второй :), выбрали Cypress 1Mx16 (итого 2 метра) 10 нс. Корпус TSOP какой-то, вполне паябельный (0.8 шаг вроде). Управления - минимум, т.к. на потребление плевать, чип выбран постоянно. Можно подавать /WE, не снимая /OE (она сама понимает, что в нее пишут, и переключается на вход). Короче - сказка, по сравнению со штабелями DRAM и пачками CAS/RAS.
Минус один - сравнительно недешево, но я брал 10 нс (надо было), 70 нан будет дешевле.
Пока не понятно куда выводить результат
ISA-8 + VGA? Для видяхи вроде все есть, DMA ей не надо, IRQ тоже.
И вопрос - имеет значение, какой ассемблер использовать?
Для чего?
Перекомпиляция чего-либо - лучше брать то, чем оно предположительно должно собираться.
Писать свое с нуля или переписывать под себя - fasm. Без вариантов.
Что-то я не помню, чтобы контроллеры IDE и HDD "жаловались" на такие шлейфы...
Чес гря, я сам в растерянности.
Учитывая, что схема с кучей земель в шлейфе появилась с введением UDMA-66+, и что именно в этой версии ATA появилась коррекция (!) и отлов (!!) ошибок, то я вообще не понимаю, как оно работало до того.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: PC-совместимый компьютер на К1810

Post by jdigreze »

Vic3Dexe wrote:Чес гря, я сам в растерянности.
Учитывая, что схема с кучей земель в шлейфе появилась с введением UDMA-66+, и что именно в этой версии ATA появилась коррекция (!) и отлов (!!) ошибок, то я вообще не понимаю, как оно работало до того.
А оно и не молотило в шлейф перманентно. Там самый жуткий обмен был, когда задействован DMA, но пачки передачи были довольно короткими. И не забываем, что HDD мог просто выдать BUSY, если он чего-то не успевает, или ERROR, если чего-то не "понял".
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Re: PC-совместимый компьютер на К1810

Post by VituZz »

renych wrote:Пока не понятно куда выводить результат. Наверное через порты I/O на LED индикаторы.
Порт 80h вроде как для этих целей предназначен - "диагностический регистр".
User avatar
renych
Writer
Posts: 21
Joined: 15 Nov 2013 05:34
Location: Москва

Re: PC-совместимый компьютер на К1810

Post by renych »

Vic3Dexe wrote:
Сейчас я посылаю сигнал RDY 1000 раз
в секунду, т.о. проц работает на частоте 1KHz
Нннууу... если совсем в общем... то да, килогерц. А тактовая какая? Т.е. что заходит на ногу CLK?
На CLK приходит тактовый сигнал с ГФ84. А сигналом RDY я "придерживаю" процессор. Получается 1KHz - это не тактовая частота, а частота циклов шины :)
Vic3Dexe wrote:Поверьте, я тоже так думал. Пока не загруз по оси в шлейфах. Такая "модульность" привносит кучу своих багов, помимо схемных.
Суть в том, что это моё первое цифровое устройство, после мигания светодиодом на ATmega. Понимания, как работает компьютер на аппаратном
уровне не было никакого и продумать схему целиком, не говоря уже о том, чтобы собрать всё на одной плате и с первого раза - было чем то фантастическим :)
А так, я собрал сначала процессорный модуль с генератором и формирователями шин (что уже было непросто), потом на макетке прицепил к нему ПЗУ,
поигрался, понял, как это должно работать и только после этого пришло понимание, каким должен быть модуль памяти.
И всё равно было столько косяков, что пришлось перерезать дорожки и паять перемычки.
Кстати, когда я её включил первый раз - по классике жанра что-то щёлкнуло, заискрилось и пошёл дым :ebiggrin: На одной из фоток видно в панельке
под ВТ3 вскипевшую дорожку )
В общем на тот момент идея со шлейфами мне казалась наиболее очевидной. Да и теперь я считаю, что для обучения - это оптимальный вариант,
тем более что на пониженной частоте шлейфы совсем не мешают.
Меня больше волнует вопрос - как проверить ОЗУ, потому что есть подозрения, что оно работает нестабильно.
Vic3Dexe wrote:Статика на 512к, 1М, 2М, 4М - вполне доступны. Тайминги - 10/12/15/45/55/70 нс. Производителей несколько - Cypress, Alliance, возможно, гнусмас (у нас их просто нет). Выбирай что хочешь, как грицца. И к черту регенерацию, городить DRAM для таких объемов смысла нет при нынешних технологиях.
...
Можно подавать /WE, не снимая /OE (она сама понимает, что в нее пишут, и переключается на вход). Короче - сказка, по сравнению со штабелями DRAM и пачками CAS/RAS.
Эх, где Вы раньше были, две страницы назад! Меньше всего хотелось возиться с КДП, а под статикой мне мерещились 537РУ8, объёмом 2Кб.
Теперь как грится - поздняк метаться ) Наверное в итоговой версии своего суперкомпьютера я поставлю современный чип памяти. Что ж, по кр. мере
я приобрёл опыт :eugeek:
Vic3Dexe wrote:ISA-8 + VGA? Для видяхи вроде все есть
Видео у меня следующий этап, после отладки памяти. Раз такое дело сразу спрошу, чтоб не получилось как с КДП - у меня есть два чипа:
КР580ВГ75 и км1809вг6 (аналог Motorola 6845)
Что будет проще на первом этапе - реализовать видео на одной из этих микросхем или использовать ISA видеокарту?
Но тогда нужно реализовывать ISA шину (или достаточно отдельных сигналов)?
Нет процессора кроме x86, и Фон Нейман пророк его.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: PC-совместимый компьютер на К1810

Post by Vic3Dexe »

Меня больше волнует вопрос - как проверить ОЗУ, потому что есть подозрения, что оно работает нестабильно.
Ну у вас же есть отладчик с кучей индикации. Зажигайте светодиод при ошибке, программу вешайте в вечный цикл. Адрес забирайте... откуда вы его обычно забираете. В чем проблема-то?
Эх, где Вы раньше были, две страницы назад!
А в гугле вас забанили? :)
использовать ISA видеокарту
Это я и имел ввиду. Посмотрите схему той же CGA и сколько там корпусов. Лучше готовое взять.
И не забываем, что HDD мог просто выдать BUSY, если он чего-то не успевает, или ERROR, если чего-то не "понял".
Это понятно, я о контроле потока данных (например, при чтении сектора). У АТА-33 и ниже вроде нет никаких механизмов типа контроля четности и т.п.
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: PC-совместимый компьютер на К1810

Post by jdigreze »

Vic3Dexe wrote:Это понятно, я о контроле потока данных (например, при чтении сектора). У АТА-33 и ниже вроде нет никаких механизмов типа контроля четности и т.п.
Точно не подскажу, литература прибрана далеко, но, по моей дырявой памяти, контроль четности был. А иначе, кой смысл гонять туда-сюда данные, если они не верифицируемы на приёмной стороне силы?
renych wrote:Эх, где Вы раньше были, две страницы назад! Меньше всего хотелось возиться с КДП, а под статикой мне мерещились 537РУ8, объёмом 2Кб.
62256 не попадались? ;) 32Кб в одном корпусе. На 16 бит = 2 м/с (DIP28) = 64 Кб. А это уже есть где по-экспериментировать! ;)
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: PC-совместимый компьютер на К1810

Post by Vic3Dexe »

jdigreze wrote:Точно не подскажу, литература прибрана далеко
jdigreze wrote:А иначе, кой смысл гонять туда-сюда данные, если они не верифицируемы
Увы, я последний раз стандарт АТА тоже вдумчиво читал весьма давно. Даже не помню версию, то ли 5, то ли 6. Восьмую пролистывал на предмет нововведений. А потом t13.org превратилась в t13.com. Повбывав бы...
Однако в памяти отложилось утверждение господина Гука о том, что контроль и коррекция ошибок появились только при введении UDMA. Не верить ему оснований лично у меня нет - в остальном его выкладки адекватны большей частью, насколько могу судить.
Если совсем честно, то Lavr открыл мне глаза. Если оно работает на 33 Mbps, и умудряется гонять по шлейфу гигабайты без потерь, то есть какой-то секрет...
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: PC-совместимый компьютер на К1810

Post by jdigreze »

Порыл немного интернет.
Vic3Dexe wrote:Однако в памяти отложилось утверждение господина Гука о том, что контроль и коррекция ошибок появились только при введении UDMA
CRC действительно появился только в ATA-4 (33).

Но:
http://novorosiysk.lastdiplom.ru/referats/registry-ustrojstv-ata/ wrote:Блок управляющих регистров используется для управления устройством и получения байта его состояния. На действительность содержимого регистров командного блока и альтернативного регистра состояния указывает нулевое значение бита BSY регистра состояния. Если устройство под- держивает управление энергопотреблением, в спящем режиме Sleep mode со­держимое этих регистров недействительно.
Регистр состояния отражает текущее состояние устройства в процессе вы­полнения команд. Чтение регистра состояния разрешает дальнейшее изменение его бит и сбрасывает запрос аппаратного прерывания.

Бит 7 — BSY (Busy) указывает на занятость устройства. При его единичном значении устройство игнорирует попытки записи в командный блок регистров, а чтение этих регистров дает неопределенный результат (их значение устрой­ством может быть изменено в любой момент). При нулевом значении этого бита регистры командного блока доступны, а устройство может изменять только значение бит IDX, DRDY, DF, DSC и CORR. Бит устанавливается под действием ап­паратного и программного сброса устройства, а также по получении команды. Бит может устанавливаться и на кратковременный интервал, так что хост может и не заметить этого факта.

Бит 6 — DRDY (Device Ready) указывает на готовность устройства к восприятию любых кодов команд. Если состояние бита изменилось, оно не может изменить­ся обратно до чтения регистра состояния. При нулевом значении бита устрой­ство воспринимает только команды EXECUTE DEVICE DIAGNOSTIC и INITIALIZE DEVICE PARAMETERS, прекращая выполнение текущей команды и сообщая об этом фла­гом ABRT в регистре ошибок и ERR в регистре состояния. Прием других команд при нулевом бите DRDY приводит к непредсказуемым результатам.

Бит 5 — DF (Device Fault) — индикатор отказа устройства.

Бит 4 — DSC (Device Seek Complete) — индикатор завершения поиска трека.

Бит 3 — DRQ (Data Request) — индикатор готовности к обмену словом или байтом данных.

Бит 2 — CORR (Corrected Data) — индикатор исправленной ошибки данных.

Бит 1 — IDX (Index) — индекс, трактуется специфично для каждого произ­водителя.

Бит 0 — ERR (Error) — индикатор ошибки выполнения предыдущей операции. Дополнительная информация содержится в регистре ошибок. Если установился бит ERR, до приема следующей команды, программного или аппаратного сброса устройство не изменит состояние этого бита, а также регистра ошибок, регистра количества секторов и регистров цилиндра, головки и номера сектора.
Вот в этих вот курсивных тонкостях и кроется высокая стабильность обмена данными с HDD, и чего очень сложно добиться, отделяя процессор от памяти и прочих on-board устройств.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PC-совместимый компьютер на К1810

Post by Lavr »

Vic3Dexe wrote:Если совсем честно, то Lavr открыл мне глаза. Если оно работает на 33 Mbps, и умудряется гонять по шлейфу гигабайты без потерь, то есть какой-то секрет...
Да какой там секрет - когда чередуются "земля"-"сигнал" это получается волноведущая линия.
Типа полосковой - некоторый аналог коаксиала.
И если линия согласована на концах нагрузкой, равной её волновому сопротивлению, то через
неё всё замечательно прёт без отражений... - такой смысл примерно...
iLavr
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: PC-совместимый компьютер на К1810

Post by newold86 »

Насчет шлейфов - так как я изрядно повозился, пытаясь сначала найти, а потом решить проблему, то приобрел какой-никакой, но все же опыт (теоретический и практический).

Так вот - основная проблема не в наводках, а в отражениях. Похоже, при минимально правильном терминировании (а оно во всех этих контроллерах/дисках есть) проблема убирается практически полностью.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: PC-совместимый компьютер на К1810

Post by Vic3Dexe »

jdigreze wrote:Порыл немного интернет.
Vic3Dexe wrote:Однако в памяти отложилось утверждение господина Гука о том, что контроль и коррекция ошибок появились только при введении UDMA
CRC действительно появился только в ATA-4 (33).
Скорость или версия протокола тут ни при чем. CRC существует только для UDMA-режимов:
ATA/ATAPI-5 Revision 2 13 December 1999 wrote:3.1.21 CRC: Cyclical Redundancy Check used for the Ultra DMA protocol to check the validity of each Ultra DMA burst transfered.
Что касается регистра, о котором вы говорите (биты BSY и пр.), он говорит только о состоянии выполнения команды устройством АТА, но не о том, были ли ошибки в фазе передачи данных (которой у команды может и не быть). А так как электрически в шлейфе бита четности нет, у хоста или устройства НЕТ механизмов контроля достоверности передаваемых данных.
Lavr wrote:Да какой там секрет - когда чередуются "земля"-"сигнал" это получается волноведущая линия.
Только в 40-проводном шлейфе нету этого чередования.
newold86 wrote:Так вот - основная проблема не в наводках, а в отражениях. Похоже, при минимально правильном терминировании
А вот это очень может быть.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: PC-совместимый компьютер на К1810

Post by Lavr »

Vic3Dexe wrote:
Lavr wrote:Да какой там секрет - когда чередуются "земля"-"сигнал" это получается волноведущая линия.
Только в 40-проводном шлейфе нету этого чередования.
Так поэтому его и не используют там, где он уже не годится... :mrgreen:
iLavr
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: PC-совместимый компьютер на К1810

Post by jdigreze »

Vic3Dexe wrote:А так как электрически в шлейфе бита четности нет, у хоста или устройства НЕТ механизмов контроля достоверности передаваемых данных.
Поразмыслив на досуге, пришёл к тому же выводу.
Vic3Dexe wrote:А вот это очень может быть.
Пожалуй, да.