Перейти к содержанию

Alikberov

Members
  • Постов

    11
  • Зарегистрирован

  • Посещение

Информация о Alikberov

  • День рождения 17.08.1979

Информация

  • Пол
    Мужчина
  • Город
    Ташкент

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    микропроцессоры
  • Оборудование
    ПК

Посетители профиля

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

Достижения Alikberov

Новичок

Новичок (1/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

2

Репутация

  1. Предлагаемый скрипт является попыткой наглядной эмуляции индикаторов серии. Если официальная документация (ссылка#1 / ссылка#2) понята верно, алгоритм эмуляции вполне работоспособен и позволит ознакомиться с индикатором. Запустить симулятор можно по ссылке. Допускается использование параметров: fade - скорость затухания светодиодов (пример) speed - скорость перебора битов управления D0-D7 (пример) stream - шестнадцатеричный управляющий поток (пример) параметры можно использовать в совокупности (пример) P.S.: Надеюсь, кому-нибудь пригодится, хотя бы для ознакомления. Если заметите неточности или ошибки, постараюсь исправить.
  2. Eсли для кого-нибудь до сих пор будет актуальной логика работы микросхемы К155ИЕ8 / SN7497 - визуальный онлайн симулятор здесь.
  3. Кое-как накидал Web-эмулятор онлайн: Запуск эмулятора (инструкции не имеют фиксированного размера) Классический режим (одна инструкция - один байт, как и работает классическая Logisim-схема) Автозапуск Автозапуск в Классическом режиме Автозапуск листинга программы, загруженного с gist'а Эмулятор пока ещё сырой и активно дорабатывается, но уже вполне годится не только для визуализации задуманной идеи в демонстрации, но и для разработки и отладки кода под данную архитектуру. Немного занимался и проработкой акынской карты портов Устройств Ввода-Вывода… Не нарушая принципа «что вижу - с тем и работаю», пришёл к оптимальному варианту, где: Регистр D9 служит номенклатурным селектором целевой ИМС Регистр D8 служит индексным селектором выбранной категории ИМС ╔════╤════════╤════════════════════════════════════════════════════════════════╗ ║ D9 │ ИМС │ Описание доступа к ресурсам микросхемы через РОН процессора ║ ╠════╪════════╪════════════════════════════════════════════════════════════════╣ ║0x32│ i8232 │ D0 - Регистр Данных ║ ║ │1816ВЕ32│ D1 - Регистр Статуса ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x45│ i8245 │ D0 - Данные ║ ║ │ │ D1 - Адрес ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x53│ i8253 │ D0/D1/D2 - Каналы Счётчиков 0/1/2 ║ ║ │К580ВИ53│ D3 - Регистр Статуса Таймера ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x55│ i8255 │ D0/D1/D2 - Порты A/B/C ППА ║ ║ │К580ВИ55│ D3 - Регистр Статуса ППА ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x57│ i8257 │ D0/D2/D4/D6 - Каналы 0/1/2/3: ПДП Адрес ║ ║ │ │ D1/D3/D5/D7 - Каналы 0/1/2/3: ПДП Счёт ║ ║ │К580ВТ57│ D8 - Регистр Статуса ПДП ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x72│ i8272 │ D0 - Регистр Статуса ║ ║ │FDD Unit│ D1 - Регистр Данных ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x75│ i8275 │ D0 - Регистр Данных ║ ║ │К580ВГ75│ D1 - Регистр Статуса ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x79│ i8279 │ D0 - Регистр Данных ║ ║ │К580ВВ79│ D1 - Регистр Статуса ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x93│ FD1793 │ D0 - Регистр Команд / Регистр Статуса ║ ║ │ │ D1 - Регистр Дорожки ║ ║ │ │ D2 - Регистр Сектора ║ ║ │1818ВГ93│ D3 - Регистр Данных ║ ╚════╧════════╧════════════════════════════════════════════════════════════════╝ ╔════╤════════╤════════════════════════════════════════════════════════════════╗ ║ D9 │ ИМС │ Описание доступа к ресурсам микросхемы через РОН процессора ║ ╠════╪════════╪════════════════════════════════════════════════════════════════╣ ║0x06│ KS58006│ D0…D7 - Порты доступа к DTMF ║ ║ │1008ВЖ16│ ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x31│ UM91531│ D0…D7 - Порты доступа к DTMF ║ ║ │1008ВЖ19│ ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x70│ CMS8870│ D0…D7 - Порты доступа к DTMF ║ ║ │1008ВЖ18│ ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x73│ 74373 │ D0…D7 - Порты доступа к регистрам ║ ║ │ 555ИР22│ ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x74│ 7474 │ D0…D7 - Порты доступа к триггерам ║ ║ │ 155ТМ2 │ ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x10│AY3-8910│ D0…D7 - Порты доступа к Синтезатору звука ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x49│ YM2149 │ D0…D7 - Порты доступа к Синтезатору звука ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x51│TDA5051A│ D0…D7 - Порты доступа к AC-Модему ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x06│ DS2406 │ D0…D7 - Порты доступа к 1-Wire ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x08│ DS2408 │ D0…D7 - Порты доступа к 1-Wire ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x20│ DS18S20│ D0…D7 - Порты доступа к 1-Wire ║ ╟────┼────────┼────────────────────────────────────────────────────────────────╢ ║0x90│ DS9490R│ D0…D7 - Порты доступа к 1-Wire ║ ╚════╧════════╧════════════════════════════════════════════════════════════════╝ Откуда видно, что программисту карта адресации УВВ не нужна в принципе: Если программист знает специфику целевой интерфейсной микросхемы, он просто заносит её серию в регистр D9 BCD-кодированием, а через регистры D0…D7 уже обращается к выбранной ИМС как к порту. Тем самым, архитектура максимально развёрнута и открыта к масштабированию. Естественно, в рамках одной платформы нет необходимости подключения всех ИМС серии i82xx и можно смешивать. Главное, чтобы программа/драйвер в перспективе могла уверено по индексу в D9 найти нужную ИМС со смежным номенклатурным индексом.
  4. Бесплатное производство процессоров объявили - решил на скорую руку придумать оригинальную архитектуру…
  5. Написал Вторую статью с пошаговой иллюстрацией проектирования Койяанискаци, так как начал проектирование с нуля… Сейчас я полностью игнорирую моменты, связанные с производительностью. Регистровый Файл вынес в память, аналогично как в MOS 6502… Операция АЛУ занимает целых 5 тактов: Цикл M₀ читает регистр A₀ с PSW-словом Цикл M₁ читает регистр правого операнда Цикл M₂ читает регистр-приёмника левого операнда Цикл M₆ сохраняет результат в ячейку регистра-приёмник Цикл M₉ сохраняет PSW-слово Иными словами, операция «A₁ += B₂» разворачивается в: M₀: Load PSW:[0x00A₀] M₁: Load SRC:[0x00B₂] M₂: Load DST:[0x00A₁] M₆: Save [0x00A₁]:DST+SRC M₉: Save [0x00A₀]:PSW И требует 1+5=6 тактов, где 1 такт - на считывание кода самой операции, а ещё 5 - на все те циклы… P.S.: Тем самым, за производительностью не гонюсь, но хочу попробовать получить эскиз Койяанискаци с наименьшим количеством элементов, если браться всё-таки его делать рассыпухой на ТТЛ…
  6. Нарисовaл (кое-как) структурную схему процессора: Не люблю малевать то, что не сможет ожить… Вот в Logisim нарисованная схема оживает, мигает лампочками и реагирует на ввод клавиатуры… Но, структурная схема, так или иначе, нужна тем пользователям, кто имеет какой-то интерес… Набросал Verilog-эскиз - получилось порядка 386 эффективных (синтезируемых) строк… Писал небрежно, так как просто любопытно стало посмотреть, как это переварит Quartus… Flow Status Successful - Sun Jul 12 03:26:43 2020 Quartus II 64-Bit Version 15.0.0 Build 145 04/22/2015 SJ Web Edition Revision Name Koyaanisqatsi_CPU Top-level Entity Name Koyaanisqatsi_CPU Family Cyclone V Device 5CEBA2F23C7 Timing Models Final Logic utilization (in ALMs) 395 / 9,430 ( 4 % ) Total registers 374 Total pins 28 / 224 ( 13 % ) Total virtual pins 0 Total block memory bits 0 / 1,802,240 ( 0 % ) Total DSP Blocks 0 / 25 ( 0 % ) Total HSSI RX PCSs 0 Total HSSI PMA RX Deserializers 0 Total HSSI TX PCSs 0 Total HSSI PMA TX Serializers 0 Total PLLs 0 / 4 ( 0 % ) Total DLLs 0 / 4 ( 0 % ) К сожалению, никакой отладочной платы не имею и могу полагаться лишь на симуляцию. Симуляция работает в целом и где-то докопался до таблиц с максимальной задержкой порядка ≈20 нс - около 50 МГц получается? Для восьмибитника с 64 Кб памяти это - слишком даже высокая частота! (Учитывая мой РАДИО-86РК с 1,776 МГц, что тогда вполне хватало…) Какая-то жидкая схема получилась. Слева - дешифратор команд: Красота, простота и компактность… Внизу - слишком много разрозненной логики, так как глядя в облако можно увидеть, что всё свалено кучей в основной модуль, что не очень хорошо! Оказывается на ПЛИС занимаемая площадь совсем мизерная, хотя я беспокоился. Тем самым, можно щедро фаршировать конвейерами и обвешивать различной периферийной средой… Наткнулся на статью Хабра, где демонстрируется описание процессора под ModelSim, но в Logisim параллельно собирается интерактивная модель… Дело в том, что Verilog я начал изучать лишь лет 10 тому назад и практически в нём так и не разобрался, так как многие из эскизов моих процессоров в нём не пошли в Icarus Verilog, а изучение графиков в GTKwave ни к чему не приводило, так как соответствующий институт я не оканчивал и не умею разбираться в формулах и графиках. И лишь год тому назад решил приколоться и скачал Logisim, набросав в нём первый вариант Койяанискаци. И за неделю отладки, к моему большому удивлению, схема завелась и стала адекватно исполнять код. Тем самым, 10 лет барахтанья в Verilog литературы ни к чему толковому не привели, а шуточный симулятор помог наконец-то добиться хоть чего-то работающего! Неделю назад скачал и установил Quartus с ModelSim по совету. Но, понял, что без Logisim не обойтись, так как снова какие-то графики, таблицы отчётов, которые я не понимаю вообще! Пусть это и инженерные инструменты, но без Logisim отладить свой процессор я бы никогда не смог, так как ориентируюсь на ощупь визуально: Бегаю глазами по схеме и вижу, какую логику нужно врезать там-то и там. То есть, схему год назад делал наобум без чёткого плана, лишь бы заставить исполнять «акынскую систему команд». Нашёл один онлайн-сервис с визуализацией Verilog-листинга в электрическую схему. Это мне здорово помогло проработать Verilog-эскиз, так как никакие документированные примеры описания регистрового файла не подходили под мой исходный регистровый файл Logisim-схемы. А значит, модель могла оказаться нерабочей и требовала бы отладки по академическим графикам! Пф-ффф… Напротив, год назад, прорабатывая в Logisim узел выборки команд, ориентировался на свой график, взятый с потолка: FETCH (WAIT) DECODE+DO WRITE RAM FETCH DECODE+DO FETCH DECODE+DO | | | | | | | | | | | | | | | | | | | | ┌───┐t1 ┌───┐tw ┌───┐t3+┌───┐t4+┌───┐t5+┌───┐t1 ┌───┐t2 ┌───┐t1 ┌───┐t2 ┌───┐ CLOCK ─┘...└───┘T1 └───┘T2 └───┘T3+└───┘T4+└───┘T5+└───┘T1 └───┘T2 └───┘T1 └───┘T2 └ | | | | | | | | | | | | | | | | | | | | ........... ┌────────........┌──────........ ┌───────...........┌──────.. READY ───────────────────┘ ........┘ ........─┘ ...........┘ .. | | | | | | | | | | | | | | | | | | | | ┌───────────────┐ ┌───────┐ ┌───────┐ ┌─ M1 ──────┘ WAIT └───────────────────────┘ └───────┘ └───────┘ | | | | | | | | | | | | | | | | | | | | ┌───────┐ ┌───────┐ ┌───────┐ M2 ──────────────────────┘ └───────────────────────┘ └───────┘ └─ | | | | | | | | | | | | | | | | | | | | ┌───────┐ M3 ──────────────────────────────┘ └───────────────────────────────────────── | | | | | | | | | | | | | | | | | | | | ┌───────┐ M4 ──────────────────────────────────────┘ └───────────────────────────────── | | | | | | | | | | | | | | | | | | | | ADDR -<IP.......................IP><Bi:Ci....Bi:Ci><IP..........................IP>-- | | | | | | | | | | | | | | | | | | | | ┌───────────────┐ ┌───────┐ ┌───────┐ READ ──────────┘ └───────────────────────┘ └───────┘ └───── | | | | | | | | | | | | | | | | | | | | ┌───────┐ WRITE ──────────────────────────────────┘ └───────────────────────────────────── | | | | | | | | | | | | | | | | | | | | P.S.: В общем, «процессор акына» с «акынской системой команд» требует и «акынских инструментов», как Logisim. Без этого - никак! Не учился же я строить процессоры в институтах Intel!
  7. Кстати, теоретически в процессоре можно организовать конвейер и считывание команд не по одному байту, а сразу 32-битным словом. Тогда последовательность «AB A1 1B 2C 3D 4E» как код: AB |ARG An,Bn A1 |REG A1 1B|SUB A1,B1 2C|AND A1,B2 3D|OR A1,B3 4E|EOR A1,B4 развернётся в код: AB A1 1B|SUB A1,B1 AB A1 2C|AND A1,B2 AB A1 3D|OR A1,B3 AB A1 4E|EOR A1,B4 В таком случае, все полные команды будут выполняться за один такт. Правда, в таком случае потребуется ввести 3 дешифратора команд, каждый из которых вычленял бы из 32-битного слова именно свой байт… Лет 12 тому назад я пытался заниматься подобными устройствами аппаратного разбора формул в открытом ASCII-кодировании… Но, в рамках данной темы я не рассматриваю вопрос организации конвейера, так как задача стояла чисто на организацию интуитивно понятного машинного кода без оглядки на аппаратные сложности. А так как современные ядра способны и x86-код инструкциями до 15 байтов каждая складывать в конвейер и выполнять до восьми и более команд за такт, то исполнение кода Койяанискаци - вообще не проблема, если браться за реализацию процессора индустриально… Койяанискаци - процессор с красивой и понятнойдля меня и заинтересованных системой команд из аббревиатур в шестнадцатеричном представлении. Вопроса о производительности не ставилось в принципе… Ставилась опытная задача спроектировать архитектуру, которая даже в полевых условиях на дискретной ТТЛ-логике поддавалась бы легкому программированию хоть той же перфолентой или программным барабаном без надобности иметь распечатку таблицы команд перед носом. Так как в схеме каждый из 30 РОН оснащён светодиодами сборками в светофоры, в грубых полевых условиях прямо на любые эти регистры можно навесить непосредственную подтяжку под датчики/двигатели/соленоиды и организовать механическую автоматику с непосредственным программным управлением через РОН без обращения к портам ввода/вывода и непосредственной индикацией состояния процессора… Например, PICO-8 и Gigatron, а также MegaProcessor или MyCPU хоть и разработаны специалистами, но никто не подходил к вопросу с чувством эстета, опираясь на сухой технологический расчёт. К тому же, те же языки программирования, как КОБОЛ, хоть и задумывались с акцентом на гуманитарии, но в широком практическом применении оказались непрактичными и неудобными… Сейчас, с заменой файлов конфигурации *.inf и *.ini на *.xml, получается, что история снова повторяется… P.S.: Можно к данному процессору относиться как к шестнадцатеричному подобию Кобола. Программирование на нём не лишено недостатков. А в минимальном своём исполнении всё способно функционировать и на шести РОН, вместо тридцати.
  8. Eсли быть честным, то сам этот процессор не возник на пустом месте… Лет 25 пытаюсь придумать и разработать свой процессор CISC-архитектуры с интуитивно понятным машинным кодом. А так как проектирование CISC - довольно сложное дело даже в рамках Verilog-эскиза, то как промежуточный вариант я решил использовать RISC-ядро. К сожалению, предлагаемые рынком PIC, ATmega или NIOS не удовлетворяют моей идеологии: Не хотел бы я в своей CISC-архитектуре с интуитивно понятным машинным кодом иметь чужое RISC-ядро, пусть и производительное, но с безобразным (в плане эстетики) кодом… А так как процессор задумывался лишь для того, чтобы сложную CISC-инструкцию отрабатывать десятком RISC-инструкций, то никакой библиотеки в плане арифметики не планировалось концептуально. Критикуют меня везде и всюду за этот мой фанатизм эстетической таблицы команд, который никому не нужен уже лет 50, так как ассемблеры и компиляторы для того и созданы, чтобы не опускать программиста до уровня машинного кода. Однако, раз в цифровом мире нет оглядки на эстетику, то я решил взять флаг в руки и шагать своей тропой. Пусть она ведёт меня невесть куда, но процессор с осмысленным машинным кодом - уже появился. И лишь недавно я выделил его из-под CISC-проекта как самостоятельный и самодостаточный проект и дал ему кодовое название, после просмотра одноимённого фильма. Не будь детской мечты придумать CISC, не было бы и этого RISC'а, далёкого от идеала, но всё таки с приветливым машинным кодом «на фоне стальных кораблей»… И Вам спасибо за проявленный интерес. В мире хаоса индустриальных войн пусть данная идея останется маленьким росточком, красоту которого можно разглядеть и невооружённым глазом: Без дизассемблера и отладчика… P.S.: Просто обидно, что в XXI веке студентов учат проектировать процессоры по-старинке: «Лишь бы работало! А там - покрасим, упакуем в красивый корпус и зальём компаундом, чтобы заусенцы не торчали щетиной…»
  9. Библиотеки арифметики я не ещё не написал и ничего сказать не могу… Первая схема за март 2019 была слишком запутанной и экспериментальной чисто ради прикола… Но потом, за год раздумий на досуге, к этой весне несколько раз всё перерисовал и сделал схемку более симпатичной. Получается, год потратил, так как демонстрационные схемы процессоров в Ютубе отталкивали своим классически непонятным машинным кодом. На Хабрах есть тема как делать процессоры на Logisim по книжкам и там те же косяки: специфический машинный код… Койяанискаци придумывался чуть ли ни с потолка и без книжек, чтобы убедиться в возможности организации красивого кода, так как за 60 лет инженеры так и не научились создавать процессоры с красивым машинным кодом… И, прежде всего, это - проверка самого себя на уровень знаний, достаточный для построения ни хоть какого-то процессора, чтобы лампочками моргал непонятным машинным кодом… А конкретной архитектуры с конкретным кодом. P.S.: Спасибо за вопросы…
  10. В идеальных условиях Logisim-симуляции получается: Операции с префиксом повтора - 4…12 тактов Операции обмена данными с памятью (AE/AF/BE/BF/CE/CF/DE/DF) - 4 такта + возможные такты ожидания готовности Операции обращения к подпрограмме - 2 такта Операции возврата из подпрограммы - 2…10 тактов Операции условного блочного исполнения - 2…12 тактов Операции выбора операндов АЛУ, вычислительные операции АЛУ - 2 такта Пиковая производительность может достигать до 9 операций за 12 тактов с префиксом повтора. Вся схема разрабатывалась достаточно долго из-за вникания в суть построения строгой синхронной архитектуры. А именно, по срезу тактового входа выполняется реконфигурация комбинаторики, а по фронту - запись в РОН. Так, если использовать тактовый импульс со скважностью ≥3, теоретически можно достигнуть стабильной работы реальной ТТЛ-схемы на частотах ≈10 МГц, где пиковая производительность может достигать от 2½ MIPS или 7½ MIPS.
  11. В противоположность известных всем процессоров «Intel», марку которых довольно легко запоминать и выговаривать, «Койяанискаци» задумывался как процессор, имя которого сложнее произнести, чем разобраться в его архитектуре и научиться его программировать на самом элементарном уровне машинного кода редакторами дампа, чтобы проверить, действительно ли стоит прогибаться под радиолюбительские ТУ и невозможно сформировать красивую систему команд, понятную на уровне интуиции? Не имеется ввиду код стиля «O'Kей, процик, вычисли мне среднее факториальное», а планировался машинный код с минимальным уровнем вхождения в основы искусства его программирования, не требующего жёсткой зубрёжки и заучивания всех команд. Архитектура процессора Весь процессор основан на регистровом файле из четырёх функциональных групп по десять ячеек в каждой. Хотя операции АЛУ возможны над любыми ячейками, правила корректного оперирования с ними соблюдать необходимо более-менее строго. Здесь стоит просто запомнить логику и назначение этих функциональных групп: A₀…₉ - Аккумуляторы (A₀ хранит флажки статуса АЛУ) B₀…₉ - Base/База доступа к памяти (B₀ хранит Базу возврата из подпрограммы) C₀…₉ - Counter/Счётчик/Смещение байта в памяти (C₀ хранит Смещение возврата из подпрограммы) D₀…₉ - Devices/Доступные устройства с мгновенным откликом (можно организовать кеш) Так как процессор достаточно прост и не имеет встроенных аппаратных механизмов организации стековых операций, регистры B₀:C₀ сохраняют адрес, на котором была размещена операция обращения к подпрограмме. Программист при необходимости сам обязан позаботиться о всех операциях работы со стеком и описать их алгоритмом. Система команд Практически все команды кодируются WYSIWYG-стилем акына:«Что вижу, то значит». Шестнадцатеричная кодировка отчасти является аббревиатурой самой команды и всё задумывалось так, чтобы большинство команд просто совершали понятные действия. 00: HLT (останов программы) - крайне логичный и гармоничный код! 01: Приращение единицы к активному регистру-приёмнику 02…09: Префикс повтора операции от 2 до 9 раз или пропуск группы операций по условию 10…99: Используется BCD-код приращения к активному регистру-приёмнику - код 56 означает именно 56₁₀, а не 0x56₁₆ A0…A9, B0…B9, C0…C9: Безвременные префиксы выбора активного регистра указанной группы - A₀…A₉, B₀…B₉, C₀…C₉ соответственно D0…D9: Выбор активного устройства группы Devices - D₀…D₉ AA…AD, BA…BD, CA…CD, DA…DD: Безвременные префиксы выбора сочетания операндов для АЛУ-операций - A,A…D,D соответственно E0…E7: Обращение к расширению (Extension) через подпрограмму - CALL 0xE000…0xE700 F1…F9: Обращение к функции (Function) с указанным индексом - CALL 0xF100…0xF900 E8…EF: Условный префикс к исполнению кода следующей операции - Enable if SF/PF/CF/ZF F0: Завершение текущей функции (Function Over - как Game Over) AE/BE/CE/DE: Извлечение (Extract) данных из памяти в указанный регистр AF/BF/CF/DF: Запись/фиксация (Fix) данных указанного регистра в память FA…FF: Вызов прочих функций - CALL 0xFA00…0xFF00 0A/1A/2A…9A: АЛУ-операция "Сумма" (Add) над группой операндов - индекс правого операнда указывается явно 0…9 0B/1B/2B…9B: АЛУ-операция "Вычитание" (suB) над группой операндов - индекс правого операнда указывается явно 0…9 0C/1C/2C…9C: АЛУ-операция "Конъюнкция" (Conjunct/and) над группой операндов - индекс правого операнда указывается явно 0…9 0D/1D/2D…9D: АЛУ-операция "Дизъюнкция" (Disjunct/or) над группой операндов - индекс правого операнда указывается явно 0…9 0E/1E/2E…9E: АЛУ-операция "Исключающее ИЛИ" (Exclusive or/Eor/xor) над группой операндов - индекс правого операнда указывается явно 0…9 Основы программирования Однако, тут не стоит думать, что «процессор акына» совсем ничего не требует от продвинутого пользователя-программиста: Минимальный порог вхождения преодолеть всё-таки придётся… А значит, придётся чуточку поднапрячься и преодолеть порог! (Здесь подразумевается, что читатель уже имеет все базовые понятия и принципы, позволяющие ориентироваться в синтаксической конструкции и строить выражения…) Сложение величин из регистров A₁ и B₂ традиционно можно представить выражением «A1 += B2» или мнемонической записью «ADD A1,B2», которую и следует оформить в машинный код. Так как архитектура процессора предельно проста и организовалась на польской записи, буквально необходимо сначала предопределить используемые в операции операнды, чтобы потом произвести саму конкретную операцию вычисления. Так как используется сочетание регистров «A1» и «B2» в порядке «An,Bn», то под их определение следует указать машинный код AB₁₆. Выбор индексов на конкретных операндах выполняется кодами A1₁₆ и B2₁₆, что указывает на буквальность кодов. Так как индекс правого операнда равен двум, то в коде АЛУ-операции «Сумма» его следует указать явно в левой тетраде как 2A₁₆. Тем самым, становится очевидным размещения кода всего выражения как «A1 AB B2 2A». Но так как индекс B₂ указан явно в АЛУ-операции, байт команды «B2» можно исключить из цепочки, так как сам регистр B₂ не является приёмником результата и код сократится до одной из двух комбинаций записи «A1 AB 2A» или «AB A1 2A», так как от расположения префиксов перед операциями результат не изменяется и всё зависит от стиля программиста. 0000 A1 |----vv ;A1 выбирает регистр A₁ 0001 AB |------v ;AB задаёт порядок операндов A,B 0002 2A|ADD A1,B2;2A - ADD, где двойка выбирает индекс B₂ ^----------^ Выражение «A1 = A1 + B2 - B3 & B4 | B5 ^ B6» можно описать последовательностью «A1 AB 2A 3B 4C 5D 6E», так как в каждом следующем коде операции явно указан и индекс правого операнда, что позволяет писать код компактно и производительно. Максимально доступно каждому любителю Так как Logisim куда доступнее и проще того же Proteus и компактнее KiCAD, вся схема процессора разрабатывалась в рамках проекта именно Logisim, чтобы проект был по-детски прост и лёгок для использовании заинтересованными любителями. По предварительным подсчётам, если схему проекта попытаться собирать микросхемами серии 74xx или отечественной номенклатуры, понадобится порядка 250 корпусов... Скачать архив исходной схемы с прошивками можно по ссылке на странице проекта… Если смущает использование ПЗУ для дешифрации команд, имеется набросок схемы с использованием уровня комбинаторики, по которой можно осознать, что и красивую систему команд можно декодировать простейшим способом логических вентилей, без ущерба концептуальной задумки… Эмуляция? Никакого программного эмулятора не задумывалось специально, чтобы архитектурно процессор изначально готовился к реализации на физических макетных платах и не содержал в себе решений, которые аппаратно крайне сложно будет реализовывать в силу излишней вольности в эмуляторе. Вся схема разрабатывалась несколько лет в часы досуга эпизодически и несколько раз перерисовывалась вся с чистого листа.
×
×
  • Создать...