Обо мне
Привет! Меня зовут Лис и это мой блог. Здесь я могу ныть и страдать, писать про код и обо всем.
Календарь записей
Май 2024
ПнВтСрЧтПтСбВс
12345
6789101112
13141516171819
20212223242526
2728293031
Теги
Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet

28 фев 2023 Дорабатываю модуль KR580

Модуль этот я начал делать много лет назад и как обычно, тысячу раз делал и делал, и кое-как доделал. В чем замес модуля процессора? Он должен быть довольно простой и не содержать большого количества ненужных инструкции. Нет префиксированных команд. Сегодня я оптимизировал исполнение некоторых инструкции, например LD r,r сделал за 1 такт и также ADD HL,Reg16 тоже за 1 такт. Переработал обработчик прерываний. Там еще есть что оптимизировать и я этим буду постепенно заниматься.
Также пишу код для создания "муляжа" биоса, это для того, чтобы установить эту программу и наслаждаться чистым биосом. Что-то можно делать в нем, настраивать, даже инициализировать диски, которых нет, но самое интересное в том, что ничего этого сохраняться не будет. Просто биос, который ничего не значит. Это сложный код, несмотря ни на что.
Modularo.png
Такой вот экран мне пока что удалось нарисовать. Этого немного. Тут надо еще подцепить клавиатуру, пробросить порты, целая масса дел, а мне лень. И ради только того, чтобы этот экран появлялся.
Допустим, если я смогу сделать биос, стану ли я после этого делать какую-нибудь, пусть даже очень простую, операционную систему? Большой вопрос, и пока я не сделаю экран биоса, ни о какой ОС и думать даже не буду.
Метки: Процессор

25 фев 2023 Делал упрощенный z80

Я как-то откопал один свой недоделанный проект по упрощенному z80 и стал его доделывать сегодня с утра, добавил верилятор, поправил код, передал довольно много вообще в самом ядре, чтобы все работало без always @*, потому что верилятор как-то плоховато понимает это дело. У меня вообще есть идея сделать загрузочный экран (симулятор экрана), для биоса. Сегодня решил посмотреть, какой там экран загружается и оказалось, что не все так как я думал раньше.
award.png
Если обратить внимание, то размер экрана будет 640 на 350 точек! Да, именно так, самое низкое разрешение VGA из возможных. Меня это немного не устраивает, ведь тогда шрифты тоже будут размером 8x14 точек, чтобы вместить 25 строк. Обычно я рассчитываю размер экрана на 640 x 400 точек, а тут высота 350. При переходе в настройки BIOS, правда, высота меняется на обычную, 16 точек на символ.
Интересная деталь в том, что якобы графика, где написано Epa Pollution Preventer и сверху Energy Star, все это нарисовано через знакоместа и в текстовом режиме, просто здесь изменен знакогенератор, чтобы рисовались символы из дополнительного набора (128-255), не ASCII. Раньше я голову ломал, как же так, вроде текстовый режим, а наложили графику. Оказывается, никогда из текстового режима эта графика и не уходила. Просто текстовые символы имеют такое начертание.
Метки: Процессор

13 фев 2023 Упорно думаю что можно сделать на Max10

Уже который день меня не отпускает мысль, что же можно сделать для этого чипа, Max10, ну решительно ничего в голову не лезет! Может думаю, процессор мелкий впихать туда, типа 6502 или z80, но вот тоже, даже если его и запихну, что это даст, неясно вообще. Максимум, на что способен этот чип, так это лишь на то, чтобы сделать из него некий калькулятор небольшой, и только. Больше не знаю что можно сделать.
Мне правда, хочется его приспособить. Можно отсылать ему команды, он будет принимать, обрабатывать и выводить обратно. Может, сделать мини-игру? Не трехмерную, конечно, а типа текстового квеста. Такой, мирок небольшой, который рандомно развивается, типа небольшого фентезийного мира.
К примеру, там будет несколько локаций, которые можно исследовать, или они будут генерироваться случайным образом с помощью псевдорандома. И опять, ну не хватит же памяти для этого! 12 Кб лишь на чипе, не хватит памяти для генератора, даже у Элиты на спектруме было 48 килобайт и то еле-еле туда вместилось.
С другой стороны, почему бы не попробовать, даже с ограниченным количеством локации. Что от таких игр нужно? Особо ничего, фармить только со временем, собирать различные грядки, как в майнкрафте, только в текстовом виде. И все это делать с помощью консоли, то есть, открывать консоль через любой терминал, например через Arduino IDE или screen в линуксе, и посылать команды, такие как WALK, VIEW, HOME и так далее, которые будут передаваться по UART, приниматься через прерывание, обрабатываться и выдавать результат назад.
Можно будет записать и прочитать образ памяти 12Кб (это будет 15Кб base64), или использовать UFM, только для этого надо научиться ей пользоваться.
Метки: Процессор

06 фев 2023 Пишу небольшой биос

Как и обычно, в течении некоторого времени я пишу программы, потом закрываю эти проекты, потом снова открываю и так далее. Сегодня сделал и проверил, чтобы в вериляторе работал мой проект с 86-м процессором (16 битным), и еще чтобы запускался на DE0. Как ни удивительно, но места занимает этот процессор не так много, около 3700 ALM из 18к всего доступных, что лишь только приблизительно 21% от кристалла. Это вообще-то, хорошо.
Контроллер прерываний работает вроде неплохо, я решил, что сделаю по-хорошему клавиатуру, через IRQ#1, с записью принятых данных в кольцевой буфер в оперативной памяти, кстати, которой довольно немало, 288 Кб, это только про кеш, а я потом обязательно сделаю DRAM, чтобы можно было адресовать до 1Мб и даже выводить видео 320x200. Единственное что могу сказать, это мне пока что вряд ли нужно в данный момент.
Этот биос не должен быть очень большим, уметь разбирать данные с клавиатуры, выводить на экран и работать с SD-картой, как минимум. Прямо минимальная функциональность должна быть какая-то, чтобы начать более-менее писать небольшие программы. Как-то еще думал, сделать ли игру на ASCII, но чего-то, мне кажется, плоховато получится, наверняка, так что это вряд ли в данный момент.
Код у меня так разбросан по всем углам, не могу никак один проект в одном месте держать и вообще, создать один проект и чтобы он работал нормально, обязательно по разным проектам одно и тоже понаписано, прямо не знаю, такое у меня дурацкое свойство есть, так делать.
Метки: Процессор

05 фев 2023 Просто переделал свой процессор

Не смог я выдержать и все же, переделал код процессора с утра с 32-х битного в 16-битный, для того, чтобы он влез в Марсоход2. Синтезировал процессор этот на циклоне и вышло около 6.8 тыс элементов. Ниже привел отчет по завершении компиляции. И это лишь только процессор. Пока что вмещается.

Помимо самого процессора, на кристалле должна быть также и вся остальная периферия, это например, контроллер прерываний, клавиатура, как минимум и еще бы хорошо туда поместить карточку SD, без нее сложно будет. Хотя, как я ранее и говорил, я не собирался делать программы большими (если я вообще их буду делать, вот в чем вопрос).
Снимок экрана от 2023-02-05 11-25-58.png
Вот так выглядит запущенная простая программочка:
        org     0
        mov     ax, $b800
        mov     es, ax
        mov     ax, cs
        mov     ds, ax
        mov     si, hello
        mov     di, 0
        mov     ah, $30
@@:     lodsb
        and     al, al
        je      $
        stosw
        jmp     @b
hello:  db      "Operational sistemcher. Award Modularo. Contest mecha!",0
Эта программа сделана только для теста, она пока что отображается лишь в вериляторе.
Метки: Процессор

28 янв 2023 Почти три с половиной часа кодинга

Не буду я делать по 8 часов видосы, сделал пока что 3 с половиной часа, и вот что я успел сделать за это время:
instr.png
Моя любимая табличка с выполненными опкодами. Для 8088 интересная ситуация получается, там некоторые опкоды работают не так, как на обычном 86-м процессоре, например, все 60-6F отведены под алиасы. Так как я решил что не буду отклоняться именно от 8088, то там будут алиасы. Более новые программы уже не запустить на этом процессоре... А я и не собираюсь, вообще-то. Максимум HELLO WORLD будет на нем запущен, а для этого даже простейшего процессора хватит.
Проще говоря, хочу создавать простые программы для процессора этого, например, те же сортировки. Ресурсов Циклона 3 хватит. Там много не надо, 38 Кб для программ и данных, 8 Кб для видеопамяти, в итоге и получается 46 Кб. Программы для этого процессора будут предельно простые, вообще. Это важно, прямо вообще важно, потому что когда делаешь такие вещи, хочется сделать что-то большее, чем вывод HELLO WORLD на экране, а что-то такое, сверх-космическое.
Как и обычно, после того как сделаю процессор (если сделаю), то на нём захочется запустить или создать операционную систему. Вот этого делать не надо! Все потому, что для того, чтобы запустить ОС, нужен диск, которого я подключить не могу к Марсоходу. Даже если бы и мог, толку от нее ноль.
Микро-операционная система может быть только для того, чтобы запускать разные мелкие программки из памяти. Например, можно сделать интерпретатор бейсика, который будет запускать заранее загруженные программы. Все должно быть максимально, предельно просто. Вот в чем суть всего того, что я хочу сделать и всегда делал.
Простота программ должна быть обязательно.
Метки: Процессор, 8088

27 янв 2023 Создание 8088 процессора под видеозапись

Короче, вот что начал я делать, стал писать процессор на верилоге, но не просто так, а записывая абсолютно все. Процессор с нуля. Единственное что могу смотреть — это доки и какой-нибудь си-код, например, из PCem эмулятора, ну и на сайте у себя тоже. Копипаста запрещается, все должно быть написано руками без копипасты из своих других процессоров. Делаю это для того, чтобы оценить то время, за которое реально создам процессор с нуля. И это должен быть процессор 8088, чтобы он вмещался также в Циклон 3 для Марсохода2.
I8088.jpg
Все отлично знают, что у меня просто мания создавать процессоры, особенно архитектуры 86-го. Много создавал уже разных эмуляторов, и мне очень хочется именно зафиксировать на видео. Оно получится видимо, больше чем 8 часов, но это нормально. Все эти видео специально не буду ускорять, прямо так склейку сделаю и выложу на ютуб себе, сохраню как есть. Ну, может быть, музыку наложу, чтобы совсем не скучно было. Никто смотреть не будет все равно это дело.
На данный момент я работал над процессором 2 часа и 5 минут и за это время смог сделать, но не отладить:
  • Чтение опкода и префикса
  • Сделал АЛУ на 8 операции
  • Чтение байта modrm и считывание опкода из памяти и регистров
  • Запись в память или регистр
На самом деле, это довольно значительно, но поскольку я уже ранее все это делал, то не так сложно. Отладки не выполнял, просто пока что написал по памяти. Посмотрим потом, как это работать будет.
Далее надо сделать исполнение инструкции, и вот тут самая большая проблема. Инструкции выполняются минимум за 2Т, но я принципиально решил, что не буду ничего ускорять. Процессор 8088 и так медленный был и выполнялся на низких частотах (от 5 до 16 Мгц), так что я ровным счетом ничего не потеряю от того, что запущу на 25 Мгц.
Метки: Процессор, 8088

21 янв 2023 Компьютер на транзисторах

Как много я говорил об этом уже и не перестану говорить, наверное, никогда — это про детство, о моих детских мечтах, желаниях, которые частично исполнились, но некоторые нет, и, наверное, никогда не сбудутся. Дело в том, что когда у меня не было компа, я мечтал о нем, пытался сделать каким-то образом. Помню, как делал что-то вроде электронной викторины, когда лампочка загоралась при нажатии на фольгу, как это доставляло мне радость, такая простейшая вещь, просто лампочка, батарейка и куча фольги и картона с клеем, кстати, именно лампочка, а не светодиод. Это вроде такой небольшой миниатюрной лампы из машины для подсветки.
Ранее я уже рассказывал о том, как кое-кто из моего прошлого сказал, что создал собственный процессор на транзисторах, как я десятилетия пытался разобраться в принципе работы транзисторов и как разобрался. Смогу ли я сделать процессор сейчас, понимая то, как работает транзистор?
Ответ: нет, это невозможно. Создать полноценный компьютер только лишь из одних транзисторов — дело реальное, но крайне затратное и бессмысленное. Такой процессор будет потреблять много тока, делать мало и занимать огромную площадь, при этом легко может и ломаться где-нибудь.
megaprocessor-panorama.jpg
Рис 1. Вот так выглядит уже созданный Megaprocessor
Но что, если не делать сложный компьютер? Что если ограничиться сотней транзисторов и на этом успокоиться? Ведь именно в детстве мне не нужен был сложный комп, мне нужен было именно свой, сделанный своими руками. То есть, на самом деле, мне достаточно одного лишь сумматора с несколькими триггерами. Сделать такой процессор не так и сложно на транзисторах. Проблема в том, что, помимо транзисторов, требуется еще и огромное количество резисторов, даже больше, чем самих транзисторов. Мало того, можно сделать еще и навесным монтажом, ведь в детстве у меня не было ничего, кроме папиного паяльника. Управляться с ним я не умел, но все же... для начала, можно сделать просто обычный полный сумматор. Для него потребуется 18 транзисторов (2 XOR + 1 NAND). Резисторов потребуется примерно столько же, я как-то не считал еще.
Можно пока что собрать на макетной плате такой сумматор, тоже, между прочим, один из вариантов. Только такая сборка будет не зафиксированной. У меня есть печатные макетные платы, туда можно как раз и сделать. Сделать хотя бы один сумматор. Это уже будет для меня достижение.
Метки: Процессор, Детство

13 янв 2023 Конфигурация компьютера на AVR

Однажды, я решил, что мне не нужны никакие высокие разрешения для того, чтобы выводить что-то на экране. И самым интересным и самым ретро-олдовым решением стало 256 x 192 от ZX Spectrum.
screen.png
Мне пришла мысль, что можно сделать интерфейс даже несмотря на такое низкое разрешение от спектрума. Но вот ядро процессора я выбрал не Z80, а другое, а именно AVR. Почему такой выбор я сделал?
  • Он относительно простой в реализации
  • Быстрый, большинство инструкции за 1 такт
  • Достаточно распространен
  • Под него есть компилятор avr-gcc
Так что довольно много преимуществ, но есть и большие недостатки.
  • Памяти всего 64Кб
  • Гарвардская архитектура — память программ и оперативная память раздельные
Память можно расширять различными методами, писать в порты например или использовать банки памяти. И в том, и в том случае есть свои достоинства и недостатки. Можно и так и так сделать, вообще-то.
Эта система на чипе (SoC) все еще не дописана из-за моей легендарной лени. Это не я такой, это жизнь такая, что мне лениво все делать.
Какие у меня планы на этот компьютер и процессор? Да, если подумать, особо то и никаких. Мне лично не требуется какой-то отдельный компьютер для работы и хобби, хватает вообще лишь только одного. Даже два монитора не нужно, обхожусь единственным. У меня есть два монитора, но я их не использую, так что под большим вопросом, а буду ли я вообще использовать свой собственный компьютер? Ответ — нет. А зачем? Что на нем делать? Софта нет, писать не хочу. Конечно, мне как-то хотелось создать что-то вроде своего уютного уголка компьютерного, где я мог бы отдыхать, такая у меня была задача и стремление.
Допустим, что я бы сделал? Ну, к примеру, календарь. Зачем, когда и так есть под рукой несколько на разные вкусы. Или текстовый редактор, и опять-таки, зачем? Зачем, зачем — эти вопросы мучают меня. Есть более выгодные, приятные и правильные альтернативы. Все что я делаю, полностью бессмысленно.
Метки: Процессор, AVR

13 янв 2023 Обдумывал процессор на NAND

У меня есть одна проблема, она прямо сильно меня тревожит, это то, что я постоянно хочу сделать какой-то процессор на простых логических элементах или на транзисторах. Ясное дело, чтобы сделать что-то более-менее рабочее, надо потратить тысячи транзисторов, тогда да, будет какой-то толк. Но мне же хочется что-то на коленке собрать.
Когда-то давно, когда я учился еще в 9-м классе, я ездил на одну олимпиаду по программированию и встретил там парня, который мне рассказал, как он смог сделать процессор из транзисторов. Я был потрясен до глубины души и всю жизнь мечтал понять и разобраться в том, как он это сделал, и как это вообще возможно. Спустя большое количество времени, а именно, мне там было 16 лет, сейчас уже 36, то есть, через 20 лет, я осознал, что ничего сделать быстро и просто невозможно. Он похоже, сделал не то, что я думал, не полноценный компьютер Intel Pentium 233 Mhz, а похоже, он сделал обычный сумматор, который был выдан за компьютер. Сумматор на транзисторах я тоже могу сделать уже без проблем. И он упомянул, что этот его процессор был собран на коленке.
Вспоминая все это, я пришел к выводу, что если и делать что-то, то не замахиваться на реальные процессоры, а будет вообще достаточно собрать даже пусть на весу на транзисторах схему сумматора и вычитателя, либо на NAND. Как обычно, я начал вести подсчет того, сколько мне чего надо и просто ужаснулся, честно говоря. Надо очень много и это еще будет только 5% того, что реально надо будет сделать.
Чтобы сделать сумматор 4 битный, потребуется 9 микросхем 4-NAND. Но ведь сумматора недостаточно. Еще надо приделать туда триггеры на вход и выход, вычитатель. Для вычитателя потребуется например, еще +5 микросхем для реализации XOR (4 входа и 1 перенос), то есть уже 14 микросхем только для того, чтобы сделать сумматор с вычитателем. Это просто ужасно много.
И да, а стоит ли оно того, чтобы сделать? Что это мне даст? Ровным счетом, ничего, кроме того, что это будет просто сувениром на полочке, который занимает лишнее место. Поэтому все что я делаю, обычно делаю на ПЛИС-е, потому что это в тысячи раз удобнее, проще и возможностей больше. Но ведь даже то, что я сделал на ПЛИС, я не пользуюсь этим. Так что еще неизвестно...
Итак, поскольку процессор на NAND я делать не буду, может быть, мне можно будет сделать его в ПЛИС? В целом, конечно, да, но этот процессор слишком примитивный. Как ни крути, со всех сторон это никак невыгодно, неудобно, глупо и бесполезно.
Мне, кроме прослушивания музыки, сидения в соцсетях и написания бредовых текстов, вообще ничего не надо от компа. bore
Метки: Процессор, Истории
<< Ранние записи | Поздние записи >>