nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 04:18



Reply to topic  [ 60 posts ]  Go to page 1, 2, 3, 4  Next
PC1-88 - одноплатный компьютер на 8088 
Author Message
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
Так как собрал все, что хотел в свое время собрать, причем в разных вариациях, возникло желание сделать что-то свое. В результате появился проект одноплатного компьютера на 8088, частично совместимого с IBM PC.

На борту имеется:

8088 - тактируется от отдельного кварца, поэтому какой поставишь (в пределах допустимого для конкретного процессора), такая тактовая и будет
512К SRAM
32К ROM
8255 x 2
8254
PS/2 разъем для клавиатуры
Разъем для SD карт

Attachment:
pc1-board.jpg
pc1-board.jpg [ 278.8 KiB | Viewed 14070 times ]


Видеоадаптер располагается на этой же плате:
Выход - VGA разъем
Сигнал - VGA 1024x768
Разрешение - 512x384 (т.е. каждая точка отображена 4-мя точками развертки дисплея)
Цветность - 16 странных цветов (4 бита на точку - WRGB, где W - нечто типа сигнала яркости)
Видео ОЗУ - SRAM 128K (используется 96K), при обращении процессора к адаптеру на экране снег, так как прозрачный доступ решил не делать

Attachment:
pc1-screen.jpg
pc1-screen.jpg [ 166.12 KiB | Viewed 14070 times ]


Кроме процессорного комплекта, все остальное - серия 74xx (видео - в основном 74Fxx), плюс одна МС согласователя уровней для SD карты (можно было и резисторами обойтись)

Смысл был именно в НЕ использовании CPLD/FPGA/PAL/GAL вообще.

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

Так как схему рисовал за два вечера, после запуска выяснилось, что немного напутал в управлении мультиплексором видеоданных - вместо WrBrGrRrWlBlGlRl (две точки на байт) получилось WrWlGrGlBrBlRrRl. Так как за время ожидания платы из производства написал Int 10, сейчас думаю - переписывать ли Int 10, или же просто разрезать дорожку и припаять проводок. Остальное вроде работает.


19 Jan 2016 01:53
Profile
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Хотелось бы подробнее узнать самый интригующий момент - организацию видеопамяти и счётчиков.


19 Jan 2016 02:14
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
newold86 wrote:
...сейчас думаю - переписывать ли Int 10, или же просто разрезать дорожку и припаять проводок.


Блин, ситуация хуже, чем я думал вначале - биты перепутаны еще круче, а резать нужно не 1, а 8 дорожек...


19 Jan 2016 02:39
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
newold86 wrote:
На борту имеется:

8088 - тактируется от отдельного кварца, поэтому какой поставишь (в пределах допустимого для конкретного процессора), такая тактовая и будет
512К SRAM
32К ROM
8255 x 2
8254
PS/2 разъем для клавиатуры
Разъем для SD карт


Упустил еще 8259, на который приходят int 08 от таймера, 09 от клавиатуры и еще прерывания от строчных и кадровых гасящих импульсов.


19 Jan 2016 09:25
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Ух класс! Я думал такое сделать, но решил, что с моим счастьем на FPGA будет проще (и был прав! На переделках уже разорился бы нахрен).
Терь конкретнее:
- не вижу на плате DAC, откуда VGA сигнал?
- откуда такое странное разрешение? Вангую, что из-за опорного кварца.
- так 4 бита на точку (IRGB) или 8 бит на точку (irgbIRGB)?

И самое главное (так и не понял) - оно PC/XT/x86 совместимое или нет?

Да, и RGB попутаны, мне кажется. Я не знаю, как генерится картинка на скрине, но если по порядку цветов, то синий должен идти после черного. Хотя... третьим (с нуля) цветом должна быть сумма 1 и 2 (т.е. у вас R+B = magenta), а на картинке зеленый... Не, может, так в коде задумано, мне отсюда не видно :)

ps SMD чего не юзаете? Удобнее же паять...

pps
Quote:
Хотелось бы подробнее узнать самый интригующий момент - организацию видеопамяти и счётчиков.

Это дело техники, я пока принципиально не понимаю, как там видеосигнал генерится.


19 Jan 2016 13:31
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
Vic3Dexe wrote:
...но решил, что с моим счастьем на FPGA будет проще...


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

Vic3Dexe wrote:
- не вижу на плате DAC, откуда VGA сигнал?


Ну как же так, есть там DAC - всем DAC'am DAC ! Целых 6 резисторов и 3 диода, прямо у VGA разъема :)

Vic3Dexe wrote:
- откуда такое странное разрешение? Вангую, что из-за опорного кварца.


Кварц был вторичен - первичным был выбор разрешения. Мысли были следующие:

- стандартная VGA развертка для монитора
- поместиться максимум в 128К видеопамяти
- с ОЧЕНЬ большим запасом вписаться в быстродействие всех компонентов, чтобы не возиться еще и с проблемами задержек, гонок и т.д.
- в строке количество точек "двоично" круглое для упрощения схемотехники
- получить разрешение получше, чем CGA

Vic3Dexe wrote:
- так 4 бита на точку (IRGB) или 8 бит на точку (irgbIRGB)?


4 бита на точку, т.е. 1 байт на 2 точки - IRGB.

Vic3Dexe wrote:
И самое главное (так и не понял) - оно PC/XT/x86 совместимое или нет?


Очень ограниченно. Основная проблема - видео не совместимо ни с чем, причем есть только графический режим. Через свой Int 10, естественно, можно все гонять, но напрямую с видеобуфером ничто существующее работать не будет. Думал сделать перехват обращений к видеопамяти через NMI (типа как в Поиске, если я правильно понимаю), но не смог для себя найти объяснение, зачем мне это нужно :)

Следующее - так как коды AT клавиатуры попадают в BIOS (говорить об PC AT) оттранслированными в (грубо говоря) XT-шные коды, а у меня отдельного контроллера клавиатуры нет, то напрямую с клавиатурой стандартные программы тоже не будут работать (если только не найти XT-шную клавиатуру). Также не стал делать перекодировку через прерывания.

Int 13 используется мой, который был написан для PC XT на FPGA.

Имеющиеся порты сидят на стандартных IBM PC адресах и работа с ними практически идентична.

Vic3Dexe wrote:
Да, и RGB попутаны, мне кажется. Я не знаю, как генерится картинка на скрине, но если по порядку цветов, то синий должен идти после черного. Хотя... третьим (с нуля) цветом должна быть сумма 1 и 2 (т.е. у вас R+B = magenta), а на картинке зеленый... Не, может, так в коде задумано, мне отсюда не видно :)


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

Да и я с самого начала сказал, что цвета странные из-за особенностей моего супер-DACа :)

Vic3Dexe wrote:
ps SMD чего не юзаете? Удобнее же паять...


Вот так люди, начав с SMD, потом к FPGA и скатываются ! :) Для пущей винтажности, да и никогда хотя бы минимально серьезно с SMD не работал...


19 Jan 2016 14:12
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
newold86 wrote:
Ну как же так, есть там DAC - всем DAC'am DAC ! Целых 6 резисторов и 3 диода, прямо у VGA разъема :)

Понятно, я так и предполагал. Уровни выдержаны? Это я на тему "странной" интенсивности. Когда возился со своим резистивным DAC, тоже нога I работала как попало, потому что уровни были какие угодно, но не те, что надо.
newold86 wrote:
- стандартная VGA развертка для монитора
- поместиться максимум в 128К видеопамяти
- с ОЧЕНЬ большим запасом вписаться в быстродействие всех компонентов, чтобы не возиться еще и с проблемами задержек, гонок и т.д.
- в строке количество точек "двоично" круглое для упрощения схемотехники
- получить разрешение получше, чем CGA

640х480, она отвечает всем требованиям, кроме четвертого. Я не то чтобы доколупываюсь, просто непонятно, зачем делать изначально ни с чем несовместимое... В качесте самообразования? Вряд ли, произвольная задача имеет произвольное решение, ну в смысле себя не проверишь - правильно или нет.
newold86 wrote:
Вот так люди, начав с SMD, потом к FPGA и скатываются ! :) Для пущей винтажности, да и никогда хотя бы минимально серьезно с SMD не работал...

Винтажность не в схеме, винтажность в голове :) Можно вообще на реле всю схему собирать, выселив семью на улицу, иначе нихрена не поместится :D
И я бы не сказал, что я "скатился" к FPGA, скорее, поднялся, да :)

А что касается SMD... сегодня за 20 минут распаял полсотни SMD-резисторов (цепи IDE на моей плате). Это с учетом времени, необходимого для их поиска в куче подобных. Выводные формовал и паял бы, обжигая пальцы, наверное до сих пор...


19 Jan 2016 16:33
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
Vic3Dexe wrote:
newold86 wrote:
- стандартная VGA развертка для монитора
- поместиться максимум в 128К видеопамяти
- с ОЧЕНЬ большим запасом вписаться в быстродействие всех компонентов, чтобы не возиться еще и с проблемами задержек, гонок и т.д.
- в строке количество точек "двоично" круглое для упрощения схемотехники
- получить разрешение получше, чем CGA

640х480, она отвечает всем требованиям, кроме четвертого. Я не то чтобы доколупываюсь, просто непонятно, зачем делать изначально ни с чем несовместимое... В качесте самообразования? Вряд ли, произвольная задача имеет произвольное решение, ну в смысле себя не проверишь - правильно или нет.


Естественно, 640х480 был самый первый кандидат, но он не отвечает еще и второму пункту, если только не использовать всего лишь четыре цвета (2 бита на точку). А насчет цели проекта и возможности проверки - цели (кроме "захотелось") нет в принципе, а работу именно моей схемы могу, естественно, проверить и сам. Для этого не обязательно гонять стандартные программы. Да и, думаю, сложновато будет найти программу, которая может работать на 8088, но при этом использует режим 640х480...


19 Jan 2016 22:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
думаю, сложновато будет найти программу, которая может работать на 8088, но при этом использует режим 640х480...

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

Image

_________________
iLavr


20 Jan 2016 06:02
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
Lavr wrote:
newold86 wrote:
думаю, сложновато будет найти программу, которая может работать на 8088, но при этом использует режим 640х480...

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


Так вроде у EGA нет режима 640x480 ?

В любом случае, даже EGA-совместимый (пускай частично) адаптер по сложности будет покруче, чем все мое творение. Я, кстати, пытался поместиться в 50 корпусов МС, что вроде с трудом удалось...


20 Jan 2016 06:19
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
Так вроде у EGA нет режима 640x480

Так по идее и синхронизации не должно было быть! :o
В EGA - режимах на моём советском мониторе "Электроника" я наблюдал лишь мельтешение строк.
А тут - картинка устойчива была, но часть - внизу за экраном. Почему мне это и запомнилось! 8)

_________________
iLavr


20 Jan 2016 07:49
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
После некоторой возни с парой недочетов в видеочасти все удалось исправить, практически не трогая плату:

Attachment:
HiMsg2.jpg
HiMsg2.jpg [ 56.79 KiB | Viewed 13989 times ]


Дальше, по идее, должно пойти попроще...


21 Jan 2016 09:40
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
newold86 wrote:
схему рисовал за два вечера

Мы схему всё-таки увидим, или так и будем блуждать в догадках, опираясь на словесные рассказы о недочетах и неполадках?

Одна принципиальная схема, на мой взгляд, говорит о себе специалисту гораздо больше, чем множество страниц словоблудия.

_________________
iLavr


21 Jan 2016 09:56
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 706
Location: WWW
Reply with quote
Да нет там ничего особенного в этой схеме - все в лоб, без каких-либо фирменных know-how. Наоборот, есть пара ляпов, за которые стыдно. Такое любой, минимально соображающий в схемотехнике, нарисует... Но если уж очень хочется, то прикладываю, мне не жалко...

На данной схеме, как уже говорил, есть некоторые ошибки (не влияющие принципиально на работоспособность):

1. Перепутаны местами B и G сигналы на VGA разъеме
2. Неправильно подключены входы мультиплексора IC27 - вообще решается программно, просто в байте биты точек получаются перепутаны между собой
3. Самое главное - в корне неверная сама идея использовать мультиплексор в этом узле. Из-за задержек в регистре IC18 и в мультиплексоре IC27 четные и нечетные точки получаются разными. Мне удалось свести разницу к минимуму за счет использования более медленного мультиплексора (серия ALS вместо F), но это неправильный подход. Уже придумал, как вместо этих двух микросхем использовать всего одну (ИР13), при этом точки получаются идентичными, так как схема уже синхронная.

Update:

4. Забыл еще один нюанс - вывод 1 IC16 вместо питания нужно подключить к выводу 2 этой же микросхемы. Это решает ранее упомянутую проблему отсутствия первых двух точек в каждой строке.


Attachments:
sb1-88 video v1.pdf [48.54 KiB]
Downloaded 664 times


Last edited by newold86 on 21 Jan 2016 10:41, edited 1 time in total.

21 Jan 2016 10:19
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
Зачет! Это однозначно пять с плюсом и больше. Афтор - бог . Хотя бы по тому, что у него нашлось время это сделать. Восхищаюсь! Горжусь! И просто рад за человека.
А если просто - молодец. Радуюсь, что есть еще такие люди. Я думал, уже никто не знает и не помнит, а смотри-ка!
Вы - сделали мой день! Так держать!

_________________
https://t.me/tronix_blog


21 Jan 2016 11:22
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 60 posts ]  Go to page 1, 2, 3, 4  Next

Who is online

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