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

Logisim-процессор «Койяанискаци»: Сложно выговорить, легче запрограммировать


Рекомендуемые сообщения

В противоположность известных всем процессоров «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 корпусов...
Скачать архив исходной схемы с прошивками можно по ссылке на странице проекта
Если смущает использование ПЗУ для дешифрации команд, имеется набросок схемы с использованием уровня комбинаторики, по которой можно осознать, что и красивую систему команд можно декодировать простейшим способом логических вентилей, без ущерба концептуальной задумки…

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

Изменено пользователем Alikberov
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

1 час назад, Alikberov сказал:

легче запрограммировать

Чего-то этот слоган явно не от этого "процессора", если надо составлять коды АЛУ для каждой операции,

1 час назад, Alikberov сказал:

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

и прочих

1 час назад, Alikberov сказал:

02…09: Префикс повтора операции от 2 до 9 раз или пропуск группы операций по условию

:D

 

Была когда-то "процессорная" серия 589, в ней тоже надо было программировать на уровне микрокодов АЛУ. Как вспомню, так вздрогну. Тот ещё геморрой. :bad:

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Оказываeтся, я чуточку ошибся в расчётах когда планировал дизайн Регистрового Файла…
Если Logisim-схему рассматривать в ТТЛ-исполнении как есть на буферах, то потребуется:

  • К155ИР13 - 30 штук
  • К531АП4 - 60 штук
  • К555ИД6 - 6 штук
  • ЛА/ЛЕ/ЛИ - 7-8 штук

Но, если рассматривать вариант на мультиплексорах, то получается:

  • К155ИР13 - 30 штук
  • К155КП1 - 24 штуки
  • К555ИД6 - 3 штуки

Получается, 105 корпусов против 57, что вдвое меньше…
Почему-то я думал, что с буферами - экономнее.
Однако, наткнулся ещё на одно чудо Отечества - К1533ИР39, у которой не видно аналога. На двух корпусах можно выполнить весь Регистровый Файл и сэкономить практически на 50 микросхемах.
Правда, кристалл не такой уж доступный и снят с производства: Не во всяком регионе СНГ легко достать из-за охотников на драгмет…

Сейчас я пытаюсь отладить схему на мультиплексорах, а также - набросал дешифратор команд в Proteus, чтобы обойтись без ПЗУ и продемонстрировать простоту декодирования всех команд открытой комбинаторикой. Получается:

  • К155ЛА3 - 1 штука
  • К155ЛА4 - 4 штуки
  • К155ЛЕ1 - 1 штука
  • К155ЛЕ4 - 1 штука
  • К155ЛИ1 - 1 штука
  • К155ЛЛ1 - 1 штука
  • К155ЛН1 - 1 штука
  • К155ЛП5 - 1 штука

Пробная плата дешифратора на этих 11 микросхемах в Proteus получается примерно 50×70 - с кредитную карточку.
Чтобы переводить BCD-код, можно использовать ПР6, а в качестве АЛУ использовать ИК2, так как они менее запутанные, чем ИК4 или ИП3…
 

02.06.2020 в 17:52, Lexter сказал:

Чего-то этот слоган явно не от этого "процессора"

Как я уже сказал: Практически никакой из существующих процессоров инженерами не задумывался так, чтобы в дампе Hex-код напоминал аббревиатуры…
Напротив, во многих RISC'ах байт-код нужно либо жёстко зубрить, либо спихивать рутину на трансляторы…
Если даже этот блин и получился комом, то - я никак не инженер и специального образования не имею. К вопросу подходил как эстет-радиолюбитель и эстетически красивую таблицу команд увидел именно такой, а никак не иной.
(В том же i8086 код 00 означает ADD: Это как надо было инженерам обкуриться, чтобы обнулённая память состояла из операций сложения с вектором на память!? У i8080 код 00 - NOP, что более разумно. Хотя HLT - более логичнее: Попал в нули - остановись!)

koyaanisqatsi-combo.png

Ссылка на комментарий
Поделиться на другие сайты

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 час назад, mazzi сказал:

Какая производительность возможна у такого проца сделанного в реальном железе?

В идеальных условиях 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.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

И сразу вопрос, нафига оно нужно? Да еще и с такой унылой производительностью

11 часов назад, Alikberov сказал:

а частотах ≈10 МГц, где пиковая производительность может достигать от 2½ MIPS или 7½ MIPS.

Вот давайте, сколько тактов у вас занимают базовые мат операции: +, -, *, /. Для начала с целыми числами.

Изменено пользователем BARS_
Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, BARS_ сказал:

И сразу вопрос, нафига оно нужно? Да еще и с такой унылой производительностью

Вот давайте, сколько тактов у вас занимают базовые мат операции: +, -, *, /. Для начала с целыми числами.

Библиотеки арифметики я не ещё не написал и ничего сказать не могу…

7 часов назад, mazzi сказал:

Посмотрел, очень здорово у вас получилось. Сколько времени вы потратили на создание этой схемы?

Первая схема за март 2019 была слишком запутанной и экспериментальной чисто ради прикола…
Но потом, за год раздумий на досуге, к этой весне несколько раз всё перерисовал и сделал схемку более симпатичной.
Получается, год потратил, так как демонстрационные схемы процессоров в Ютубе отталкивали своим классически непонятным машинным кодом.
На Хабрах есть тема как делать процессоры на Logisim по книжкам и там те же косяки: специфический машинный код…

Койяанискаци придумывался чуть ли ни с потолка и без книжек, чтобы убедиться в возможности организации красивого кода, так как за 60 лет инженеры так и не научились создавать процессоры с красивым машинным кодом…

И, прежде всего, это - проверка самого себя на уровень знаний, достаточный для построения ни хоть какого-то процессора, чтобы лампочками моргал непонятным машинным кодом… А конкретной архитектуры с конкретным кодом.

P.S.: Спасибо за вопросы…

Ссылка на комментарий
Поделиться на другие сайты

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

По поводу целесообразности такой работы могу сказать следующее всем критикующим. Ловля рыбы на удочку, рисование картин, написание стихов и прочее не целесообразно. Человек своим творением выражает себя, и не каждый способен осмыслить, а тем более воплотить в жизнь проект такой величины. У меня эта работа вызвала уважение и зависть в хорошем смысле этого слова. Респект и уважение автору!

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

18 часов назад, mazzi сказал:

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

Eсли быть честным, то сам этот процессор не возник на пустом месте…
Лет 25 пытаюсь придумать и разработать свой процессор CISC-архитектуры с интуитивно понятным машинным кодом. А так как проектирование CISC - довольно сложное дело даже в рамках Verilog-эскиза, то как промежуточный вариант я решил использовать RISC-ядро.
К сожалению, предлагаемые рынком PIC, ATmega или NIOS не удовлетворяют моей идеологии: Не хотел бы я в своей CISC-архитектуре с интуитивно понятным машинным кодом иметь чужое RISC-ядро, пусть и производительное, но с безобразным (в плане эстетики) кодом…
А так как процессор задумывался лишь для того, чтобы сложную CISC-инструкцию отрабатывать десятком RISC-инструкций, то никакой библиотеки в плане арифметики не планировалось концептуально.

Критикуют меня везде и всюду за этот мой фанатизм эстетической таблицы команд, который никому не нужен уже лет 50, так как ассемблеры и компиляторы для того и созданы, чтобы не опускать программиста до уровня машинного кода.
Однако, раз в цифровом мире нет оглядки на эстетику, то я решил взять флаг в руки и шагать своей тропой. Пусть она ведёт меня невесть куда, но процессор с осмысленным машинным кодом - уже появился.

И лишь недавно я выделил его из-под CISC-проекта как самостоятельный и самодостаточный проект и дал ему кодовое название, после просмотра одноимённого фильма.
Не будь детской мечты придумать CISC, не было бы и этого RISC'а, далёкого от идеала, но всё таки с приветливым машинным кодом «на фоне стальных кораблей»…:pilot:

18 часов назад, mazzi сказал:

Респект и уважение автору!

И Вам спасибо за проявленный интерес.:thank_you2:

В мире хаоса индустриальных войн пусть данная идея останется маленьким росточком, красоту которого можно разглядеть и невооружённым глазом: Без дизассемблера и отладчика…:rolleyes:

P.S.: Просто обидно, что в XXI веке студентов учат проектировать процессоры по-старинке:
«Лишь бы работало! А там - покрасим, упакуем в красивый корпус и зальём компаундом, чтобы заусенцы не торчали щетиной…»

Ссылка на комментарий
Поделиться на другие сайты

Кстати, теоретически в процессоре можно организовать конвейер и считывание команд не по одному байту, а сразу 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.: Можно к данному процессору относиться как к шестнадцатеричному подобию Кобола.
Программирование на нём не лишено недостатков. А в минимальном своём исполнении всё способно функционировать и на шести РОН, вместо тридцати.

Изменено пользователем Alikberov
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Нарисовaл (кое-как) структурную схему процессора:

Koyaanisqatsi-CPU.png.f12fc6155f938be36a935fb826f25178.png

Не люблю малевать то, что не сможет ожить
Вот в 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 МГц, что тогда вполне хватало…)

Koyaanisqatsi-Syntez.thumb.png.307d59ad17fd39516f08b1144a577422.png

Какая-то жидкая схема получилась.
Слева - дешифратор команд: Красота, простота и компактность…
Внизу - слишком много разрозненной логики, так как глядя в облако можно увидеть, что всё свалено кучей в основной модуль, что не очень хорошо!

Koyaanisqatsi-zone.png.5675e018a3b085a00d5ec4b443f5774d.png

Оказывается на ПЛИС занимаемая площадь совсем мизерная, хотя я беспокоился.
Тем самым, можно щедро фаршировать конвейерами и обвешивать различной периферийной средой…

Наткнулся на статью Хабра, где демонстрируется описание процессора под ModelSim, но в Logisim параллельно собирается интерактивная модель…
Дело в том, что Verilog я начал изучать лишь лет 10 тому назад и практически в нём так и не разобрался, так как многие из эскизов моих процессоров в нём не пошли в Icarus Verilog, а изучение графиков в GTKwave ни к чему не приводило, так как соответствующий институт я не оканчивал и не умею разбираться в формулах и графиках.
И лишь год тому назад решил приколоться и скачал Logisim, набросав в нём первый вариант Койяанискаци. И за неделю отладки, к моему большому удивлению, схема завелась и стала адекватно исполнять код. Тем самым, 10 лет барахтанья в Verilog литературы ни к чему толковому не привели, а шуточный симулятор помог наконец-то добиться хоть чего-то работающего!

Неделю назад скачал и установил Quartus с ModelSim по совету. Но, понял, что без Logisim не обойтись,  так как снова какие-то графики, таблицы отчётов, которые я не понимаю вообще!:ph34r:
Пусть это и инженерные инструменты, но без 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.:moil:
Без этого - никак! Не учился же я строить процессоры в институтах Intel!:lol2:

Изменено пользователем Alikberov
Ссылка на комментарий
Поделиться на другие сайты

  • 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.: Тем самым, за производительностью не гонюсь, но хочу попробовать получить эскиз Койяанискаци с наименьшим количеством элементов, если браться всё-таки его делать рассыпухой на ТТЛ…

Ссылка на комментарий
Поделиться на другие сайты

02.06.2020 в 13:48, Alikberov сказал:

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

Для чайников, наверно, звучит красиво, а с профессиональной точки зрения маразм! ВСЕ ассемблеры ВСЕХ процессоров очень похожи, все делятся на одни и те же группы команд, все команды подчиняются жесткой логике, поэтому для их запоминания достаточно помнить очень ограниченный набор правил этой логики.

Практически всегда (в любом ассемблере) существует около 20-50 базовых команд которые очень легко запомнить потому что это производные от элементарных математических операций с числами(регистрами) и/или с адресами.

Интересно кто вам оплачивает эту достаточно ресурсоемкую работу???

Неужели вы миллионер и от нечего делать рисуете процессоры??? - Сложно поверить.

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

Правильно?

Нарисовать процессор уже давным давно не проблема, проблемма его изготовить по доступной цене.

Изменено пользователем ruhi
дополнил

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

12.01.2021 в 12:00, ruhi сказал:

Нарисовать процессор уже давным давно не проблема, проблемма его изготовить по доступной цене.

Бесплатное производство процессоров объявили - решил на скорую руку придумать оригинальную архитектуру…:buba:

Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, Alikberov сказал:

решил на скорую руку придумать оригинальную архитектуру

"на скорую руку" вместе с "оригинальную" звучит, действительно, очень захватывающе :) ! Рядом лучше не стоять :) ! Шарахнет!

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...

Кое-как накидал Web-эмулятор онлайн:

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

Немного занимался и проработкой акынской карты портов Устройств Ввода-Вывода…
Не нарушая принципа «что вижу - с тем и работаю», пришёл к оптимальному варианту, где:

  • Регистр 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 найти нужную ИМС со смежным номенклатурным индексом.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Занятное чтиво, считай "мультиметр своими руками". Не ну а что, были же советские конструкции на кр572пв2) Прецизионные резисторы и В1-12 где-то валяются... Осталось выкрутиться с коммутацией) Чешется иногда.
    • Похоже так, не кто и не подскажет, что это за микруха... 
    • Я извиняю кто тут флудил ! ??  были удаленны другие коменты! , я не поливал не кого грязью, а если вы так считаете напишите жалобу на меня и пусть модератор мне предъявит за нарушение/ за оскорбления и флуд . И касаемо "вчера сделал" после комента пользователя fessit вспомнил и проверил и все получилось (с ножной напутал тут диод нужен) и также коменты colorad, и Aviator88 всем спасибо. Все работает как надо чего тут выкладывать мне всего-то обычный диод и всё. А что касаемо ваших и подобных коментов это и есть флуд. Устроили охоту на инакомыслящих мол  посмел такой сякой задать вопрос  на техническом форуме о переделки платы зарядки акумов  в светодиодный драйвер какой ужас !!   Поражаюсь блин с таких придираться к словам, и при этом не зная как переделать сразу начинают парировать ошибками автора в тексте запятые, и случайно перепутанные Амперы с мА (Хотя понятно о чем идет речь, но и за это уцепились ) это любимый метод когда по делу толком  нечего сказать, а за изварат и нестандартный подход подколоть что бы ну даже не хочу писать.... А все выпадки мол эта платка не для этого.... ну что тут сказать не надо ограничивать себя мол что подумают или оно якобы не будет работать,название не то... сделал проверил работает! замечательно! да и плевать! зачем покупать, ждать если уже есть под рукой то что тебе нужно!!! и искусственно загонять себя в рамки блин отказываться использовать тпешку только потому что указанно применение для зарядки лития  инакомыслие, богохульство, бред, итд ну дело ваше я не заставляю насильно переделывать. Странно что на тех форуме это вызывает такие вопросы где казалось бы нормально: починить переделать что-то итд. Странные представление что изврат/бред, а что нет учитывая что все, и до переделки всё работало почти отлично.... с каких пор бред не понятно учитывая что все подходит, да в целом нечего дурного нет в этой дорабодке только польза !! И что-то тут нет подобных высказываний 2е стандарты или инквизиция проворонила  
    • На этой схеме не хватает резисторов, немного открывающих силовые транзисторы. Без них начальный самозапуск  не будет происходить. Поищи их на плате БП.  Они где-то в районе сотни кОм между базой и коллектором.  
    • Может у нас разные были, либо палёный, не будем спорить. У каждого свой вкус.    Ещё слышал, но не слушал, что на TPA3255 хорошие. Присматривал такой как-то. Вы знакомы с таким?
    • Вы самим вообще нормальный??? Под полтинник жалоб!!!!!! Вы чего? Вы говна поели? До утра оставлю сообщение, в надежде на ответ. Но по опыту - никто так и не отпишется...
    • @Vic73 типовая китайская для лент ? биполярники и второй трансформатор ? 
  • Похожий контент

×
×
  • Создать...