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

Койяанискаци - ТТЛ-процессор с душой акына

2 минуты назад, Obam сказал:

пардону просим...

Как я уже сказал, вот черновой вариант дизассемблера, где можно поэкспериментировать с комбинациями кодов.
Реверс битов (не инверсию) я там обозначил «<…>», так как толком не понятно, каким оператором это можно обозначить…

P.S.: Пора бы уж за эмуляцию браться, чтобы практически всё демонстрировать и Тетрис написать…:boredom:

Поделиться сообщением


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

12 hours ago, Alikberov said:

(Ни один из существующих процессоров не имеет такую приветливую систему кодирования команд!

Замечание довольно спорное: всю "некрасивость" команд закрывает ассемблер, если уж ЯВУ не годится. И потом: красивая внешне для человека система команд будет ли такой же красивой внутри - для АЛУ процессора?

12 hours ago, Alikberov said:

В том же x86

x86 тянет тяжёлое наследие середины/конца 20 века, когда процессоры ещё только учились строить)

3 hours ago, Alikberov said:

Пора бы уж за эмуляцию браться, чтобы практически всё демонстрировать и Тетрис написать…

В любом случае искренне рад за вас! Отличная возможность изучить язык описания схем для программируемой логики!

Поделиться сообщением


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

10 часов назад, haker_fox сказал:

И потом: красивая внешне для человека система команд будет ли такой же красивой внутри - для АЛУ процессора?

Кажeтся, на этот вопрос я уже ответил?  

28.06.2020 в 03:02, Alikberov сказал:

В противоположность известных всем процессоров «Intel», марку которых довольно легко запоминать и выговаривать, «Койяанискаци» задумывался как процессор, имя которого сложнее произнести, чем разобраться в его архитектуре и научиться его программировать на самом элементарном уровне машинного кода редакторами дампа, чтобы проверить, действительно ли стоит прогибаться под радиолюбительские ТУ и невозможно сформировать красивую систему команд, понятную на уровне интуиции?

Потому и начал реализовывать именно в Logisim, так как в Verilog все модули достаточно легко правятся, а в JavaScript можно заставить работать эмулятор любой архитектуры.
Тогда как в Logisim всякую дичь просто так впопыхах и как попало не прорисуешь, чтобы концептуальность наблюдалась…


Тем самым, я не зря сильно затягиваю с Verilog-вариантом и HTML5-эмулятором, чтобы именно в Logisim, ближе к ТТЛ-номенклатуре с реализацией собачником убедиться, что удалось найти компромисс между красивой, интуитивно понятной, почти гуманитарной, системой команд и аппаратно-вентильным эскизом не будет никакой непроходимой пропасти.
(Sun тоже свой Java-процессор сколько разрабатывала, но так и не справилась…)

P.S.: Как я уже выше сказал, Койяанискаци, как побочный продукт из ядра моего CISC, был придуман год назад. И за год мне удалось его довести до презентабельного вида.
(Это не хвастовство, а удивление, так как тот же свой CISC (по этой ссылке - Тетриса заготовка) прорабатываю со школы, а всё никак успешной реализации даже в JavaScript-эмуляции не удаётся добиться…)

 

P.P.S.: Учитывая новости, получается, мечта детства с конкурсом осуществляется, но у меня на руках абсолютно ничего нет.
Слишком уж скоро это событие произошло! Ни CISC не готов, ни этот…

 

Изменено пользователем Alikberov

Поделиться сообщением


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

Протoтип процессора в Verilog-облаке набросал за двое суток как мог…

Единственный порт - «decoder.sv», который писался с Logisim-схемы.
Остальное - потолочные технологии.
 

Сутки потратил на регистровый файл, так как, благодаря Yosys-визуализации, мог визуально оценить, во что всё это синтезируется.
Тем самым, от массивов типа «reg [7:0] R[0:3][0:9]» пришлось отказаться и кодировать всё отдельными регистрами…
(Перепробовал варианта четыре, включая примеры из учебников и студенческие из интернета. Возможно, я что-то недопонимаю…)
 

Как я и опасался, в Verilog слишком много вольностей:

  • Вместо потактового пропуска инструкций сделал «IP <= IP + Step» (design.sv строчка #146)
  • Вместо возврата из функции с пропуском инструкций сделал «IP <= PTRN + IR» (строчка #118)
  • Имеется искушение вообще переделать логику префикса, чтобы «REP 9 ADD A1,B5» не 9 тактов выполнял сложение, а прямо средствами FPGA-модулей арифметики просто использовался умножитель
  • Ввёл лишнюю линейку регистров D₀…₉ (context.sv строки 60…67), так как там должен быть какой-то механизм, которым в Logisim я не занимался и там просто висит буфер клавиатуры, терминал, джойстик и LED-матрица

Команды BCD (двоично-десятичные коды 01⋱99) переделал под HLT-расширение.
Теперь любой такой код перебрасывает процессор на адрес 0000, где нужно убедиться, какой код это был.
Тем самым, все 90 кодов приводят к прерыванию и можно ввести 90 разных инструкций.
Как пример, этот механизм я использовал для врезки текста прямо в код:

AA A1 1E|EOR A1,A1
22 48 ..|DB  "HELLO WORLD!",0

В итоге, весь код (включая apr_bar, context.sv, alu_test.sv, alu.sv) - 386 строк (исключая «task show»).
Даже не думал, что вся Logisim-схема опишется так компактно за двое суток!:biggrin:
(На отладку львиная доля времени ушла…)

 

По-хорошему, регистры D₀…D₉ должны быть внешними, например, шиной I²C. А это предполагает некоторую задержку в доступе.

В Logisim-дизайне сигнал Wait работает только при обращениях к памяти, а при доступе к регистровому файлу режим задержки доступа не предусматривался и за год я этим не занимался.

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

 

Почему это так принципиально?

Когда я этой весной додумался ввести группу D, полагал, что если делать ремейк-пародию ИМ-02, регистры D₀…D₇ могли бы битами управлять всеми сегментами ЖК-индикатора. А это не предполагает задержку.

А вот если в ряде D₀…D₈ размазать ПДП 580ВТ57 со всеми его регистрами, то задержки учитывать нужно.

Скажем, если через чтение D₉ будет генерироваться запрос на ПДП цикла чтения из памяти, а при записи в D₉ - запрос на ПДП-цикл записи в память, то команда «MOV D9,D9» будет сначала читать память через ПДП-цикл, а затем - записывать (всё через разные каналы). И здесь нужно ввести узел задержки и временного хранения.
Например, код «DD D9 9F 9F 9F» как 3 штуки «MOV D9,D9» копируют 3 байта из одного канала ПДП в другой.

 

P.S.: Этим блоком «D» нужно будет основательно заниматься…
(Жутковато там… В «блоке D»…)

Изменено пользователем Alikberov

Поделиться сообщением


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

В общем, на ixbt немного простимулировали и установил Quartus. Более-менее освоился в нём и добился симуляции, идентичной этой.
Занимает 1/25 от Cyclone-V. Задержки получаются ≈19 нс. Тем самым, на 50 МГц работать должно стабильно.
Пока ещё детально не изучил все таблицы. Возможно, скважность нужно подкорректировать…
 

Генерируемая схема получилась слишком узкой и длинной.
(После Logisim такое крайне непривычно наблюдать. Тем более, наткнулся на статью, где используется и ModelSim, и Logisim - не только я белая ворона…)
Думаю, стоит добавить ещё блок, для формирования более чёткой структуры.
 

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

Сейчас хочу написать HTML5-JavaScript эмулятор с графикой и звуком, чтобы ByteBeat проверить.
Графический движок у меня имеется, так как телевизионный вариант «ИМ-02» когда-то пытался набросать…
Особенность в том, что сначала заполняется буфер со сценой из спрайт-сегментов, а потом одним из 64 битов маски можно гасить эти спрайты…
(В демонстрации - имитация ТВ-помех с наложением огромного мерцающего смайлика…)
Тогда (в 2011) до эмуляции процессора не дошёл, так как не нашёл описания КБ1013ВК1-2, а потом и занялся своими…
 

То есть, остаётся эмулятор Койяанискаци-команд написать и какой-то код, типа «Pong», на 64 ЖК-сегментах…

Изменено пользователем Alikberov

Поделиться сообщением


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

2 hours ago, Alikberov said:

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

По моим ощущениям, такое процессорное ядро должно уместиться в  гораздо более скромный Cyclone чип (неважно какого поколения) - что-то с 10-16 kilo LE (цена платы с таким FPGA, соответственно, будет куда гуманнее). Вместе с некоторой периферией. И перед покупкой этот факт можно и нужно проверить - посинтезировать в Quartus'е проект под разные FPGA чипы, разные частоты тактирования и т.п.

Quote

Занимает 1/25 от Cyclone-V. Задержки получаются ≈19 нс. Тем самым, на 50 МГц работать должно стабильно.

Вот тут не понял. 1/25 от ресурсов чипа? Какого именно? Или вы это про временнЫе характеристики? Тогда еще вопрос, как вы эти 19 нс получили. Синтезировать под FPGA пробовали? Или это все пока только про симулятор и его результаты?

Поделиться сообщением


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

  

15 минут назад, Raven сказал:

По моим ощущениям, такое процессорное ядро должно уместиться в  гораздо более скромный Cyclone чип (неважно какого поколения) - что-то с 10-16 kilo LE (цена платы с таким FPGA, соответственно, будет куда гуманнее). Вместе с некоторой периферией. И перед покупкой этот факт можно и нужно проверить - посинтезировать в Quartus'е проект под разные FPGA чипы, разные частоты тактирования и т.п.

Вoт на это и расчёт, чтобы можно было любую архитектуру Компьютера (не процессора) спроектировать…

То есть «своя архитектура компьютер» на «процессоре своей архитектуры». А там и площади кристалла может не хватить…

19 минут назад, Raven сказал:

Вот тут не понял. 1/25 от ресурсов чипа? Какого именно? Или вы это про временнЫе характеристики? Тогда еще вопрос, как вы эти 19 нс получили. Синтезировать под FPGA пробовали? Или это все пока только про симулятор и его результаты?

Кaк я уже говорил, с 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 % )

Откуда я увидел «Logic utilization (in ALMs) 395 / 9,430 ( 4 % )»…

И графически это, вроде как, подтверждается…
 

Ещё толком не понял, как правильно просчитать производительность (некоторые пункты меню предлагают оплатить их продукт), но где-то указал частоты и выдались таблицы задержек…

Koyaanisqatsi-Q-Diagram.jpg

Koyaanisqatsi-zone.png

Изменено пользователем Alikberov

Поделиться сообщением


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

Кстaти, здесь на видео я программно реализовал наложение графики ZX-Spectrum на видеосигнал, как если бы телевизоры тех лет оснащались бы его начинкой для OSD-меню.
Тем самым, мне подошла любая отладочная плата, но с поддержкой композитного видео входом и выходом.
Хоть и интересуюсь инженерингом низкого уровня, но как-то совсем не хочется заказывать ADV7181 и ADV7340, да ещё пропаивать их (находил их специально под DE0-Nano).

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

В худшем случае, буду дорабатывать официальные примеры Altera.
В лучшем - буду дорабатывать собственную архитектуру от RISC до CISC в рамках пародии на РАДИО-86РК: Любопытно было ВГ75 связать развёрткой с LM1881 и наложением текста на внешний ТВ-сигнал.

 

Сейчас все увлечены HD-графикой с реалистичным 3D. Но в 2010 я специально стал интересоваться разработкой видеосистемы, где динамичная графика невозможна в принципе. То есть, сначала процессор рисует некую сцену из 128 фигур, а потом через порт управляет регистром с маской, чтобы получился ЖК-эффект игры «Ну, Погоди!». Динамика присутствует, но движения спрайтов - нет. Процессор занят игровым процессом, а не перерисовкой всяческой ерунды на экране.
 

Ещё недавно совсем те же популярные Тамагочи имели не графический - структурный ЖК-дисплей с пиктограммами режимов.
И как-то наскучил весь этот бум на 3D-движках.
Любопытно исследовать простенькое, но оригинальное.

 

Поделиться сообщением


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

1 hour ago, Alikberov said:

Хоть и интересуюсь инженерингом низкого уровня, но как-то совсем не хочется заказывать ADV7181 и ADV7340, да ещё пропаивать их (находил их специально под DE0-Nano).

Надо ли это понимать так, что у вас есть DE0-Nano? Его FPGA части (22 kLE) должно хватить для ваших экспериментов.

Quote

Кaк я уже говорил, с Quartus никогда не работал и третий день как кутёнок тыкаюсь там. Вот что выдаёт компиляция:

Я немного посмотрел на Verilog-код. Ну, что сказать.... Случай не безнадежный, но до нормального кода еще ой как далеко. И он в немалой степени поведенческий (т.е., описывает функциональную модель), а не ориентированный на синтез. Как там синтезатору что-то вообще удалось из него синтезировать - большой вопрос. И еще бОльший вопрос - будет ли оно работать так, как вами задумано (очень вряд ли). Так что на эти результаты синтеза пока лучше не смотрите (веры тому, что они показывают, нету никакой). Вначале надо превратить содержимое ваших файлов в нормальный Verilog-код. Давайте попробуем вместе постепенно привести его в удобоваримое состояние.

 

Для начала я вас попросил бы заложить в вашем GitHub репозитории такую структуру папок (пока такую, потом будем расширять по мере продвижения):

Koyaanisqatsi

  • rtl   - поддерево RTL-имплементации процессора
    • core   - сюда поместите все Verilog/SystemVerilog-файлы процессорного ядра
    • includes - здесь будут заголовочные файлы
  • sim - здесь будет все, связанное с симуляцией
    • tb   - Testbench  - сюда поместите ваш testbench.sv
  • Logisim   - это уже существующая папка, ее содержимое не трогаем

 

Далее - хотелось бы увидеть блок-диаграмму самого верхнего уровня структурной организации вашего процессора, т.е., структуру модуля cpu в графической форме (эти самые 5-8 квадратиков с описанием их входов-выходов и связей между ними). Делая подобные диаграммы и объясняя назначение каждого их элемента, вы лучше проработаете дизайн. Ну, и в виде бонуса - мы лучше поймем замысел и сможем что-то советовать по делу.

Поделиться сообщением


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

56 минут назад, Raven сказал:

Надо ли это понимать так, что у вас есть DE0-Nano? Его FPGA части (22 kLE) должно хватить для ваших экспериментов.

Нe надо, так как мне её посоветовали в чате с прямой ссылкой и я перечитал мануал по ней раз десять. А когда стал прикидывать, какую логику на чистых платах ZX-Spectrum «Ленинград-48» нужно будет впаять под видеотракт, понял, что уж слишком кустарно получится и пинов не хватит на остальное.
Нашёл DE0 (не Nano), но по цене понял, что лучше покупать подороже, чтобы не кустарить ни с ZX, ни с чем-либо ещё. Пошёл на официальный сайт и перечитал все платы, какие по цене и виду устраивали. На тот момент DE2-70 меня устраивала (два TV-In), но была снята с производства. Через год-два заметил DE2-115 как похожую…

Но ничего пока ещё не приобрёл…

56 минут назад, Raven сказал:

Я немного посмотрел на Verilog-код. Ну, что сказать.... Случай не безнадежный, но до нормального кода еще ой как далеко.

Сейчас, имея Quartus, могу изучать, в какие схемы транслируются мои Verilog-модули. Тем самым, начну чуточку соображать в этом искусстве и смогу оптимизировать…
Пока что увидел, что в схемах у регистров Cyclone V вход сброса - асинхронный. Хотя меня предупреждали давно, что нельзя в Verilog сигнал Reset обрабатывать вне Clock…
То ли это особенность Cyclone V, то ли меня предостерегали из-за особенностей CPLD некоторых фирм…

56 минут назад, Raven сказал:

Далее - хотелось бы увидеть блок-диаграмму самого верхнего уровня структурной организации вашего процессора, т.е., структуру модуля cpu в графической форме (эти самые 5-8 квадратиков с описанием их входов-выходов и связей между ними). Делая подобные диаграммы и объясняя назначение каждого их элемента, вы лучше проработаете дизайн.

Вообще не понял ничего из сказанного…:blush:

По-идее, не обязательно ждать заливки в github: Я тупо создал в Quartus новый проект, вставил туда код из EDA Playground и запустил компиляцию.
Ничего особенного, как полный нуб, в Квартусе не делал.:biggrin:

Изменено пользователем Alikberov

Поделиться сообщением


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

6 hours ago, Alikberov said:

 

Вообще не понял ничего из сказанного…:blush:

 

Ну, что такое блок-диаграмма, она же блок-схема, вам должно же быть известно? Я имел в виду нечто вроде вот такого

image.thumb.png.a3a4a03c0c4cad75f8c9cccc35b784d1.png

или, еще лучше, вот такого

image.thumb.png.2e51c142ac99703cd7a70892eab41927.png

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

Quote

По-идее, не обязательно ждать заливки в github: Я тупо создал в Quartus новый проект, вставил туда код из EDA Playground и запустил компиляцию.

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


 

Quote

 

Нe надо, так как мне её посоветовали в чате с прямой ссылкой и я перечитал мануал по ней раз десять. А когда стал прикидывать, какую логику на чистых платах ZX-Spectrum «Ленинград-48» нужно будет впаять под видеотракт, понял, что уж слишком кустарно получится и пинов не хватит на остальное.
Нашёл DE0 (не Nano), но по цене понял, что лучше покупать подороже, чтобы не кустарить ни с ZX, ни с чем-либо ещё. Пошёл на официальный сайт и перечитал все платы, какие по цене и виду устраивали. На тот момент DE2-70 меня устраивала (два TV-In), но была снята с производства. Через год-два заметил DE2-115 как похожую…

Но ничего пока ещё не приобрёл…

 

Выбор платы - это будет еще отдельная тема для разговора. DE2-115, конечно, отлично подходит, но она весьма недешевая. Можно поискать на АлиЭкспрессе нечто подобное, но подешевле. Главное, чтобы документация на нее была.


 

Quote

 

Сейчас, имея Quartus, могу изучать, в какие схемы транслируются мои Verilog-модули. Тем самым, начну чуточку соображать в этом искусстве и смогу оптимизировать…

Пока что увидел, что в схемах у регистров Cyclone V вход сброса - асинхронный. Хотя меня предупреждали давно, что нельзя в Verilog сигнал Reset обрабатывать вне Clock…
То ли это особенность Cyclone V, то ли меня предостерегали из-за особенностей CPLD некоторых фирм…

 

Смотреть, во что синтезируется ваш код,- это очень правильная практика. Продолжайте. Можно многое будет узнать, чему далеко не в каждой книжке уделено внимание. Но начинать надо было, как я уже говорил, не с этого, а с более фундаментальных вещей. От этого забегания вперед у вас половина бед. Что касается асинхронного сброса - то это вовсе не догма, и иметь его в своем коде - не преступление. Есть ситуации, где без него вообще не обойтись. Главное - "уметь его готовить" :). И знать, как подать к столу.

 

Поделиться сообщением


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

  

23 часа назад, Raven сказал:

Ну, что такое блок-диаграмма, она же блок-схема, вам должно же быть известно? Я имел в виду нечто вроде вот такого

Попробовaл кое-как в OpenOffice намалевать.

Koyaanisqatsi_structure.thumb.jpeg.2c8ddd5660f2cfe2d9f79b7c95bbf6b0.jpeg

Но, в том и дело, что я не люблю рисовать то, что не оживёт (как в Logisim), потому и блок-схемы довольно неуклюже рисую, так как навыков не наработал…

Или Quartus сам генерировать их тоже умеет?

SVG-эскиз (diagrams.net)

Koyaanisqatsi-CPU.thumb.png.176abe7fc01c65da0c02deb87337effd.png

 

23 часа назад, Raven сказал:

Можно поискать на АлиЭкспрессе нечто подобное, но подешевле. Главное, чтобы документация на нее была.

Обычно помечается как «Товар не может быkistan»:bye:

Изменено пользователем Alikberov
Обновил структурную схему

Поделиться сообщением


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

17 hours ago, Alikberov said:

  Попробовaл кое-как в OpenOffice намалевать.

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

1. Кто управляет, дирижирует процессом вычислений, координирует работу описанных блоков? Обычно это что-то типа устройства управления.

2. Выборка команд из памяти. Какой блок этим занимается (обычно этим занимается выделенный блок)? Как оно работает?

3. Есть ли в схеме промежуточные регистры?

4. Чтобы было понятнее, как это работает, на диаграмме хорошо бы представить хотя бы основные сигналы управления.

5. Места слияния шин. Как происходит это слияние? Картинка не проливает свет на это.

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

Quote

Но, в том и дело, что я не люблю рисовать то, что не оживёт (как в Logisim), потому и блок-схемы довольно неуклюже рисую, так как навыков не наработал…

В каком смысле - "не оживет"? Для того и рисуем, чтобы был шанс ожить.

Quote

Или Quartus сам генерировать их тоже умеет?

Нет, Квартус за вас их не нарисует :) Так же, как не сможет думать за вас, творчески подходить к делу и принимать сложные дизайнерские решения.

Quote

Обычно помечается как «Товар не может быть доставлен to Uzbekistan»

Все так плохо? Или кое-что поставляется? А что насчет других торговых площадок? Например, eBay?

Поделиться сообщением


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

5 минут назад, Raven сказал:

1. Кто управляет, дирижирует процессом вычислений, координирует работу описанных блоков? Обычно это что-то типа устройства управления.

B Logisim-схеме всё свалилось кучей в FETCH-модуль. Это очень нехорошо, но пока разгрести не получается - нет плана распределения сигналов…

 

8 минут назад, Raven сказал:

2. Выборка команд из памяти. Какой блок этим занимается (обычно этим занимается выделенный блок)? Как оно работает?

FETCH-блок с 4-битным сдвиговым регистром «машинных циклов»:

  1. Цикл выборки команды из памяти. Переключение ША на счётчик инструкций IP. Перевод ШД в высокий импеданс
    ФРОНТ - установка сигнала READ
    СРЕЗ - сохранение кода инструкций в регистр IC; переход на следующий цикл, если внешний сигнал готовности WAIT не препятствует этому
  2. Дешифратор команд получает сигнал разрешения
    ФРОНТ - снятие сигнала READ; исполнение операции; инкремент IP или загрузка по JMP/RET/HLT; если команда не FIX/EXT - сброс на Цикл #1
  3. Цикл доступа к памяти для обмена с РОН. Переключение ША на Bi:Ci. Установка на ШД содержимого РОН или перевод в высокий импеданс
    ФРОНТ - установка сигнала READ/WRITE
    СРЕЗ - переход на следующий цикл, если нет сигнала WAIT
  4. Цикл сохранения данных в РОН
    ФРОНТ - данные сохраняются в РОН (при EXT-команде) с одновременным снятием READ/WRITE
    СРЕЗ - сброс на Цикл #1

Тем самым, самый спорный цикл - #4, так как там и READ снимается, и данные в РОН помещаются. Здесь я понадеялся на внешние задержки, что любая внешняя память отключится от ШД не ранее, чем эти данные попадут в РОН. В Logisim и Icarus Verilog проблем не наблюдается. Но, для повешения стабильности, можно добавить промежуточный регистр по СРЕЗУ #4.

38 минут назад, Raven сказал:

3. Есть ли в схеме промежуточные регистры?

Схему рисовал максимально простую и дешёвую. Как раз можно добавить на Цикл #4 регистр сохранения данных из памяти перед помещением в РОН…

40 минут назад, Raven сказал:

4. Чтобы было понятнее, как это работает, на диаграмме хорошо бы представить хотя бы основные сигналы управления.

Это уже нужно копировать графики или чертить самому…

41 минуту назад, Raven сказал:

5. Места слияния шин. Как происходит это слияние? Картинка не проливает свет на это.

Мультиплексорами. Например, Шина Адреса мультиплексором подключается к IP в циклах #1 и #2, а к РОН Bi:Ci - в циклах #3 и #4.

45 минут назад, Raven сказал:

В каком смысле - "не оживет"? Для того и рисуем, чтобы был шанс ожить.

Так в Logisim рисуешь принципиальную схему, включаешь такты - и всё оживает: Мерцает, переключается, взаимодействует…

Разве в Презентациях такого добьёшься?
Структурные схемы алгоритмически не живут на экране в режиме реального времени. Только в уме…

49 минут назад, Raven сказал:

Все так плохо? Или кое-что поставляется? А что насчет других торговых площадок? Например, eBay?

Всё заточено на шмотьё. Или потребительскую электронику - Action-камеры, Power-камеры, Смартфоны и т.д…
Несчастные PS/2 Y-сплиттеры заказал за $16, но кроме фотографий со складских пунктов ничего не дошло. Жду уж лет восемь!:bye:

Поделиться сообщением


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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

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