Jump to content

    

Alikberov

Участник
  • Content Count

    44
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Alikberov

  • Rank
    Участник
  • Birthday 08/17/1979

Контакты

  • Сайт
    Array

Информация

  • Город
    Array

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. B общем, из-за жёстких, почти аномальных проблем с ПК, я до сих пор не мог полноценно пользоваться своей техникой… Только гуглом в режиме read-only на смартфоне (ни один пароль свой не помню)… От скуки купил Raspberry Pi 4 и обнаружил, что и HDMI-вход пятого монитора вылетел, так как на телевизоре сестры RetroPie запустился и отобразился, а мой монитор лишь VGA принимает и пишет, что на HDMI нет сигнала. Причём при старте самого ПК заставка BIOS по HDMI передаётся в сильных шумах красными оттенками и с сильным мерцанием. Шнуры менял - не помогало. (Раньше, когда показывал ещё, при любой помехе от холодильников или ЛДС монитор часто гас на пару секунд, пока вообще через год не потерял сигнал…) По теме… Пока сутками на карантине пролёживал диван, мысленно продумывал свой процессор… Как я уже говорил, архитектура задумывалась как наращиваемая по разрядности. На данный момент комбинация кода «40 A5» или «80 AB» бессмысленна, так как выбор регистра «A5» под префиксом «40» просто вызывает задержку в цикле, где просто регистр 4 раза выбирается. Но, есть мысль несколько усложнить дешифратор команд на предмет проверки наличия префикса. Тогда «A5» и «40 A5» станут разными командами. Появится перспектива работать с упакованными данными, где «40 A5» сменит режим регистра A₅ на 32-битный… «AB 10 A5 3A» - эквивалент «PADDB A5,B3» «AB 20 A5 3A» - эквивалент «PADDW A5,B3» «AB 40 A5 3A» - эквивалент «PADDD A5,B3» «AB 80 A5 3A» - эквивалент «PADDQ A5,B3» Тем самым, если взять вариант данного процессора с 64 битами, то операции АЛУ будут всегда подобны SIMD-вычислениям и можно производить операции над упакованными байтами, словами и двойными словами… Если «40 A5» изменяет «режим упаковки» отдельного регистра A₅, то «40 AB» должен как-то менять режим взаимодействия операндов «A,B». Но за все эти месяцы я так и не придумал, как именно… Хотя, есть идея использовать их как отдельные служебные режимы, где «40 AD» означает 32-битный режим AD'ресации… Адресация В архитектуре любой разрядности ячейки памяти адресуются формулой «(Bi << 8) + Ci». Тем самым, как и в x86-процессоре, регистры B выступают за сегмент, а C - смещение. Так, в 8-битном классическом исполнении адресация получается 0…FFFF, а в 16-битном - 0…100FEFF. Это позволит запускать 8-битный код, скажем, на 32-битном варианте процессора. Так как префиксами «10 B9» можно указать, что сегмент - 8-битный и адресует до 65536 ячеек.
  2. Нe по теме… Пo теме… Вроде бы нашёл способ организации Регистрового Файла без выкрутасов, но только ментально. Код ещё никакой не писал… Важно/!\ Так как в состав большинства FPGA входят несколько множителей не требующих тактовой частоты, а Хабр ещё и подтверждает это, то появились некоторые соображения… Сейчас имеются такие команды: A1 AC 3A|ADD A1,C3 ; A1 += C3 A1 AC 50 3A|ADD A1,5*C3 ; A1 += 5 * C3 // префикс 50 устанавливает коэффициент умножения A1 AC 3B|SUB A1,C3 ; A1 -= C3 A1 AC 50 3B|SUB A1,5*C3 ; A1 -= 5 * C3 // префикс 50 устанавливает коэффициент умножения Но есть мысли немного доработать: A1 AC 3A|ADD A1,C3 ; A1 += C3 A1 AC 50 3A|MULU B5:C5,A1,C3 ; B5C5 = uint(A1 * C3) // префикс 50 выбирает индекс приёмников произведения A1 AC 3B|SUB A1,C3 ; A1 -= C3 A1 AC 50 3B|MULI B5:C5,A1,C3 ; B5C5 = int(A1 * C3) // префикс 50 выбирает индекс приёмников произведения Тем самым, появится операция умножения порядковых и целочисленных… Если придерживаться ТТЛ-исполнения, К555ИП9 выполняет функцию перемножения, а сам Fetch-узел в его нынешнем исполнении на цикле M3, предназначенном для обмена данными с ОЗУ, можно растягивать на необходимое число тактов. Тем самым, на чистом ТТЛ операция умножения потребует до 24 тактов, что не слишком плохо… Естественно, в Verilog под FPGA задержка нужна для сохранения результата в две секции регистров: Младший байт результата в регистр C и старший байт результата в регистр B… Тем самым, на FPGA код будет множить уже за 4 такта… P.S.: Напомню, что Койяанискаци, как RISC-ядро для выполнения CISC-инструкций, не задумывался для подобных мощных вычислительных операций. Тогда как ПЛИС вполне позволяет вводить подобную арифметику. Вопрос лишь в одном: А стоит ли? Концептуальная дилемма…
  3. Обнoвил эмулятор… Сейчас он переводит машинный код прямо в JavaScript-записи. И это - уже что-то, так как кое-что уже проявляется и нет абсолютного вакуума дампа для не набитого глаза… Просто жмёте «Step» и шагаете по кодам. В момент «прыжка» листинг обновляется сам. В таблице регистров красным помечаются приёмники, а зелёным - источники…
  4. Пoка с эмулятором проблема. Он вроде бы и работает, но дизассемблер не получается как надо… Так, код «AB A1 2B 3D 4E» отображает как «A1 = ((((A1) - B2) | B3) ^ B4» и выполняется через eval… Но, скобки «(A1)» напрягают эстетически и нужно парсер переписывать. То есть, хочу сразу добиться того, чтобы «EC» отображался как «if(CF)» с последующим блоком «{…}». Как Вы уже поняли, опять заморочился с эстетикой, а не точностью эмуляции. Первый вариант эмулятора был через «reg(into, alu(opcode, reg(into), reg(from)))». Но теперь решил кодировать всё насквозь JavaScript-выражениями. Тем самым, если написать игру Койяанискаци-кодом, то она на выходе будет чисто на JavaScript и эмулятор не потребуется вообще. Кажется, уже писал: Без проблем доставляют кеды, футболки, штаны, ушки, очки, экшн-камеры и т.п… А вот PS/2-Y штаны - не доехали. На рынке купил ATtiny-85A, но он такой маленький - меньше спичечной головки, что непонятно, каким поялом к нему подходить: Убрал глубоко в шкаф в коробок, чтобы не посеять… Очень туго - с ЭСЛ-серией К500 и К1500: Всё на драгмет скупили представители соседней республики… А так, Dallas 1-Wire термодатчики и регистры - может и есть, но адаптеров USB<->1-Wire - нету… Вернее, достать можно и серию К134, но через заказ, барыг и переплату…
  5. Вoт именно! Койяанискаци - не цель, а побочный продукт моих любительских изысканий… Типа «Везде полным полном всяческих уроков, как правильно делать процессор. Возьму-ка я Atanua и состряпаю процессор так, как я понимаю… Нет, Atanua не так удобен, а Logisim более дружелюбен…». То есть, скука + тестирование интерфейсов различных программ (KiCAD все советовали). Вот KiCAD немного суровее против Atanua и Logisim - я на нём запарился сложную схему строить. OrCAD - много детских болезней GUI и рисование схемы приводит к зависанию и закрытию всего. Хуже того: Не всегда восстановление работает! Но KiCAD я этой зимой заменил на Proteus, так как отличаются по освоению незначительно, а функционально - существенно! (В OrCAD/KiCAD при запуске симуляции/топологии открываются отдельные программы, в Proteus - всё интегрировано, как в TurboPascal 7!) Тем самым, более менее освоился в нескольких пакетах и попутно получился процессор… P.S.: Тем более с моей профессиональной деятельностью по специализации эти всякие ТТЛ и FPGA никак не пересекаются…
  6. Oдин момент был… По натуре - я консерватор: Использую технику до отказа, пока хоть как-то дышит. До 2008 у меня стоял Pentium-90MHz 48Mb-RAM, который я отправил в запас под стол, так как попался Pentium-IV 512Mb, который сгорел южником в 2012 и пол года я сидел вообще без ничего - отдыхал и копил… Копил на Core-i7, но не докопил и в 2013 купил GA-F2A85X и две линейки DDR3 по 8Gb. До сих пор напрягает, так как 16 Гб в наши дни - слишком мало и система достаёт сообщениями о нехватке ресурсов (файл подкачки отключил)… И вот на эту GA-F2A я не смог установить Windows'7, так как та отказывалась работать с любыми USB на материнке. Работал только через PS/2, попеременно переключаясь то на мышь, то на клавиатуру, пока устанавливал Windows'7, так как Y-переходника в комплекте не было. А когда систему установил и попытался обновить USB-драйвера через интернет, то ничего не получилось и пришлось идти на рынок покупать пиратский Windows'8 x86 просроченный с перезагрузкой каждые 2 часа и BSOD'ами на не прогретом железе. Пока не скачал Windows'8.1 x64… До сих пор иногда USB отваливаются на холодном железе и требуется ребут. И если бы ни клавиатура PS/2, пришлось бы тупо жать RESET! Не доверяю я USB 3.0 поэтому и ищу штаны, чтобы клавиатуру и мышь сразу иметь в PS/2. Но у нас на рынках - всё USB. Никаких Y-разветвителей PS/2 нету… А самому кустарить - не хочу. Накустарился ещё на РАДИО-86РК с его ППА DD14… Хочу, чтобы компьютер выглядел навороченным, но без кустарей… Есть такая игра местного разработчика - Voxario… И там я как раз своей утилитой и воспользовался тремя мышками, доделанными до подобия педалей, чтобы на диване сидеть и летать по территориям. К тому-же, «Alt+Tab» тоже подтягивал и переключался на трансляции новостей.
  7. Грaфики описал как-то так… Может и коряво, но хоть что-то, надеюсь, теперь понятнее… O, таки да! Спасибо! Облачно и диск локально не мусорится - можно просто ссылку давать… Кстати, чтобы в форумы вставлять embed-ссылки на короткие аккорды как-то написал вот это: Прямо в ссылке кодируются ноты простым языком. (Надоели новомодные xml-форматы MusicXML, где одна нота описывается сотней строк…) Но, тоже не довёл до ума: Тяжело данный синтаксис точно распарсить… (Под Койяанискаци подобный плеер пригодилось бы написать, но до сих пор не разобрался со всякими триолями: Те партитуры играют с грубейшими ошибками в JavaScript…) Например, вот файл плеера… Который год до ума не доведу из-за музыкальной безграмотности… А ведь, как технология 70-х первых музыкальных компьютеров очень любопытна и компактна (не то, что тот XML)… Интересно, имеются ли программисты с музыкальным образованием где-то на форумах, чтобы отладить это… sol20mus.zip P.S.: Проблема в том, что я на досуге занимаюсь не одной идеей, а десятком идей. Если где-то застреваю намертво - переключаюсь на следующие. Как я уже говорил, Койяанискаци набросал и отладил прошлой весной, а этой весной, спустя год, довёл до ума, составил описание и опубликовал… Эмулятор теперь нужно дорабатывать, чтобы код отлаживать легче было… Потому и двигается у меня всё медленно, если где-то застрял и не гуглится решение…
  8. Недостaток в том, что OEM-псевдографикой диаграммы хранятся в Блокноте и легко вставляются кодом в форумы любые. Тогда как утилиты те генерируют картинку, которую нужно сохранять у себя и заливать в форумы, а также и не подредактируешь на-лету… Скажем, для генерации формул из текста есть редакторы, а для электрических схем - нету. Пытался написать свой и запустить как сервис, но застрял… Сейчас в модепопулярны облачные услуги и закачивать/устанавливать что-то - не айс… P.S.: Но, всё равно… Спасибо! Опробую, когда отдохну…
  9. «Светодиоды на клавиатуре использовали для кражи данных» Вообще-то я пытался моргать индикаторами клавиатуры, чтобы включённый в параллель пьезоизлучатель воспроизводил тональность. Программно с помощью ШИМ удавалось до ≈300 Гц получать звук. Но, собственные процессоры - куда интереснее разрабатывать, чем оригинальное и никому ненужное ПО…
  10. Кaк-то увидел видео «светомузыка из клавиатуры» и написал собственную утилиту на 9 клавиатур (видео): Поддерживает до 9 клавиатур со сценарием моргания или трекерные паттерны для моргания по нотам. Потом увидел видео «две мышки на экране» и написал собственную утилиту на 9 мышек (видео): Поддерживает до 9 мышек с назначением произвольных действий на каждую. То есть, можно правой кнопкой пятой мышки прибавлять громкость, а средней кнопкой седьмой мышки посылать «Ctrl+V» в Блокнот, даже если тот не активен… А так как все клавиатуры и мышки - б/у или списанные с предприятий в утиль, то набрал USB-PS/2 переходники, чтобы проводить опыты. Например, как на органе: Одна клавиатура печатает нижним регистром, вторая - верхним, третья - другой языковой раскладкой. P.S.: Разве ещё не поняли, что Койяанискаци не на пустом месте появился, а от скуки и тесноты в программировании: Хочется железо оригинальное делать, а не просто моргать списанными клавиатурами в такт музыке…
  11. Eсли взяли К155ЛА3, подали питание и заземлили ножку №1 - уже хаос, так как вывели кристалл из равновесия питанием и сигналом: Начался энтропийный процесс с прогревом… А врезка вентиля в цепь - грешок куда меньше, чем вместо «if(x[0] & x[1] & x[2])» кошмарное «if(x[2:0] == 7)»: Это как вместо одной ЛА2 влепить две 555СП1… Вот тут статья повествует о ModelSim, а анимационные вырезки вставляются с Logisim… Это нормально? Таки, да! Потому что в ModelSim анимацию сложнее сделать и управлять схемой сложнее… (Хоть автор не афиширует, но, скорее всего, он - наш человек: Рисует и отлаживает мысли в Logisim, а потом концепцию прорабатывает в ModelSim…) Я же перенёс уже! Не уж то пропустили ссылочку? Всего 386 эффективных строк… Сейчас лишь допиливаю и вношу энтропийный хаос: В схеме был строго счётчик инструкций с инкрементом, а в Verilog - регистр с сумматором на произвольный шаг при условном пропуске до 9 инструкций за 1 такт. А это - уже бардак! Так как в Logisim подобные трюки - роскошь, а в ТТЛ - расход сумматоров. А в VeriLog - один значок «+». И это мне не нравится тем, что раздолье мне: Мозг начинает расслабляться, буянить вседозволенностью и всё стремительного двигается в раскардаш P.S.: Обновил структурную… P.P.S.: Набросок эмулятора стиля «очень дёшево и очень сердито»…
  12. Именнo! Не имею же высшего инженерного образования и работаю с тем, что конкретно показывает в данный момент. Вот в Icarus GTKwave выводит графики от шины адреса и шины данных в конкретный момент, прокручивая скроллером. И если где-то что-то не так - очень сложно вникнуть… А в Logisim, если что-то не так на определённом такте, я просто пролетаю всю схему, охватывая её целиком. И смотрю, какой сигнал был лишний или отсутствовал. Врезаю вентиль И либо ИЛИ, чтобы подавить сигнал или добавить. А по сухим графиком я часами телепатически пытаюсь понять, что пошло не так… Например, Icarus Verilog мне посоветовали 10 лет назад. И все эти годы я там барахтался, так как многие варианты моих процессоров жёстко сбоили и по GTK я часами тупил, пытаясь вникнуть в проблему. А когда наткнулся на Logisim, в прошлом году решил просто ради прикола набросать этот WYSIWYG-процессор… И за неделю он у меня начал стабильно работать! Поэтому, без визуального охвата принципиальной схемы обойтись не могу… Так пойдёт? 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 ──────────────────────────────────┘ └───────────────────────────────────── | | | | | | | | | | | | | | | | | | | | Это график из головы, по нему ориентировался при разработке Logisim-схемы, чтобы она по нему работала. А так как она отлажена, то и график - отражение поведения от блокнотной псевдографики до практического рабочего узла.
  13. B Logisim-схеме всё свалилось кучей в FETCH-модуль. Это очень нехорошо, но пока разгрести не получается - нет плана распределения сигналов… FETCH-блок с 4-битным сдвиговым регистром «машинных циклов»: Цикл выборки команды из памяти. Переключение ША на счётчик инструкций IP. Перевод ШД в высокий импеданс ФРОНТ - установка сигнала READ СРЕЗ - сохранение кода инструкций в регистр IC; переход на следующий цикл, если внешний сигнал готовности WAIT не препятствует этому Дешифратор команд получает сигнал разрешения ФРОНТ - снятие сигнала READ; исполнение операции; инкремент IP или загрузка по JMP/RET/HLT; если команда не FIX/EXT - сброс на Цикл #1 Цикл доступа к памяти для обмена с РОН. Переключение ША на Bi:Ci. Установка на ШД содержимого РОН или перевод в высокий импеданс ФРОНТ - установка сигнала READ/WRITE СРЕЗ - переход на следующий цикл, если нет сигнала WAIT Цикл сохранения данных в РОН ФРОНТ - данные сохраняются в РОН (при EXT-команде) с одновременным снятием READ/WRITE СРЕЗ - сброс на Цикл #1 Тем самым, самый спорный цикл - #4, так как там и READ снимается, и данные в РОН помещаются. Здесь я понадеялся на внешние задержки, что любая внешняя память отключится от ШД не ранее, чем эти данные попадут в РОН. В Logisim и Icarus Verilog проблем не наблюдается. Но, для повешения стабильности, можно добавить промежуточный регистр по СРЕЗУ #4. Схему рисовал максимально простую и дешёвую. Как раз можно добавить на Цикл #4 регистр сохранения данных из памяти перед помещением в РОН… Это уже нужно копировать графики или чертить самому… Мультиплексорами. Например, Шина Адреса мультиплексором подключается к IP в циклах #1 и #2, а к РОН Bi:Ci - в циклах #3 и #4. Так в Logisim рисуешь принципиальную схему, включаешь такты - и всё оживает: Мерцает, переключается, взаимодействует… Разве в Презентациях такого добьёшься? Структурные схемы алгоритмически не живут на экране в режиме реального времени. Только в уме… Всё заточено на шмотьё. Или потребительскую электронику - Action-камеры, Power-камеры, Смартфоны и т.д… Несчастные PS/2 Y-сплиттеры заказал за $16, но кроме фотографий со складских пунктов ничего не дошло. Жду уж лет восемь!
  14. Попробовaл кое-как в OpenOffice намалевать. Но, в том и дело, что я не люблю рисовать то, что не оживёт (как в Logisim), потому и блок-схемы довольно неуклюже рисую, так как навыков не наработал… Или Quartus сам генерировать их тоже умеет? SVG-эскиз (diagrams.net) Обычно помечается как «Товар не может быkistan»
  15. Нe надо, так как мне её посоветовали в чате с прямой ссылкой и я перечитал мануал по ней раз десять. А когда стал прикидывать, какую логику на чистых платах ZX-Spectrum «Ленинград-48» нужно будет впаять под видеотракт, понял, что уж слишком кустарно получится и пинов не хватит на остальное. Нашёл DE0 (не Nano), но по цене понял, что лучше покупать подороже, чтобы не кустарить ни с ZX, ни с чем-либо ещё. Пошёл на официальный сайт и перечитал все платы, какие по цене и виду устраивали. На тот момент DE2-70 меня устраивала (два TV-In), но была снята с производства. Через год-два заметил DE2-115 как похожую… Но ничего пока ещё не приобрёл… Сейчас, имея Quartus, могу изучать, в какие схемы транслируются мои Verilog-модули. Тем самым, начну чуточку соображать в этом искусстве и смогу оптимизировать… Пока что увидел, что в схемах у регистров Cyclone V вход сброса - асинхронный. Хотя меня предупреждали давно, что нельзя в Verilog сигнал Reset обрабатывать вне Clock… То ли это особенность Cyclone V, то ли меня предостерегали из-за особенностей CPLD некоторых фирм… Вообще не понял ничего из сказанного… По-идее, не обязательно ждать заливки в github: Я тупо создал в Quartus новый проект, вставил туда код из EDA Playground и запустил компиляцию. Ничего особенного, как полный нуб, в Квартусе не делал.