nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 13 Dec 2017 20:36



Reply to topic  [ 9 posts ] 
Nibbler 
Author Message
Doomed

Joined: 27 Jan 2010 04:45
Posts: 435
Location: 83.149.9.42
Reply with quote
4-bit homebrew CPU

Image

http://www.bigmessowires.com/2013/09/17 ... irst-boot/

Quote:
Some specs:

4 bit custom-made CPU
12 bit addressing, 4K address space size
Harvard architecture – separate program and data memory spaces
2 MHz clock speed, 2 clocks per instruction = 1 million instructions/sec
Thirteen 7400-series chips in the CPU data and control paths
Two 28C16 EEPROMs store microcode for generating internal control signals
4K x 4 SRAM (CY7C168A)
28C64 EEPROM stores programs
Four pushbutton inputs
16 x 2 character LCD
Audio speaker
About 100 mA current draw at 5V”


Image

Image


19 Feb 2014 22:49
Profile
Banned
User avatar

Joined: 04 Jan 2013 11:09
Posts: 398
Location: 95.24.178.158
Reply with quote
Post 
Так на взгляд, если взглянуть на Some specs:
Quote:
Some specs:

4 bit custom-made CPU
12 bit addressing, 4K address space size
Harvard architecture – separate program and data memory spaces
2 MHz clock speed, 2 clocks per instruction = 1 million instructions/sec
Thirteen 7400-series chips in the CPU data and control paths
Two 28C16 EEPROMs store microcode for generating internal control signals
4K x 4 SRAM (CY7C168A)
28C64 EEPROM stores programs
Four pushbutton inputs
16 x 2 character LCD
Audio speaker
About 100 mA current draw at 5V

так всё выглядит несколько загадочно, поскольку как-то слишком просто... :o

Но если добавить:
Quote:
At the bottom-left of the schematic are the SN74LS181 ALU...

то всё становится более понятным! 8)

А система команд Nibbler-а - не ахти:

Image

В этом 4-битном разделе есть и более интересные наборы.

И если я не ошибся, прочитав описание Nibbler 4 Bit CPU и посмотрев его схему,
вызов подпрограммы CALL в нем также не реализован, как и во многих других 4-битных схемах.


17 Mar 2014 12:26
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Stan wrote:
вызов подпрограммы CALL в нем также не реализован, как и во многих других 4-битных схемах.

Я тут посмотрел мимоходом, буквально написано следующее:
Nibbler also lacks any address registers, which means it can’t support any form of indirect addressing, nor a hardware-controlled stack. All memory references must use absolute addresses. That’s a significant limitation, but it’s in keeping with the project’s K.I.S.S. design goals. With the use of jump tables and dedicated memory locations, Nibbler programs can implement a simple call/return mechanism without a true stack.

Перевод wrote:
У Нибблера также отсутствуют какие-либо регистры адреса; это означает, что он не может поддерживать любую форму косвенной адресации, ни аппаратный стек. Все обращения к памяти должны использовать абсолютные адреса. Это существенное ограничение, но это в полном соответствии с концепцией K.I.S.S. (it's an acronym for "Keep it simple, stupid") дизайна проекта.
При использовании таблиц переходов и специальных ячеек памяти, в программах Нибблера можно реализовать простой механизм вызова / возврата, без реального аппаратного стека.

B PDP-8 как-то кургузо программный стек реализовывали... а вот пример программирования, как описано выше "при использовании таблиц переходов и специальных ячеек памяти" хотелось бы посмотреть... :-?

_________________
iLavr


20 Nov 2015 16:36
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Я решил присмотреться к этому Nibbler-у поплотнее...
Как-то у него схемотехнически рискованно всё выполнено, хотя и выполняет какдую инструкцию
за 2 такта, хотя я у себя в 4-bit Processor-е выполнял их за 4 такта воизбежание всяких "глитчей".

Расфасовка команд у автора похожая: [КОП+операнд], или [КОП+сегмент][смещение] :
Attachment:
NibblerTab.gif
NibblerTab.gif [ 13.72 KiB | Viewed 242 times ]

Несколько удивляет, что применив в конструкции АЛУ типа 74181 на 32 функции, автор задействовал
из них только 3 : сложение, вычитание (как CMP) и NOT_OR.
При этом вычитает он как сложение с дополнением, а всё недостающее - реализует макросами в ассемблере. :o

Если бы я в свой 4-bit Processor вставил АЛУ 74181, то все его 32 функции задействовались бы без проблем.
Другое дело, что я сознательно применения АЛУ типа 74181 избегал...

_________________
iLavr


20 Nov 2017 06:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Я решил присмотреться к этому Nibbler-у поплотнее...

И я так пристально присмотрелся, что после трёх суток шаманских плясок с бубнами,
этот Nibbler вдруг сдался и заработал! 8)
Attachment:
Nibbler 2.gif
Nibbler 2.gif [ 41.61 KiB | Viewed 228 times ]

Все шаманские "бубны" и прочие "вувузеллы" на схеме пока еще видны... :wink:

Подробности изложу здесь позже. А то что-то я зело не высыпаюсь 3 дня с этим проектом... :-?


P.S. Shaos... а ты меня подводишь... я столько тестов написал в WinHEX в кодах без Assembler-a... :osad:

_________________
iLavr


20 Nov 2017 19:45
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 15912
Location: Colorado
Reply with quote
Да - чото там автор накрутил-навертел с новыми фенечками C++ так, что в старом добром борланде 2000 года оно уже не собирается, но зато собирается микрософтовским компилятором из командной строки для XP :)
Code:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

Правда пришлось убрать stdafx.h отовсюду и одну конструкцию в assembler.h разделить на 2 части, а также опцию /EHsc применить, иначе ругалось.
В результате оно даже работает и собирает примеры с сайта автора с точным совпадением, за исключением одного случая:
Quote:
FROGGER
binary output: wrote frogger.bin (3279 program bytes, 80% full)
symbols: wrote frogger.sym
Comparing files frogger.bin and ORIGINAL/FROGGER.BIN
FC: no differences encountered

Comparing files frogger.sym and ORIGINAL/FROGGER.SYM
FC: no differences encountered

-
GUESS-THE-NUMBER
binary output: wrote guess-the-number.bin (1742 program bytes, 42% full)
symbols: wrote guess-the-number.sym
Comparing files guess-the-number.bin and ORIGINAL/GUESS-THE-NUMBER.BIN
FC: no differences encountered

Comparing files guess-the-number.sym and ORIGINAL/GUESS-THE-NUMBER.SYM
FC: no differences encountered

-
MASTERMIND
binary output: wrote mastermind.bin (2057 program bytes, 50% full)
symbols: wrote mastermind.sym
Comparing files mastermind.bin and ORIGINAL/MASTERMIND.BIN
0000003D: 4F 4E
Comparing files mastermind.sym and ORIGINAL/MASTERMIND.SYM
***** mastermind.sym
LCD_COMMAND_CUSROR_POS_LINE_1 =$80 ;
LCD_COMMAND_DISPLAY =$F ;
LCD_COMMAND_INTERFACE4 =$2C ;
***** ORIGINAL/MASTERMIND.SYM
LCD_COMMAND_CUSROR_POS_LINE_1 =$80 ;
LCD_COMMAND_DISPLAY =$E ;
LCD_COMMAND_INTERFACE4 =$2C ;
*****

-
MUSIC-WALTZ
binary output: wrote music-waltz.bin (3569 program bytes, 87% full)
symbols: wrote music-waltz.sym
Comparing files music-waltz.bin and ORIGINAL/MUSIC-WALTZ.BIN
FC: no differences encountered

Comparing files music-waltz.sym and ORIGINAL/MUSIC-WALTZ.SYM
FC: no differences encountered

-
TESTRAM
binary output: wrote testram.bin (123 program bytes, 3% full)
symbols: wrote testram.sym
Comparing files testram.bin and ORIGINAL/TESTRAM.BIN
FC: no differences encountered

Comparing files testram.sym and ORIGINAL/TESTRAM.SYM
FC: no differences encountered


Хотя вроде у меня собралось правильно - ума не приложу как у автора
#define LCD_COMMAND_DISPLAY $0F ; display on, cursor on, blinking cursor on
могло превратиться в
LCD_COMMAND_DISPLAY =$E ;
(исходник на 5 минут старше бинарника - возможно он потом исправил, но не пересобрал)


Attachments:
NibblerAsm.zip [117.38 KiB]
Downloaded 5 times

_________________
:eugeek: https://twitter.com/Shaos1973
21 Nov 2017 06:51
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Я тебе очень благодарен - всё заработало просто отлично! :kruto:
Пожалуй, со всем, что ты сделал, я бы и за неделю не справился... :osad:


P.S. Честно говоря, у автора и в схемотехнике там такие фокусы, что я просто
был удивлён - а собрал ли кто-нибуть в реале этот Нибблёр ?

Думаю, собрать такой компьютер из дискретных элементов вполне под силу каждому не затрачивая на это пол жизни :-)
Меня терзают смутные сомнения, что это не совсем так... :wink:

_________________
iLavr


21 Nov 2017 08:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Что мне не понравилось в схемотехнике, так это то, что автор совершенно не избегал ситуаций,
когда на шинах один буфер закрывается, а другой - открывается. :-?
Attachment:
err257.gif
err257.gif [ 5.57 KiB | Viewed 182 times ]

Я в своей конструкции этого настойчиво избегал, поскольку конфликт неизбежен,
в реале, он, может быть и проскакивает, а вот Proteus - это вгоняет в ступор... :-?
Хотя я и в жизни бы такого делать не стал, а разнес бы процессы хотя бы на
несколько корпусов-задержек ТТЛ.

Ну я и раздвинул конфликтные места цифровыми задержками, и схема задышала...

И вот тут меня ожидал сюрприз от автора, которого я очень надеялся избежать... 8)
Выяснилось, что не работают инструкции JP и JNP - а это уже не
схемотехника, это уже - микрокод! :o А в него мне так не хотелось лезть... :-?

Но оказалось, что инструкция JNZ работает! Вот по её образу и подобию
я и пропатчил в 2-х местах ПЗУ микрокоманд...
И у меня тоже сложилось впечатление, что автор выложил не совсем ту прошивку,
что прошита у него.
Хотя... два файла прошивки ПЗУ микрокоманд прилагаются к авторскому эмулятору,
и, возможно, что даже и работают! :lol:

В общем я немного подробнее подебажу сабж, благо, Shaos помог мне с ассемблером,
ибо не так страшны 16 команд, как неприятно вычислять адреса переходов в WinHEX.
Ну а потом - выложу сами проекты, если будет интерес.

Shaos wrote:
вы это - схемку, давайте, схемку, ... ;)
:mrgreen:
Да - схемку надо дать... Поскольку собирал я проект по своей схемке - несколько окультурив
авторский вариант:
 Схема Nibbler принципиальная окультуренная
Attachment:
NibblerSch2.gif
NibblerSch2.gif [ 61.42 KiB | Viewed 178 times ]

Я бы еще отзеркалил её слева направо... но тогда бы пришлось реверсить все надписи...

_________________
iLavr


21 Nov 2017 10:15
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Выкладываю архив с проектом "Nibbler" как есть, ибо ковыряться мне в нем более
не интересно, всё что меня интересовало - я уже посмотрел.
Attachment:
Nibbler.zip [107.18 KiB]
Downloaded 4 times

Один глюк там где-то есть, но отлавливать его мне не охота. :-?

В архиве - проект Proteus "Nibbler" .
Прошивки ПЗУ: патченные и оригинальные.
Авторские программы на ассемблере и в кодах.
Сам ассемблер, любезно перекомпилированный Shaos-ом.

Так что, если кто хочет покопошиться в недрах "Nibbler"-а, желаю успехов и удачи.

_________________
iLavr


27 Nov 2017 11:31
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 9 posts ] 

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.