Устройство системного блока персонального компьютера. Самая большая микросхема компьютера


Nibbler — компьютер из 17 микросхем. С дискретным TTL процессором / Хабр

2 года назад тут писали про самодельный компьютер с процессором на отдельных интегральных микросхемах — BMOW1. С архитектурной точки зрения он был весьма продвинут, однако крайне сложен для повторения.

Автор BMOW1 (Стив Чемберлин — Steve Chamberlin) разработал компьютер Nibbler, состоящий всего из 17 микросхем. Причем — процессор там также собран на дискретной логике.

Что-ж, посмотрим что у него внутри.

Nibbler — 4-х битный процессор. 2 ПЗУ используются для хранения микрокода, 1 ПЗУ для памяти команд — 12 бит адрес, 8 бит команда. Оперативная память — 12 бит адрес, 4 бита данные. Арифметику считает стандартное АЛУ 74181 (наш аналог К155ИП3).

С внешним миром Nibbler общается через спикер, стандартный текстовый LCD экран HD44700.

Тактовая частота — 2Мгц, каждая команда занимает 2 такта. Конечно, невозможность писать в память кода накладывает серьёзные ограничения на сложность программ — но чем-то приходится жертвовать ради упрощения конструкции. Помимо этого, невозможно читать/писать память по произвольному вычисленному адресу — т.к. банально нет регистров нужной длины.

Редкий случай, когда схема компьютера умещается на одном экране:

Как и BMOW — Nibbler собран скруткой проводов, а не пайкой.

В сравнении с предшественником:

Думаю, собрать такой компьютер из дискретных элементов вполне под силу каждому не затрачивая на это пол жизни :-)

habr.com

Процессор / Хабр

Сколько я себя помню, всегда мечтала сделать процессор. Наконец, вчера я его сделала. Не бог весть что: 8 бит, RISC, текущая рабочая частота — 4 кГц, но он работает. Пока что в программе моделирования логических цепей, но все мы знаем: «сегодня — на модели, завтра — на деле!».

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

Двоичная логика
Двоичная система счисления (для тех, кто не в курсе) — это такая система счисления, в которой нет цифр больше единицы. Такое определение многих сбивает с толку, пока они не вспомнят, что в десятичной системе счисления нет цифр больше девятки. Двоичная система используется в компьютерах потому, что числа в ней легко кодировать напряжением: есть напряжение — значит, единица; нет напряжения — значит, ноль. Кроме того, «ноль» и «один» легко можно понимать как «ложно» и «истинно». Более того, большая часть устройств, работающих в двоичной системе счисления, обычно относится к числам как к массиву «истинностей» и «ложностей», то есть оперирует с числами как с логическими величинами. Для самых маленьких и тех, кто не в курсе, я расскажу и покажу, как работают простейшие элементы двоичной логики.
Элемент «Буфер»
Представьте, что вы сидите в своей комнате, а ваш друг — на кухне. Вы кричите ему: «Друг, скажи, в коридоре горит свет?». Друг отвечает: «Да, горит!» или «Нет, не горит». Ваш друг — буфер между источником сигнала (лампочкой в коридоре) и приемником (вами). Более того, ваш друг — не какой-нибудь там обычный буфер, а буфер управляемый. Он был бы обычным буфером, если бы постоянно кричал: «Лампочка светится» или «Лампочка не светится».
Элемент «Не» — NOT
А теперь представьте, что ваш друг — шутник, который всегда говорит неправду. И если лампочка в коридоре светится, то он скажет вам «Нет, в коридоре совсем-совсем темно», а если не светится — то «Да, в коридоре свет горит». Если у вас есть такой друг на самом деле, значит, он воплощение элемента «Не».
Элемент «Или» — OR
Для объяснения сути элемента «Или» одной лампочки и одного друга, к сожалению, не хватит. Нужно две лампочки. Итак, у вас в коридоре две лампочки — торшер, к примеру, и люстра. Вы кричите: «Друг, скажи, хотя бы одна лампочка в коридоре светит?», и ваш друг отвечает «Да» или «Нет». Очевидно, что для ответа «Нет» все лампочки обязательно должны быть выключены.
Элемент «И» — AND
Та же самая квартира, вы, друг на кухне, торшер и люстра в коридоре. На ваш вопрос «В коридоре обе лампочки горят?» вы получаете ответ «Да» или «Нет». Поздравляю, теперь ваш друг — это элемент «И».
Элемент «Исключающее Или» — XOR
Повторим еще раз эксперимент для элемента «Или», но переформулируем свой вопрос к другу: «Друг, скажи, в коридоре только одна лампочка светит?». Честный друг ответит на такой вопрос «Да» только в том случае, если в коридоре действительно горит только одна лампочка.
Сумматоры
Четвертьсумматор
Четвертьсумматором называют элемент «Исключающее Или». Почему? Давайте разберемся. Составим таблицу сложения для двух чисел в двоичной системе счисления: 0+0= 0 0+1= 1 1+0= 1 1+1= 10

Теперь запишем таблицу истинности элемента «Исключающее Или». Для этого обозначим светящуюся лампочку за 1, потухшую — за 0, и ответы друга «Да»/«Нет» как 1 и 0 соответственно. 0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0

Очень похоже, не так ли? Таблица сложения и таблица истинности «Исключающего Или» совпадают полностью, кроме одного-единственного случая. И этот случай называется «Переполнение».

Полусумматор
При переполнении результат сложения уже не помещается в столько же разрядов, во сколько помещались слагаемые. Слагаемые — два однозначных числа (одна значащая цифра, понимаете?), а сумма — уже двузначное (две значащих цифры). Две цифры одной лампочкой («Светится»/«Не светится») уже не передать. Нужно две лампочки. Нужно — сделаем!

Кроме XOR, для сумматора нам потребуется элемент «И» (AND). 0 XOR 0 = 0 0 AND 0 = 0 0 XOR 1 = 1 0 AND 1 = 0 1 XOR 0 = 1 1 AND 0 = 0 1 XOR 1 = 0 1 AND 1 = 1

Тадам! 0+0= 00 0+1= 01 1+0= 01 1+1= 10

Наша вундервафля полусумматор работает. Его можно считать простейшим специализированным процессором, который складывает два числа. Полусумматор называется полусумматором потому, что с его помощью нельзя учитывать перенос (результат работы другого сумматора), то есть нельзя складывать три однозначных двоичных числа. В связи с этим из нескольких одноразрядных полусумматоров нельзя сделать один многоразрядный.

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

Более сложные элементы
Мультиплексор
Предлагаю снова включить воображение. Итак, представьте. Вы живете в частном одноквартирном доме, возле двери этого дома стоит ваш почтовый ящик. Выходя на прогулку, вы замечаете странного почтальона, который стоит возле этого самого почтового ящика. И вот что он делает: достает кучу писем из сумки, читает номер на почтовом ящике, и в зависимости от номера на ящике бросает в него то или иное письмо. Почтальон работает мультиплексором. Он определенным образом (номер на конверте) определяет, какой отправить сигнал (письмо) по сигнальной линии (почтовый ящик).

Мультплексоры состоят обычно только из сочетаний элементов «И», «Или» и «Не». У одноразрядного мультиплексора один вход называется «выбор адреса», два входа с общим названием «входной сигнал» и один выход, который так и называется: «выходной сигнал». Когда на «выбор адреса» подается 0, то «выходной сигнал» становится таким же, как первый «входной сигнал». Соответственно, когда на «выбор» подается 1, то «выходной сигнал» становится равным второму «входному сигналу».

Демультиплексор
А вот эта штучка работает с точностью до наоборот. На «выбор адреса» даем адрес, на «вход данных» даем данные, на выходе с номером «адрес» имеем данные со входа.
Счетчик
Для понимания работы счетчика вам опять понадобится ваш друг. Позовите его из кухни (надеюсь, он не сильно там скучал, и, главное, не съел всю вашу еду), и попросите делать вот что: пусть он запомнит число 0. Каждый раз, когда вы будете прикасаться к нему, он должен прибавить единицу к тому числу, которое помнит, сказать результат и запомнить его. Когда результат будет равен (допустим) 3, он должен выкрикнуть «Абракадабра!» и отвечать при следующем прикосновении, что сейчас он помнит число 0. Немного сложно? Смотрите:

Вы прикасаетесь к другу. Друг говорит «Один». Вы прикасаетесь к другу. Друг говорит «Два». Вы прикасаетесь к другу. Друг говорит «Три». Друг выкрикивает «Хабрахабр!». Критическая атака! Вы временно парализованы и не можете двигаться. Вы прикасаетесь к другу. Друг говорит «Ноль».

Ну, и так далее. Очень просто, верно? Вы, конечно, поняли, что ваш друг сейчас — это счетчик. Прикосновение к другу можно считать «тактирующим сигналом» или, попросту говоря, сигналом продолжения счета. Крик «Абракадабра» показывает, что запомненное значение в счетчике — максимальное, и что при следующем тактирующем сигнале счетчик будет установлен в ноль. Есть два отличия двоичного счетчика от вашего друга. Первое: настоящий двоичный счетчик выдает запомненное значение в двоичном виде. Второе: он всегда делает только то, что вы ему говорите, и никогда не опускается до дурацких шуточек, способных нарушить работу всей процессорной системы.

Память
Триггер
Давайте продолжим издеваться над вашим несчастным (возможно, даже воображаемым) другом. Пусть теперь он запомнит число ноль. Когда вы касаетесь его левой руки, он должен запоминать число ноль, а когда правой — число один. При вопросе «Какое число ты помнишь?» друг должен всегда отвечать то число, которое запоминал — ноль или один. Простейшей запоминающей ячейкой является RS-триггер («триггер» значит «переключатель»). RS-триггер может хранить в себе один бит данных («ноль»/«один»), и имеет два входа. Вход Set/Установка (совсем как левая рука вашего друга) записывает в триггер «один», а вход Reset/Сброс (соответственно, правая рука) — «ноль».
Регистр
Немного сложнее устроен регистр. Ваш друг превращается в регистр тогда, когда вы просите его что-нибудь запомнить, а потом говорите «Эй, напомни мне, что я говорил тебе запомнить?», и друг правильно отвечает.

Регистр обычно может хранить в себе чуть больше, чем один бит. У него обязательно есть вход данных, выход данных и вход разрешения записи. С выхода данных вы в любой момент можете прочитать то, что в этом регистре записано. На вход данных вы можете подавать те данные, которые хотите в этот регистр записать. Можете подавать данные до тех пор, пока не надоест. В регистр все равно ничего не запишется до тех пор, пока на вход разрешения записи не подать один, то есть «логическую единицу».

Сдвиговый регистр
Вы когда-нибудь стояли в очередях? Наверняка стояли. Значит, вы представляете, каково быть данными в сдвиговом регистре. Люди приходят и становятся в конец очереди. Первый человек в очереди заходит в кабинет к большой шишке. Тот, кто был вторым в очереди, становится первым, а тот, кто был третьим — теперь второй, и так далее. Очередь — это такой хитрый сдвиговый регистр, из которого «данные» (ну, то есть люди) могут убегать по делам, предварительно предупредив соседей по очереди. В настоящем сдвиговом регистре, разумеется, «данные» из очереди сбегать не могут.

Итак, у сдвигового регистра есть вход данных (через него данные попадают в «очередь») и выход данных (из которого можно прочитать самую первую запись в «очереди»). Еще у сдвигового регистра есть вход «сдвинуть регистр». Как только на этот вход приходит «логическая единица», вся очередь сдвигается.

Есть одно важное различие между очередью и сдвиговым регистром. Если сдвиговый регистр расчитан на четыре записи (например, на четыре байта), то первая в очереди запись дойдет до выхода из регистра только после четырех сигналов на вход «сдвинуть регистр».

Оперативная память
Если много-много триггеров объединить в регистры, а много-много регистров объединить в одной микросхеме, то получится микросхема оперативной памяти. У микросхемы памяти обычно есть вход адреса, двунаправленный вход данных (то есть в этот вход можно записывать, и с него же можно считывать) и вход разрешения записи. На вход адреса подаем какое-нибудь число, и это число выберет определенную ячейку памяти. После этого на входе/выходе данных мы можем прочитать то, что записано в эту самую ячейку. Теперь мы одновременно подадим на вход/выход данных то, что хотим в эту ячейку записать, а на вход разрешения записи — «логическую единицу». Результат немного предсказуем, не так ли?
Процессор
BitBitJump
Процессоры иногда делят на CISC — те, которые умеют выполнять много разных команд, и RISC — те, которые умеют выполнять мало команд, но выполняют их хорошо. Одним прекрасным вечером мне подумалось: а было бы здорово, если бы можно было сделать полноценный процессор, который умеет выполнять всего одну команду. Вскоре я узнала, что существует целый класс однокомандных процессоров — OISC, чаще всего они используют команду Subleq (вычесть, и если меньше или равно нулю, то перейти) или Subeq (вычесть, и если равно нулю, то перейти). Изучая различные варианты OISC-процессоров, я нашла в сети сайт Олега Мазонки, который разработал простейший однокомандный язык BitBitJump. Единственная команда этого языка так и называется — BitBitJump (скопировать бит и перейти по адресу). Этот, безусловно эзотерический, язык является полным по Тьюрингу — то есть на нем можно реализовать любой компьютерный алгоритм.

Подробное описание BitBitJump и ассемблер для этого языка можно найти на сайте разработчика. Для описания алгоритма работы процессора достаточно знать следующее: 1. При включении процессора в регистрах PC, A и B записаны 0 2. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр A 3. Увеличиваем PC 4. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B 5. Увеличиваем PC 6. Записываем в ячейку с адресом, записанным в регистре B, содержимое бита с адресом А. 7. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B 8. Записываем в регистр PC содержимое регистра B 9. Переходим к пункту 2 нашего плана10. PROFIT!!!

К сожалению, алгоритм бесконечный, и потому PROFIT достигнут не будет.

Собственно, схема
Схема строилась стихийно, поэтому правят бал в ней страх, ужас и кавардак. Тем не менее, она работает, и работает прилично. Чтобы включить процессор, нужно: 1. Ввести программу в ОЗУ 2. Нажать на включатель 3. Установить счетчик в положение 4 (это можно делать и аппаратно, но схема стала бы еще более громоздкой) 4. Включить тактовый генератор

Как видите, использованы один регистр, один сдвиговый регистр, одна микросхема ОЗУ, два двоичных счетчика, один демультиплексор (представленный компараторами), два мультиплексора и немного чистой логики.

Можете скачать схему в формате circ для программы Logisim, и поиграться.

Что дальше?
Во-первых, можно увеличить разрядность процессора — заменив 8-битные элементы на 16-битные. Во-вторых, можно вынести ОЗУ из процессора, и добавить несложную схему, которая будет приостанавливать процессор, изменять ОЗУ и снова включать процессор. Такая схема будет выполнять функции простого контроллера ввода-вывода. Тогда можно будет сделать на базе этого процессора калькулятор, контроллер или еще какую-нибудь забавную бесполезную штуку. В-третьих, можно воплотить всю эту схему в железе. Что я собираюсь сделать. Как только сделаю — обязательно расскажу и покажу.

Спасибо всем за внимание!

P.S. Ссылки (для тех, кому лень читать): 1. Процессоры URISC — ru.wikipedia.org/wiki/Urisc 2. Сайт языка BitBitJump — mazonka.com/bbj/index.html 3. Программа для моделирования логических схем Logisim — http://ozark.hendrix.edu/~burch/logisim/ 4. Самодельный URISC (ORISC) процессор для Logisim — narod.ru/disk/31367690001/oo.circ.html

habr.com

Процессор своими руками - Robohunter

Сколько я себя помню, всегда мечтал сделать процессор. Наконец, вчера я его сделал. Не бог весть что: 8 бит, RISC, текущая рабочая частота — 4 кГц, но он работает. Пока что в программе моделирования логических цепей, но все мы знаем: «сегодня — на модели, завтра — на деле!».

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

Двоичная система счисления (для тех, кто не в курсе) — это такая система счисления, в которой нет цифр больше единицы. Такое определение многих сбивает с толку, пока они не вспомнят, что в десятичной системе счисления нет цифр больше девятки. 

Двоичная система используется в компьютерах потому, что числа в ней легко кодировать напряжением: есть напряжение — значит, единица; нет напряжения — значит, ноль. Кроме того, «ноль» и «один» легко можно понимать как «ложно» и «истинно». Более того, большая часть устройств, работающих в двоичной системе счисления, обычно относится к числам как к массиву «истинностей» и «ложностей», то есть оперирует с числами как с логическими величинами. Для самых маленьких и тех, кто не в курсе, я расскажу и покажу, как работают простейшие элементы двоичной логики.

 

Элемент «Буфер»

Представьте, что вы сидите в своей комнате, а ваш друг — на кухне. Вы кричите ему: «Друг, скажи, в коридоре горит свет?». Друг отвечает: «Да, горит!» или «Нет, не горит». Ваш друг — буфер между источником сигнала (лампочкой в коридоре) и приемником (вами). Более того, ваш друг — не какой-нибудь там обычный буфер, а буфер управляемый. Он был бы обычным буфером, если бы постоянно кричал: «Лампочка светится» или «Лампочка не светится». 

 

Элемент «Не» — NOT

А теперь представьте, что ваш друг — шутник, который всегда говорит неправду. И если лампочка в коридоре светится, то он скажет вам «Нет, в коридоре совсем-совсем темно», а если не светится — то «Да, в коридоре свет горит». Если у вас есть такой друг на самом деле, значит, он воплощение элемента «Не». 

 

Элемент «Или» — OR

Для объяснения сути элемента «Или» одной лампочки и одного друга, к сожалению, не хватит. Нужно две лампочки. Итак, у вас в коридоре две лампочки — торшер, к примеру, и люстра. Вы кричите: «Друг, скажи, хотя бы одна лампочка в коридоре светит?», и ваш друг отвечает «Да» или «Нет». Очевидно, что для ответа «Нет» все лампочки обязательно должны быть выключены. 

 

Элемент «И» — AND

Та же самая квартира, вы, друг на кухне, торшер и люстра в коридоре. На ваш вопрос «В коридоре обе лампочки горят?» вы получаете ответ «Да» или «Нет». Поздравляю, теперь ваш друг — это элемент «И». 

 

Элемент «Исключающее Или» — XOR

Повторим еще раз эксперимент для элемента «Или», но переформулируем свой вопрос к другу: «Друг, скажи, в коридоре только одна лампочка светит?». Честный друг ответит на такой вопрос «Да» только в том случае, если в коридоре действительно горит только одна лампочка.   

Четвертьсумматор

Четвертьсумматором называют элемент «Исключающее Или». Почему? Давайте разберемся. Составим таблицу сложения для двух чисел в двоичной системе счисления: 0+0= 0 0+1= 1 1+0= 1 1+1= 10

Теперь запишем таблицу истинности элемента «Исключающее Или». Для этого обозначим светящуюся лампочку за 1, потухшую — за 0, и ответы друга «Да»/«Нет» как 1 и 0 соответственно. 0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0

Очень похоже, не так ли? Таблица сложения и таблица истинности «Исключающего Или» совпадают полностью, кроме одного-единственного случая. И этот случай называется «Переполнение».

 

Полусумматор

При переполнении результат сложения уже не помещается в столько же разрядов, во сколько помещались слагаемые. Слагаемые — два однозначных числа (одна значащая цифра, понимаете?), а сумма — уже двузначное (две значащих цифры). Две цифры одной лампочкой («Светится»/«Не светится») уже не передать. Нужно две лампочки. Нужно — сделаем! 

Кроме XOR, для сумматора нам потребуется элемент «И» (AND). 0 XOR 0 = 0 0 AND 0 = 0 0 XOR 1 = 1 0 AND 1 = 0 1 XOR 0 = 1 1 AND 0 = 0 1 XOR 1 = 0 1 AND 1 = 1

Тадам!  0+0= 00 0+1= 01 1+0= 01 1+1= 10

Наша вундервафля полусумматор работает. Его можно считать простейшим специализированным процессором, который складывает два числа. Полусумматор называется полусумматором потому, что с его помощью нельзя учитывать перенос (результат работы другого сумматора), то есть нельзя складывать три однозначных двоичных числа. В связи с этим из нескольких одноразрядных полусумматоров нельзя сделать один многоразрядный. 

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

Мультиплексор

Предлагаю снова включить воображение. Итак, представьте. Вы живете в частном одноквартирном доме, возле двери этого дома стоит ваш почтовый ящик. Выходя на прогулку, вы замечаете странного почтальона, который стоит возле этого самого почтового ящика. И вот что он делает: достает кучу писем из сумки, читает номер на почтовом ящике, и в зависимости от номера на ящике бросает в него то или иное письмо. Почтальон работает мультиплексором. Он определенным образом (номер на конверте) определяет, какой отправить сигнал (письмо) по сигнальной линии (почтовый ящик). 

Мультплексоры состоят обычно только из сочетаний элементов «И», «Или» и «Не». У одноразрядного мультиплексора один вход называется «выбор адреса», два входа с общим названием «входной сигнал» и один выход, который так и называется: «выходной сигнал». 

Когда на «выбор адреса» подается 0, то «выходной сигнал» становится таким же, как первый «входной сигнал». Соответственно, когда на «выбор» подается 1, то «выходной сигнал» становится равным второму «входному сигналу».

 

Демультиплексор

А вот эта штучка работает с точностью до наоборот. На «выбор адреса» даем адрес, на «вход данных» даем данные, на выходе с номером «адрес» имеем данные со входа.

 

Счетчик

Для понимания работы счетчика вам опять понадобится ваш друг. Позовите его из кухни (надеюсь, он не сильно там скучал, и, главное, не съел всю вашу еду), и попросите делать вот что: пусть он запомнит число 0. Каждый раз, когда вы будете прикасаться к нему, он должен прибавить единицу к тому числу, которое помнит, сказать результат и запомнить его. Когда результат будет равен (допустим) 3, он должен выкрикнуть «Абракадабра!» и отвечать при следующем прикосновении, что сейчас он помнит число 0. Немного сложно? Смотрите:

Вы прикасаетесь к другу. Друг говорит «Один». Вы прикасаетесь к другу. Друг говорит «Два». Вы прикасаетесь к другу. Друг говорит «Три». Друг выкрикивает «Хабрахабр!». Критическая атака! Вы временно парализованы и не можете двигаться.  Вы прикасаетесь к другу. Друг говорит «Ноль».

Ну, и так далее. Очень просто, верно?  Вы, конечно, поняли, что ваш друг сейчас — это счетчик. Прикосновение к другу можно считать «тактирующим сигналом» или, попросту говоря, сигналом продолжения счета. Крик «Абракадабра» показывает, что запомненное значение в счетчике — максимальное, и что при следующем тактирующем сигнале счетчик будет установлен в ноль. Есть два отличия двоичного счетчика от вашего друга. Первое: настоящий двоичный счетчик выдает запомненное значение в двоичном виде. Второе: он всегда делает только то, что вы ему говорите, и никогда не опускается до дурацких шуточек, способных нарушить работу всей процессорной системы.  

Триггер

Давайте продолжим издеваться над вашим несчастным (возможно, даже воображаемым) другом. Пусть теперь он запомнит число ноль. Когда вы касаетесь его левой руки, он должен запоминать число ноль, а когда правой — число один. При вопросе «Какое число ты помнишь?» друг должен всегда отвечать то число, которое запоминал — ноль или один.  Простейшей запоминающей ячейкой является RS-триггер («триггер» значит «переключатель»). RS-триггер может хранить в себе один бит данных («ноль»/«один»), и имеет два входа. Вход Set/Установка (совсем как левая рука вашего друга) записывает в триггер «один», а вход Reset/Сброс (соответственно, правая рука) — «ноль». 

 

Регистр

Немного сложнее устроен регистр. Ваш друг превращается в регистр тогда, когда вы просите его что-нибудь запомнить, а потом говорите «Эй, напомни мне, что я говорил тебе запомнить?», и друг правильно отвечает.

Регистр обычно может хранить в себе чуть больше, чем один бит. У него обязательно есть вход данных, выход данных и вход разрешения записи. С выхода данных вы в любой момент можете прочитать то, что в этом регистре записано. На вход данных вы можете подавать те данные, которые хотите в этот регистр записать. Можете подавать данные до тех пор, пока не надоест. В регистр все равно ничего не запишется до тех пор, пока на вход разрешения записи не подать один, то есть «логическую единицу».

 

Сдвиговый регистр

Вы когда-нибудь стояли в очередях? Наверняка стояли. Значит, вы представляете, каково быть данными в сдвиговом регистре. Люди приходят и становятся в конец очереди. Первый человек в очереди заходит в кабинет к большой шишке. Тот, кто был вторым в очереди, становится первым, а тот, кто был третьим — теперь второй, и так далее. Очередь — это такой хитрый сдвиговый регистр, из которого «данные» (ну, то есть люди) могут убегать по делам, предварительно предупредив соседей по очереди. В настоящем сдвиговом регистре, разумеется, «данные» из очереди сбегать не могут. 

Итак, у сдвигового регистра есть вход данных (через него данные попадают в «очередь») и выход данных (из которого можно прочитать самую первую запись в «очереди»). Еще у сдвигового регистра есть вход «сдвинуть регистр». Как только на этот вход приходит «логическая единица», вся очередь сдвигается.

Есть одно важное различие между очередью и сдвиговым регистром. Если сдвиговый регистр расчитан на четыре записи (например, на четыре байта), то первая в очереди запись дойдет до выхода из регистра только после четырех сигналов на вход «сдвинуть регистр».

 

Оперативная память

Если много-много триггеров объединить в регистры, а много-много регистров объединить в одной микросхеме, то получится микросхема оперативной памяти. У микросхемы памяти обычно есть вход адреса, двунаправленный вход данных (то есть в этот вход можно записывать, и с него же можно считывать) и вход разрешения записи. На вход адреса подаем какое-нибудь число, и это число выберет определенную ячейку памяти. После этого на входе/выходе данных мы можем прочитать то, что записано в эту самую ячейку.  Теперь мы одновременно подадим на вход/выход данных то, что хотим в эту ячейку записать, а на вход разрешения записи — «логическую единицу». Результат немного предсказуем, не так ли?  

BitBitJump

Процессоры иногда делят на CISC — те, которые умеют выполнять много разных команд, и RISC — те, которые умеют выполнять мало команд, но выполняют их хорошо. Одним прекрасным вечером мне подумалось: а было бы здорово, если бы можно было сделать полноценный процессор, который умеет выполнять всего одну команду. Вскоре я узнал, что существует целый класс однокомандных процессоров — OISC, чаще всего они используют команду Subleq (вычесть, и если меньше или равно нулю, то перейти) или Subeq (вычесть, и если равно нулю, то перейти). Изучая различные варианты OISC-процессоров, я нашел в сети сайт Олега Мазонки, который разработал простейший однокомандный язык BitBitJump. Единственная команда этого языка так и называется — BitBitJump (скопировать бит и перейти по адресу). Этот, безусловно эзотерический, язык является полным по Тьюрингу — то есть на нем можно реализовать любой компьютерный алгоритм. 

Подробное описание BitBitJump и ассемблер для этого языка можно найти на сайте разработчика. Для описания алгоритма работы процессора достаточно знать следующее:

1. При включении процессора в регистрах PC, A и B записаны 0 2. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр A 3. Увеличиваем PC 4. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B 5. Увеличиваем PC 6. Записываем в ячейку с адресом, записанным в регистре B, содержимое бита с адресом А. 7. Считываем ячейку памяти с адресом PC и сохраняем прочитанное в регистр B 8. Записываем в регистр PC содержимое регистра B 9. Переходим к пункту 2 нашего плана10. PROFIT!!!

К сожалению, алгоритм бесконечный, и потому PROFIT достигнут не будет.

 

Собственно, схема

Схема строилась стихийно, поэтому правят бал в ней страх, ужас и кавардак. Тем не менее, она работает, и работает прилично. Чтобы включить процессор, нужно:

1. Ввести программу в ОЗУ 2. Нажать на включатель 3. Установить счетчик в положение 4 (это можно делать и аппаратно, но схема стала бы еще более громоздкой) 4. Включить тактовый генератор

Как видите, использованы один регистр, один сдвиговый регистр, одна микросхема ОЗУ, два двоичных счетчика, один демультиплексор (представленный компараторами), два мультиплексора и немного чистой логики.

Можете скачать схему в формате circ для программы Logisim, и поиграться.

 

Что дальше?

Во-первых, можно увеличить разрядность процессора — заменив 8-битные элементы на 16-битные. Во-вторых, можно вынести ОЗУ из процессора, и добавить несложную схему, которая будет приостанавливать процессор, изменять ОЗУ и снова включать процессор. Такая схема будет выполнять функции простого контроллера ввода-вывода. Тогда можно будет сделать на базе этого процессора калькулятор, контроллер или еще какую-нибудь забавную бесполезную штуку. В-третьих, можно воплотить всю эту схему в железе. Что я собираюсь сделать. Как только сделаю — обязательно расскажу и покажу.

Спасибо всем за внимание! 

P.S. Ссылки (для тех, кому лень читать): 1. Процессоры URISC — ru.wikipedia.org/wiki/Urisc 2. Сайт языка BitBitJump — mazonka.com/bbj/index.html 3. Программа для моделирования логических схем Logisim — http://ozark.hendrix.edu/~burch/logisim/ 4. Самодельный URISC (ORISC) процессор для Logisim — narod.ru/disk/31367690001/oo.circ.html

Источник: HabraHabr

robo-hunter.com

Советские микросхемы - самые большие в мире!: 5cek

Правительство планирует обязать российские компании закупать компьютеры и электронные устройства отечественного производства в приоритетном порядке. Об этом сообщает РИА Новости со ссылкой на проект соответствующего постановления.В документе приводится список таких цифровых устройств. В него вошли электронные вычислительные машины, содержащие процессор в одном или нескольких корпусах, информационные носители, устройства ввода и вывода данных, мониторы и проекторы, используемые в системах автоматической обработки данных. Также перечень содержит программное обеспечение различных видов и услуги по производству компьютеров и периферийного оборудования.

В декабре 2015 года компания «Байкал Электроникс» пообещала запустить в начале 2016 года промышленное производство первого российского процессора Baikal-T1. Стоимость новинки составит 60 долларов, включая НДС, при заказе от 100 единиц. В «Байкал Электроникс» отмечают, что среди заказчиков компании — более 100 фирм, около 20 из которых — зарубежные, в том числе разработчик решений в области автоматизации «Акситех» и тайваньский производитель встраиваемых компьютеров Lanner.

Надо ли объяснять, что нынешние российские поделки мало того, что значительно (в разы, а то и на порядки) уступают в производительности зарубежным "аналогам" (хотя даже аналогами их назвать сложно, общего там крайне мало), не совместимы или очень слабо совместимы с доминирующей на ПК системой команд х86/amd64 и имеют посредственную надежность и задранную в разы цену?Я бы еще понял, если бы подобные требования распространялись исключительно на государственные учреждения - да и то, как налогоплательщику, мне бы было больно и обидно платить в разы больше за то, что в разы же хуже, но обязать всех покупать только доморощенное? А как быть с ПО? Софт, написанные за десятилетия существования PC можно будет на 80% выкинуть в помойку, а оставшиеся 20%, которые можно будет запустить при помощи палки, костыля и такой-то матери, никто запускать не станет, потому что проще будет найти и адаптировать open source аналоги.Надеюсь, этот проект постановления сдохнет в пыльных кабинетах, иначе Российскую IT-отрасль ждут нехилые потрясения.

5cek.livejournal.com

Что такое материнская плата | Pop Hi-Tech

Материнская плата компьютера, как и любая другая микросхема это пластина из стеклотекстолита, с медными проводниками. К этим проводникам припаиваются различные детали и разъемы. Материнская плата это самая большая микросхема компьютера. К ней крепиться процессор, а в ее разъемы вставляются “младшие” платы: оперативная память, видеокарта и другие платы расширения. С ней шлейфами соединены все остальные части системного блока персонального компьютера. В этой статье мы расскажем, что такое материнская плата.

Питает материнскую плату источник вторичного электропитания – блок питания. Специальный разъем предотвращает неправильное подключение электрического провода к микросхеме.

Визуально материнскую плату можно разделить на несколько частей: импульсный стабилизатор, cmos, различные интерфейсы и разъемы. Импульсный стабилизатор питания ядра процессора необходим для того, чтобы выдаваемые блоком питания ватты можно было использовать для процессора. Полевые транзисторы стабилизатора пропускает через себя десятки ампер и имеют шансы быстрее выйти из строя, чем другие части материнской платы.

Микросхема CMOS также является очень важной частью материнской платы. Именно она отвечает за настройки BIOS. CMOS-микросхема при выключенном компьютере питается от литиевого элемента. Когда компьютер включается питание на чипсет отвечающий за BIOS начинает поступать от блока питания. Так как CMOS потребляет ток в мизерном количестве (меньше микроампера), заряда литиевого элемента хватит на несколько лет.

В большом количестве на современной материнской плате представлены Sata и USB разъемы. Бывший конкурент Sata разъем IDE практически перестал использоваться в материнских платах нашего времени. Минимальное количество разъемов SATA3 на современных материнских платах равно 4 шт.

Третье поколение USB разъемов представлено в материнских платах современного типа еще в большем количестве, чем Sata3. Этот интерфейс завоевал большую популярность. Мы уже писали в рамках этого сайта о стандарте USB 3.0. Но, думаю напомнить пользователям будет не лишним. Этот интерфейс характеризует высокая скорость передачи информации и возможность синхронизации практически любого гаджета с компьютером.

pop-hi-tech.ru

Устройство системного блока персонального компьютера

В предыдущей статье были рассмотрены основные периферийные устройства компьютера. Если Вы её не читали, то рекомендую ознакомиться перед прочтением данной статьи. Сегодня же мы заберёмся в «святую святых»: системный блок или «системник» в обиходе. Чтобы было наглядно я разобрал собственный системный блок и сделал фотографии, которые Вам и предоставлю в качестве наглядного пособия, скажем так, устройство системного блока в картинках. Начнём с внутреннего устройства системного блока, а потом перейдём к наружному. Приступим!

Для начала стоит оговориться, что системный блок по форме может быть горизонтальным (называется Desktop), который обычно находится под монитором, или вертикальным, который называется Tower (c англ.»башня»). Корпус Tower в зависимости от размера может быть big, midi и mini. Наиболее распространён корпус mini tower, его Вы можете как раз и увидеть на фотографиях. Кстати, Вы можете ознакомиться с устройством системного блока своего персонального компьютера, однако нужно быть весьма и весьма аккуратными и сперва полностью обесточить компьютер, а только потом уже начинать что-то делать. Желательно отсоединить все провода, однако если возникнут проблемы с их подключением, то лучше не стоит. О подключении устройств к системному блоку мы поговорим в цикле статей, разобравшись с внешними разъёмами системного блока. Если системный блок нужно достать из под стола, к примеру, то это надо делать весьма аккуратно, избегая сотрясений и ударов. Мне, чтобы увидеть, что находится в системном блоке, необходимо снять боковую крышку, открутив 2 шурупа на задней стенке, однако устройство корпуса может быть весьма разнообразным. Главное внимательно осмотреть корпус и понять на чём крепится крышка. Он должна сниматься без особых усилий, поэтому не стоит усердствовать. Итак,  крышка снята, давайте разбираться что для чего нужно.

Начнём с системной платы, которую ещё называют материнской, а иногда и вовсе ласково «мать». И немудрено: она самая большая и (как и положено матери) следит за оравой других устройств и координирует их работу, передаёт сигнал от одного к другому. Найти её несложно, материнская плата, как я уже сказал, большая. На фото она выделена зелёной рамочкой и помечена цифрой (1) в уголке.

Под цифрой (2) скрывается в системном блоке процессор. Он действительно скрывается, потому что на фото и вообще его не видно. Однако выглядит он вот так:

Процессор – это специально выращенный камень кремния, в котором, к тому же, находится невероятно много других элементов: транзисторов, которые соединены между собой. Процессор является своеобразным «мозгом», ведь он обрабатывает поступающую информацию. Одной из его важнейших характеристик является тактовая частота, которая представляет собой количество самых простых (элементарных) операций может выполнить за единицу времени (секунду). Измеряется в МГц (мегагерцах – то есть в миллионах герц)  или ГГц (гигагерцах – миллиардах герц). Немало, правда ли? Обычно Вы можете увидеть эти цифры в описании комплектации купленного компьютера или в объявлении по продаже. К примеру 3000 МГц. Самые распространенные процессоры марки Intel и AMD. Во время работы процессор нагревается, поэтому на него устанавливается радиатор, который отводит всю эту теплоту, а сверху ещё устанавливается кулер – это маленький вентилятор, который гоняет воздух и охлаждает радиатор. Как раз его Вы и видите под цифрой (2), а под ним заметен радиатор. Давайте посмотрим ещё раз на более крупном фото:

Компьютер оперирует информацией, поэтому её надо где-то хранить. Проведём аналогию с человеком: есть вещи, которые нам нужны только во время работы, к примеру, формула. Нам её помнить необязательно, да и невозможно держать всё в голове, поэтому она записана где-то в книге или в записной книжке.  Так и компьютер: все данные хранит на накопителях, а когда какие-то данные нужны для работы и ими надо воспользоваться, то загружает их в оперативную память (ОЗУ – оперативное запоминающее устройство). Она под номером (3) на общем фото. Загружает потому, что так с ней быстрее работать, ведь эта память очень быстрая. Когда компьютер выключен, то в этой памяти ничего нет, всё стирается, так же, как и у нас, когда мы спим – мы не можем думать в это время. И вот в это время информация на компьютере находится только на накопителях.

Под обозначениями (7а) и (7б) и выделенные жёлтым цветом, как раз жёсткие диски. Жёсткий диск ещё называют винчестером, а в обиходе «винтом» или «веником». На нём данные хранятся даже когда компьютер выключен. Характеризуются по многим параметрам, но Вам необходимо иметь в виду разве что объём, который показывает сколько данных можно туда записать, да скорость доступа. Однако с единицами измерения информации стоит познакомиться в отдельной статье, пока опустим это. Давайте посмотрим на винчестер поближе изнутри.

Ещё мы можем увидеть кабели. Естественно каждому устройству необходима электроэнергия, поэтому к каждому идёт кабель питания от блока питания, о котором будет немного ниже рассказано. А также Вы можете увидеть вот такой широкий шлейф, на картинке он подписан как «кабель IDE». Не стоит пугаться, следует только знать, что есть IDE-винчестер и SATA, это зависит от того, как они соединяются с материнской платой, не будем вдаваться в подробности, но у последнего кабель гораздо уже. По этому кабелю как раз и передаётся информация.

Таким образом мы с Вами выяснили, что есть оперативная память, в которую данные загружаются по мере надобности при работе компьютера из накопителя, где она хранится постоянно. Однако, когда компьютер включается, то ему необходимы команды, ведь его оперативная память пуста! Представьте, что Вы просыпаетесь, а в голове у Вас пусто! Для этого в компьютере есть постоянное запоминающее устройство (ПЗУ). В ней находятся базовые программы, которые проверяют состояние системы и её готовность к работе и дают возможность взаимодействовать с монитором, жёстким диском, клавиатурой, дисководом. Все эти программы образуют базовую систему ввода-вывода (BIOS – Basic Input Output System). Когда Вы включаете компьютер, то сразу видите работу этой самой базовой системы: это вот те белые буковки и циферки на чёрном фоне.

Если Вы обращали внимание, то даже если долгое время компьютер выключен, дата и время остаётся верной. Это происходит благодаря ещё одной микросхеме CMOS, в которой хранятся эти данные и данные об оборудовании компьютера, эти данные микросхема охотно передаёт по требованию в BIOS, после чего и идёт загрузка компьютера. На материнской плате есть батарейка, благодаря которой в CMOS не теряются данные. Её хватает на пару лет, иногда приходится менять.

На этом рисунке Вы как раз можете увидеть 2 планки оперативной памяти и свободный слот для ещё одной. Планка просто туда вставляется и зажимается по бокам держателями. Вы можете их видеть на рисунке, они белого цвета, а на общем фото они под номером (3). Слева под нижней планкой оперативной памяти находится как раз радиатор процессора  и над ним видно часть кулера.

Давайте смотреть дальше, что же интересного внутри системного блока персонального компьютера. Вот на следующей фотографии и видно эту  батарейку, благодаря которой время на компьютере идёт даже если он выключен. На фото помечены разъёмы, в которые можно вставить другие полезные устройства.

Видеокарта, сетевая карта, батарейка

К примеру, вверху на этом фото Вы видите сетевую плату. На общем фото она под номером (5). Она нужна для того, чтобы можно было соединить несколько компьютеров вместе, чтобы они могли обмениваться между собой информацией.

Ниже Вы видите видеокарту (видеоадаптер), она на общем фото под номером (4). Она нужна для того, чтобы формировать и  выводить изображение на монитор.

Видеокарта

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

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

Не стоит оставлять без внимания такое важное устройство как блок питания. Номер (6) на общей схеме и прямо перед Вами на следующем фото.

Блок питания

Этот массивный товарищ занимается распределением энергии между всеми устройствами. Питание, конечно, должно быть стабильным, а блок мощным. У меня стоит на 300 ватт, но компьютер довольно старый. Сейчас мощности больше, потому как и потребности тоже. У системного блока есть даже собственный кулер. Его мы увидим в следующей статье, где посмотрим на «наружности» системного блока.

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

CD/DVD-привод

Привод для CD/DVD. Номер 9 на общем фото и крупным планом прямо над этим текстом. Он позволяет записывать и считывать информацию с помощью лазера на диски. Про них более подробно будет рассказано в статье про хранение информации.  К нему тоже идёт кабель питания и кабель, по которому передаётся информация. Основной характеристикой является скорость чтения данных.

Кое-где на компьютерах остались ещё продолговатые прорези спереди на системном блоке. Это дисковод для дискет (FDD — floppy disk drive). Дискеты уже почти нигде не используются ввиду малой ёмкости (то есть на них вмещается мало информации).

Флоппи-дисководДискета

Итак, блиц-осмотр внутренностей системного блока компьютера закончен. Закрываем его крышку, завинчиваем шурупы, пора подключать всё назад и приниматься за работу!

Итак, из этой статьи  Вы узнали:

kkg.by

Компьютер «ЮТ-88»

6 / 8 987

Версия для печати

В 1989-1990 годах в приложении к журналу "Юный техник" был опубликован цикл статей о радиолюбительском компьютере "ЮТ-88" на основе процессора КР580ВМ80. Отличительной особенностью была возможность сборки компьютера поэтапно.

Обложка спецномера «ЮТ Для умелых рук №2/1989», посвящённого компьютеру «ЮТ-88»

Компьютер минимальной конфигурации

Сначала предлагалось собрать компьютер в так называемой "минимальной конфигурации" - 1КБ ОЗУ, 1КБ ПЗУ, вывод информации на 6-разрядный семисегментный светодиодный индикатор. Ввод информации с клавиатуры из 17 клавиш (16 клавиш для ввода 16-ричного числа и одна клавиша "шаг назад" для перемещения на один байт назад). В ПЗУ размещалась простая программа-монитор, которая, несмотря на малый объём, позволяла программировать в 16-ричных кодах и даже загружать/выгружать программы на ленту. К слову, несмотря на кажущуюся убогость такого программирования, я сам когда-то начинал знакомиться с ассемблером для Z-80 программируя в 16-ричных кодах, и не считал это сильно неудобным. В компьютере была своя система прерываний, один раз в секуду. Это нужно было для хода программных часов, при этом время могло выводиться на индикаторы.

Авторский вариант ЮТ-88 минимальной конфигурации (из журнала «ЮТ Для умелых рук №2/1989»)

Компьютер не имел возможность воспроизводить звук, но это легко обходилось тем, что можно было выводить звук через магнитофонный порт. Для этого включали магнитофон на запись в режиме паузы. Одной из первых программ, демонстрирующих возможности компьютера, была программа "гамма" для проигрывания звуков различной тональности.

Немного о схемотехнике компьютера "минимальной конфигурации": Схема проста - процессор КР580ВМ80, задающий генератор КР580ГФ24, шинный формирователь КР580ВК38, буферы шины адреса КР580ИР82, ПЗУ на двух КР556РТ5, ОЗУ на двух КР541РУ2, адресный дешифратор на К155ИД3. В компьютере вся память была разбита на сегменты по 4КБ, и таким образом одной К155ИД3 можно было делать выборку для любого из 16 сегментов памяти (или портов). Для уменьшения количества корпусов в качестве формирователей кода нажатой клавиши использовались две КР556РТ4, а для индикатора использовалась К155РЕ3, запрограммированная как преобразователь 4-разрядного двоичного кода в код для семисегментного индикатора. Индикаторы были включены в динамическом режиме, для чего автором остроумно были использованы две микросхемы ОЗУ К155РП1:

Не знаю как тогда, в 1989 году, но сейчас я эти раритеты не смог найти, пришлось делать замену, но об этом позже. Ещё было пару микросхем мелкой логики. И всё.

Уже потом выяснилось, что К155РП1 вроде бы можно заменить на К155ИР32 или ИР26 без доработок, т.е. "один в один". К155ИР32 от ИР26 отличается только тем, что имеет выходы с открытым коллектором.

Пару слов о ПЗУ. В своё время, читая все эти публикации про самодельные компьютеры, у меня появлялся вопрос - а как же программировать ПЗУ? Уже потом, изучив этот вопрос более основательно, я смог найти и схемы программаторов, и в конце-концов сделать самому универсальный программатор для ZX-Spectrum, который "шьёт" почти все УФ-ПЗУ и ПЗУ 556-й серии. Но тогда вопрос о программировании ПЗУ стоял остро. Хорошо было тем, кто мог отдать ПЗУ на какой-нибудь завод и "по знакомству" запрограммировать его. Но с моей точки зрения было бы правильнее сначала дать хотя бы минимальную информацию об этом вопросе. К слову, статьи по программированию К155РЕ3 появились только в номере №2/1991, а по программированию КР556РТ4 - в №6/1991 журнала. Впрочем если не брать в расчёт ПЗУ, то в параллели с публикацией описания конструкции компьютера были даны справочные материалы по основным микросхемам компьютера.

Вдобавок ко всему в журнале были ошибки как в схемах, так и в описаниях, что осложняло сборку. К тому же многие радиолюбители испытывали сложности с приобретением некоторых микросхем (той же К155РП1). Поэтому в №12/1989 журнала была опубликована статья "Отвечаем на вопросы", где были исправлены ошибки предыдущих публикаций и была дана схема компьютера на элементной базе, которую было проще найти.

Для компьютера даже была разработана дополнительная прошивка ПЗУ для арифметических операций (№3/1989 "ЮТ-88 в роли калькулятора"). ПЗУ представляло собой библиотеку подпрограмм как для простых вычислений, так и для вычисления тригонометрических, показательных и логарифмических функций для чисел с плавающей запятой. Исходные данные записывались в определённые ячейки памяти, вызывалась нужная подпрограмма, результат помещался тоже в ячейки памяти. Для работы ЮТ-88 в роли калькулятора нужно было впаять в схему дополнительное ПЗУ на 2КБ.

Видеоконтроллер

Следующим шагом было оснащение компьютера видеоконтроллером и полноценной клавиатурой. Как ни крути, но на одних индикаторах далеко не уедешь. В №4/1989 журнала появилась статья "От индикаторов к экрану", где описывалось как добавить к компьютеру простой видеоконтроллер.

Авторский вариант видеоконтроллера (из журнала «ЮТ Для умелых рук» №4/1989)

Схема похожа на схему замены КР580ВГ75 для "Радио-86РК" (Журнал "Радио" №5,6/1987г). Принцип работы видеоконтроллера таков - имеется своё собственное видео-ОЗУ объёмом 2КБ, к которому может обращаться как процессор, так и сам видеоконтроллер. Процессору отдан наивысший приоритет, т.е. в момент обращения процессора к видеопамяти вывод изображения на экран приостанавливается. Визуально это проявляется в небольших помехах (мусор на экране):

Помехи на мониторе в момент записи в экранное ОЗУ

В те моменты, когда процессор не обращается к видеопамяти, видеоконтроллер сканирует всё видео-ОЗУ, выводя параллельно из него изображение на экран. Схема сканирования выполнена на куче счётчиков. Данные из видео-ОЗУ посылаются на ПЗУ знакогенератора, где закодированы графические изображения символов, которые свою очередь отправляются на сдвиговый регистр (К155ИР13), с выхода которого посылаются на экран телевизора. В ПЗУ "прошит" знакогенератор на 128 символов (точно такой, как в Радио-86РК). Для выбора кода символа используются 7 бит, а оставшийся 8-й бит применяется как признак наличия курсора в данной ячейке видео-ОЗУ.

Зато видеоконтроллер выполнен в виде самостоятельного устройства, которое жёстко не привязано к остальной схеме компьютера и работает по сути само по себе. Его можно подключить к чему угодно, хоть к микрокалькулятору, и оно будет исправно показывать изображение на экране монитора или телевизора :)

Экран в ЮТ-88 разбит на 28 строк по 64 символа в строке. Однако на самом деле видео-ОЗУ объёмом в 2КБ позволяет адресовать 32 строки (32*64=2048). При наладке ЮТ-88, покрутив настройки монитора, можно добиться видимости всех 32 строк.

Полноценная клавиатура включает в себя матрицу 7*8 кнопок (56 шт) и три дополнительных клавиши (РУС, СС, УС). Обращение к клавиатуре реализовано через порт на КР580ВВ55.

Вместе с видеоконтроллером расширялось основное ОЗУ на 1КБ и добавлялось ещё одно ПЗУ на 2КБ, где был записан монитор для обслуживания видеоконтроллера ("Монитор-F"). Таким образом количество ПЗУ в компьютере уже достигло трёх штук. Потом ОЗУ расширялось ещё на 2КБ, потому что имеющегося ОЗУ могло быть недостаточно для работы программ.

В качестве тестовой программы для проверки функционирования видеоконтроллера предлагалась игра "Тетрис".

Монитор-F мог работать как совместно с монитором-0, так и без него. Основная проблема была в том, что монитор-F стартовал с адреса #F800, а по сбросу процессор начинал работу с адреса #0000. Например, для обхода этой проблемы в компьютере "Радио-86РК" был предложено изящное решение, когда по сбросу в адресное пространство ОЗУ с адреса #0000 подставлялось содержимое ПЗУ монитора (сам монитор находился по адресу #F800), а после выполнения первой команды монитора (JP #F836) конфигурация адресного пространства возвращается в нормальное состояние. В ЮТ-88 предлагалось загружаться со включенным монитором-0, стартовать из него монитор-F, затем тубмлером отключить ПЗУ с монитор-0 и включить на его место ОЗУ. Потом вручную занести по адресу #0000 команду перехода на монитор-F и по адресу #0038 (обработчик прерываний) команду перехода на обработчик прерываний монитора-F. Лишь тогда по сбросу можно было перейти прямо на монитор-F. Вот так вот.

Распределение памяти

Карта памяти компьютера неоднородна:

#0000-#03FF - ПЗУ монитор-0 (1КБ) #0400-#0FFF - повторяется три раза монитор-0 (1КБ) (при условии, что не установлено ПЗУ с калькулятором) #0800-#0FFF - ПЗУ с калькулятором

#3000-#7FFF - дополнительное ОЗУ для монитора-F (2КБ) #3800-#3FFF - повторяется дополнительное ОЗУ для монитора-F

#9000,#9001,#9002 - семисегментые индикаторы

#C000-#C3FF - ОЗУ монитора-0 (1КБ) #C400-#CFFF - повторяется 3 раза ОЗУ монитора-0

#E000-#E7FF - видео-ОЗУ (2КБ) #E800-#EFFF - повторяется видео-ОЗУ (2КБ) #F400-#F7FF - ОЗУ монитора-F (1КБ) #F800-#FFFF - ПЗУ монитор-F

Мириться с такой организацией памяти было нельзя, поэтому в журнале №11/1989г появилась статья "Модуль дополнительного ОЗУ". В ней предлагалось расширить ОЗУ компьютера до 64КБ на восьми микросхемах КР565РУ5. Теперь адресное пространство ОЗУ становилось непрерывным. Все прежние установленные микросхемы ОЗУ можно было отключить или вообще выкинуть из схемы, за исключением видео-ОЗУ.

Операционная система "ОС ЮТ-88"

Описанию операционных систем для ЮТ-88 был посвящён целый номер журнала (№2/1990г)

Для "ЮТ-88" была своя простая ОС под названием "ОС ЮТ-88". Она представляла собой собственный монитор, отладчик, редактор и ассемблер. Собственный монитор работал вместо монитора-F, поэтому ПЗУ с монитором-F надо было отключать. Реально это выглядело следующим образом - ОС представляла собой загрузочный модуль, который после запуска предлагал отключить все ПЗУ и включить непрерывное адресное пространство ОЗУ #0000-#FFFF. Естественно это надо было делать тумблерами. После этого загрузчик "рассовывал" компоненты ОС на свои места в памяти и запускал монитор. Монитор был с более расширенными возможностями по сравнению с монитором-F.

"ОС ЮТ-88" не является полноценной операционной системой, т.к. нет файловой организации программ и данных.

Операционная система "CP/M"

Для "ЮТ-88" даже была адаптирована ОС CP/M (под названием "CP/M 64"). Ввиду отсутствия дискового интерфейса работа с файлами преполагалась через квазидиск, который был расположен в памяти компьютера. Сами файлы могли загружаться или записываться на ленту. Квазидиск мог быть разного объёма - от 64КБ до 256КБ. Нужно было добавить к имеющейся памяти ещё несколько КР565РУ5 (для квазидиска на 64К - 8 микросхем памяти, 128К - 16 микросхем и т.д.) и небольшую схему управления памятью. Доступ к квазидиску осуществляется через стек. Естественно, что после выключения питания компьютера вся информация на квазидиске терялась. В журнале высказывалось предложение автономного питания квазидиска от автомобильного аккумулятора, чтобы не приходилось после включения компьютера перезагружать все программы заново.

Если не было возможности спаять квазидиск, автором предлагалась немного переделанная версия системы CP/M 35, которая работала только с основной памятью компьютера.

На данный момент добиться полной работоспособности ОС ЮТ-88 и CP/M мне не удалось. Так что в компьютере, описание которого будет ниже, эти системы присутствуют чисто для ознакомления с их интерфейсом :)

Квазидиск

Очень интересная идея для организации хранения данных на дополнительном ОЗУ. Реализации идеи способствует тот факт, что компьютер построен на процессоре КР580ВМ80. Суть квазидиска в том, что доступ к нему организуется через стек и никак более.

Почему КР580ВМ80? Дело в том, что процессор не имеет "на борту" контроллера для организации шины управления. В нём нет, как в Z80 готовых выходов для обращения к памяти и внешним устройствам. Для КР580ВМ80 эти сигналы формирует внешний контроллер, в ЮТ-88 это специализированная микросхема КР580ВК38. По сигналу /STB (который является синхронизированным с тактовой частотой проинвертированным сигналом SYNC) процессор через шину данных передаёт так называемое управляющее слово, в котором "зашифрован" текущий режим работы. Это слово распознаётся контроллером КР580ВК38, и он формирует на своих выходах требуемые сигналы (чтение/запись, память/внешнее устройство).

В управляющем слове бит D2=1 означает операции работы со стеком. Поэтому для обращения к памяти квазидиска берётся бит 2 шины данных процессора, выделяется из управляющего слова, и в момент работы со стеком основное ОЗУ откючается и вместо него подставляется ОЗУ квазидиска.

На практике это выглядит так: допустим требуется записать в квазидиск по адресам #0000 и #0001 два байта - #11 и #22. Для этого делаем следующие операции:

1) Включаем возможность работы с квазидиском. Записываем в порт #40 требуемое значение. Оно зависит от той области данных квазидиска, доступ к которой нужно получить. Квазидиск разбит на куски объёмом по 64КБ. Бит 0=0 включает первые 64К квазидиска. Бит 1=0 включает вторые 64К квазидиска, бит 2=0 включает третьи 64К квазидиска и бит 3=0 включает четвертые 64К квазидиска. Итого квазидиск может иметь объём от 64К до 256К. Одновременная установка нескольких бит порта #40 в 0 не допускается! В нашем случае требуется доступ к первым 64К памяти квазидиска, поэтому пишем в порт #40 значение %11111110 или 254 в десятичной форме: LD A,#FE OUT (#40),A

2) ОЗУ квазидиска нельзя "увидеть" кроме как через операции работы со стеком. Поэтому для записи данных на квазидиск может использоваться команда PUSH (я совсем не силён в мнемониках команд ВМ80, поэтому программирую для ВМ80 на Спектруме, где используются мненоники команд Z80). Команда PUSH сохраняет на стек сразу два байта данных и работает по следующем алгоритму:

SP=SP-1 старший байт регистровой пары -> (SP) SP=SP-1 младший байт регистровой пары -> (SP)

Для записи требуемых значений делаем так: LD SP,#0002 LD HL,#2211 PUSH HL

3) Выключаем доступ к квазидиску: LD A,#FF OUT (#40),A

4) Для извлечения записанных данных с адреса #0000 квазидиска делаем следующие операции: LD A,#FE OUT (#40),A LD SP,#0000 POP HL На выходе будет L=#11, H=#22

Дополнительная периферия

Для "ЮТ-88" можно было собрать программатор для ПЗУ К573РФ2(5). Схема программатора и управляющая программа были опубликованы с журнале №5/1990г.

Немного справочной информации:

Коды клавиш в компьютере минимальной конфигурации:

Клавиша "0" - #10 Клавиша "1" - #01 ... Клавиша "F" - #0F Клавиша "ШН" - #80 Не нажата никакая клавиша - из порта читается #00

Порты КР580ВВ5 (расширенная клавиатура):

Порт A - #07 Порт B - #06 Порт C - #05 РУС - #04

Порт клавиатуры (в компьютере минимальной конфигурации) - #A0 (ввод) Чтение с ленты - #B0 (ввод, бит 0) Запись на ленту - #B0 (вывод, бит 0) Порт для включения квазидиска - #40 (вывод)

Нововведение - звуковой синтезатор на КР580ВИ53. Принцип работы такой же, как компьютере "Байт" - деление частоты (в данном случае 1,77 МГц) и вывод трёхканального звука. В данный момент звуковой синтезатор не поддерживается ни в одном из мониторов (0 и F), но есть демонстрационная программа под названием Decode, которая из-под Monitor-0 проигрывает мелодию на КР580ВИ53. Программу можно скачать (или посмотреть и послушать как она работает) здесь. Порты трёх каналов ВИ53 - #50, #51, #52 Управляющий регистр ВИ53 - #53

Не забываем, что как и в случае с ВИ53 в компьютере "Байт", в ЮТ-88 при включении питания из динамика будут раздаваться неприятные звуки. Для устранения этого необходимо при старте компьютера глушить ВИ53 так же, как это сделано в "Байте". С поправкой на порты ЮТ-88 это можно сделать следующим образом:

LD A,#3A OUT (#53),A ADD A,#40 OUT (#53),A ADD A,#40 OUT (#53),A

Этот код необходимо встроить в самое начало Monitor-0. В моём самодельном ЮТ-88 этот код встроен в начальный загрузчик.

Программное обеспечение

Количество программ, написанных или адаптированных для ЮТ-88 весьма скудно, но благодаря энтузиазму пользователей форума zx.pk.ru дело постепенно поправляется.

Список программ для ЮТ-88 вынесен на отдельную страницу.

Самодельный компьютер "ЮТ-88"

Собственно говоря ради этого и была создана эта страница :)

Ввиду редкости и экзотичности компьютера я решил собрать его. Однако схему компьютера пришлось несколько переделать по нескольким причинам: - не все микросхемы удалось найти (в частности К155РП1) - чтобы не заморачиваться с пайкой огромного количества микросхем ОЗУ я решил сделать всю память на статических ОЗУ. - чтобы уйти от кучи тумблеров для выбора конфигурации я решил всё ПО "засунуть" в одно ПЗУ, написать свой загрузчик конфигурации, а для управления всем этим добром ввёл дополнительный порт с адресом #B0.

Схему компьютера можно скачать в конце этой страницы.

Кратко опишу схему: Нумерация микросхем дана вразброс, потому что приходилось компоновать одну схему из нескольких. Процессор DD1 (КР580ВМ80) тактируется от генератора DD2 (КР580ГФ24). На DD3 (К176ИЕ5) сделан генератор импульсов прерываний. Шинный формирователь DD8 (КР580ВК38) буферирует шину данных и вырабатывает сигналы управления доступом к памяти и портам. На DD5,DD6 (КР580ИР82) сделаны буферы для шины адреса. DD7 (К155ИД3) выбирает к какому сегменту памяти (сегменты по 4КБ) идёт обращение, параллельно она же выбирает номер порта (при обращении к портам адрес порта дублируется на старших разрядах A8-A15 шины адреса). DD221,DD223,DD225 (КР1533ИР37) - в них записывается выводимая на индикаторы информация (один индикатор - половинка порта). Динамическое отображение информации на индикаторах выполнено на DD220,DD219,DD218,DD222,DD224,DD226. DD23 (К155РЕ3) преобразует 4-разрядный код в код для сегментов индикатора. Я использовал индикатор с общим анодом, поэтому для обеспечения достаточного тока для сегментов индикатора используется повторитель DD228 (КР1533ЛП16). На DD209 (КР1533ИД7) сделан дешифратор для записи в регистры индикатора. В минимальной конфигурации для формирования кодов клавиатуры используются ПЗУ DD15,DD16 (КР556РТ4).

Порт для выбора конфигурации сделан на DD207 (КР1533ИР35). На DD210 (КР1533КП12) сделана схема выбора обращения к ПЗУ/ОЗУ в зависимости от того, какая конфигурация в данный момент выбрана. DD211 (КР1533КП11) управляет микросхемами ОЗУ (ОЗУ сделано на микросхемах по 32К, поэтому DD211 выбирает в зависимости от А15 какая микросхема ОЗУ должна работать). DD243 (КР1533КП16) управляет выбором страниц ПЗУ (по 4КБ).

На микросхеме DD105 (КР580ВИ53) выполнен звуковой синтезатор. Обращаю внимание, что при включении компьютера из-за особенностей работы КР580ВИ53 из динамика будет раздаваться мерзкий писк. Поэтому при старте машины микросхему необходимо "глушить", например, как на компьютере "Байт". В моём случае процедура глушения внесена в начальный загрузчик компьютера.

Видеоконтроллер выполнен почти без изменений, как в журнале.

DD244 (КР1533ТМ2) управляет доступом к квазидиску. DD119 (КР580ВВ55) - клавиатурный порт.

Список портов компьютера и их описание есть на схеме.

По сбросу компьютера запускается загрузчик, из которого можно выбрать в каком режиме будет работать компьютер. Сам загрузчик написан на ZX-Spectrum.

Компьютер собран на макетной плате.

Самодельный ЮТ-88 на макетке в процессе отладки

Плата самодельного ЮТ-88 (КР580ВИ53 ещё не установлена)

Самодельный ЮТ-88 на макетке в процессе отладки

Плата самодельного ЮТ-88 (КР580ВИ53 ещё не установлена)

Плата самодельного ЮТ-88, монтаж проводом МГТФ

Клавиатура самодельного ЮТ-88

Плата самодельного ЮТ-88, монтаж проводом МГТФ

Клавиатура самодельного ЮТ-88

Самодельный компьютер ЮТ-88 в сборе

Самодельный компьютер ЮТ-88 в сборе

Самодельный компьютер ЮТ-88 в сборе

Скачать:
Мой вариант схемы ЮТ-88 (редакция от 1.06.2014)
Прошивки ПЗУ
Прошивка ПЗУ с загрузчиком,всеми ОС и мониторами для моей схемы (редакция от 1.06.2014)
Исходники загрузчика (написаны на ZX-Spectrum, ZASM3, trd-файл) (редакция от 1.06.2014)
Тестовое ПЗУ для проверки памяти ЮТ-88 в различных конфигурациях (редакция от 9.06.2014)Описание работы и исходник находятся внутри архива
Программное обеспечение:
Описание, скриншоты и видео работы программ находятся на отдельной странице
Игра Tetris (rku-файл)
Демка dEC0dE (rku-файл и wav-файл)
Игра 2048 (rka-файл)
Игра Klad (rku-файл)
Демка-гифт Trigona Kalanda (rku-файл)
Книги:
Простейшая микро-ЭВМ (Буреев Л.Н.)Пособие по проектированию и сборке компьютера, аналогичного ЮТ-88 минимальной конфигурации
Микро-ЭВМ своими руками (Тищенко В.Г.)особие по проектированию, изготовлению и наладке самодельной микро-ЭВМ наподобие ЮТ-88 в минимальной конфигурации
От самоделок на логических элементах до микро-ЭВМ (Бартенев В.Г.)Собственно тут собраны все журнальные материалы по ЮТ-88 плюс много теории
Ссылки:
Ещё один самодельный ЮТ-88.
Архив журналов "Юный техник". Отсюда можно скачать приложения к журналу "ЮТ Для умелых рук" со статьями по "ЮТ-88"
ЮТ-88 в "Википедии"
ЮТ-88 на retro.h2.ru
Сайт Башкирия-2М. Тут есть хороший эмулятор "ЮТ-88".
Обсуждение ЮТ-88 на zx.pk.ru
Сайт emu80. Здесь есть немного программ для ЮТ-88, а также эмулятор Emu80, с дополнительными утилитами, которые позволяют загружать файлы прямо с выхода звуковой карты компьютера в ЮТ-88

zxbyte.ru


Читайте также
  • Гиперскоростная звезда – более 1.000.000 миль в час
    Гиперскоростная звезда – более 1.000.000 миль в час
  • Астрономы обнаружили самую большую спиральную галактику
    Астрономы обнаружили самую большую спиральную галактику
  • Млечный путь содержит десятки миллиардов планет, схожих с Землей
    Млечный путь содержит десятки миллиардов планет, схожих с Землей
  • Млечный путь разорвал своего спутника на четыре отдельных хвоста
    Млечный путь разорвал своего спутника на четыре отдельных хвоста
  • Найден источник водородных газов для нашей Галактики
    Найден источник водородных газов для нашей Галактики