Автор Тема: Проект - Q4  (Прочетена 147140 пъти)

dev_urandom

  • Напреднали
  • *****
  • Публикации: 114
  • Distribution: Slackware
    • Профил
Re: Проект - Q4
« Отговор #45 -: Dec 19, 2012, 21:59 »
Ееее ? Това НЕ е принципна схема ? :)
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #46 -: Dec 19, 2012, 22:13 »
По-нататък ще я направя дословно. Сега още я разработвам  ;).
Активен

jet

  • Напреднали
  • *****
  • Публикации: 3473
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Проект - Q4
« Отговор #47 -: Dec 20, 2012, 13:24 »
Младеж, трябва да си изясниш какво точно искаш да правиш. Това не е процесор, а едно АЛУ подпряно с тригери, един вид статична логика. Все едно да казваш, че мотиката е обработваща машина - такава е ама ако има и две ръце да я размятат.
С този терминал самоще стигнеш до извода, че АЛУ-то смята вярно.
Иначе браво за усилието. С учебна цел дори изобретяването на колелото си струва.
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #48 -: Dec 20, 2012, 15:14 »
За сега ще е това пък по-нататък ще видим. Пък и то под АЛУ -то разбирайте не само този чипа а още 5. Освен това ще има и други функции. Например и процесора на моторола 14500 е прост но се ползва .
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #49 -: Dec 20, 2012, 17:34 »
Дайте един съвет. Как да оставя входовете на алу блока. Отначало мислех така - тригер към А и тригер към Б , обаче се сетих че може и само тригер към А ,а Б да идва директно през буфер. Вие как мислите кой вариант е по-добър ?
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Проект - Q4
« Отговор #50 -: Dec 20, 2012, 19:00 »
Все пак съм съгласен че си остава само едно АЛУ независимо какво прикачваш. Схемата е напълно погрешна.
Отговори на следните въпроси за себе си не за мене - аз имам конструиран процесор и знам как става.
1. Къде е програмният брояч и има ли възможност да се закачи?
2. Къде е управлението за преходи и има ли възможност да се закачи?
3. Къде са регистрите за състоянието и има ли възможност да се закачат?
4. Каква е архитектурата на процесора?
5. Как се управлява стека и къде е?
6. Къде са кодовете на операциите и колко такта отнемат?

Моите отговори за схемата на тези въпроси са следните.
Отговор: Няма такъв и не е предвижда на дизайн. - това е по точка 1,2,3,6
Отговор: Никакви архитектурни правила не са следвани - това е по точка 4
Отговор: Няма КОП има само задание за АЛУ. - това е по точка 5

За консумацията както виждаш почва да хвърчи много бързо и то в статичен режим с CMOS. Електромера на 5-те волта не е от значение но е от значение шумовете в масата които ще получиш при по-висока консумация, тогава почват логиките да 'щракат' точно когато не трябва. Pull-up/down резисторите ги смени на по-високоомни все пак е CMOS следвай правилото 470К за обща консумация под 200мА, 47К за консумация под 1А и 4,7К за над 1 ампер. Все пак не се доверявай на тези стойности а питай осцилоскопа, когато нещо не върви.
Процесор в дискретно изпълнение ще имаш чак когато стрелката на амперметъра отиде над 6А. За окълцан вариант 4А.

Ако искаш помощ ще ти се окаже но не на такава блокова схема а на истинска, и когато правилата за синтез се следват. Помощта не е разработка а само коригиране на твоите грешки и даване на напътствия, по вече съществуващ дизаин или стъпка от него.

Учатвах през 1985 когато рязахме процесори на моторола за да произведем копие CM601 за СИВ. Колегите тогава се убедиха че не е достатъчно да пилиш и да сваляш топология, защото като я повториш се получава само едно парче извънредно скъп силиции - без функция.
Тогава се синтезира целият процесор на ново и се изработи технология която можем да правим. Процесора в дискретно изпълнение 'гълташе' 30-ина ампера. Просъществува около 2 месеца докато една рускиня не отви обратната връзка на захранването и се оказа включен на 30 волта  ;D
Състоеше се от 30-ина платки с формат А4 завързани на едно алуминиево шаси окло 1.5м дълго с репинг от задната страна на конекторите.

Надявам се да си разбрал верният път за конструиране на такова нещо

 

Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #51 -: Dec 20, 2012, 19:56 »
1. Къде е програмният брояч и има ли възможност да се закачи?
2. Къде е управлението за преходи и има ли възможност да се закачи?
3. Къде са регистрите за състоянието и има ли възможност да се закачат?
4. Каква е архитектурата на процесора?
5. Как се управлява стека и къде е?
6. Къде са кодовете на операциите и колко такта отнемат?

По тези въпроси
1. Има възможност да се закачи и е предвидено място но още не съм го направил. Ще бъде 16-тичен брояч с 4 думи + още 4 за оп-кода. 100% ще има такъв. Най-вероятно ще е рам памет и с дип ключета ще пиша програмата. Клока ще е с 555. Брояча не знам какъв ще е но със сигурност такъв с нулиране и стъпки назад и напред.
2. Не разбрах въпроса . За какви преходи говориш ?
3. Регистрите са си там. Само че още не съм ги сложил на схемата. Предвидено им е място.
4. Тук си прав нямам архитектура. Искам да пробвам да го си направя по моя начин. Може и да звучи тъпо ама аз съм упорит и ще го направя.
5. Тук нещо ни се разбрал.. АЛУ-то не ми е готово и ще ползвам няколко схеми. имам управляващо устройство - това е блока със регистрите и декодера. От там имам няколко буфера и инвертори които управляват всичко.
6. Кодовете се дешифрират от декодера. За сега съм ги направил на 1 такт.
За сега съм направил само управляващото устройство и единият акумулатор.
та за сега изпълнявам това :
0001  0010 // записва в акумулатора стойност 2
0010  0000 // извежда стойноста на акумулатора т.е извежда 2.
другите команди които ще изпълнява са
0011 0001  събира акумулатора с число въведено от "клавиатурата"  ;D и го записва в изходния акумулатор
0100 0001 изважда
0101 0001 функция НЕ от акумулатора
0110 0001 функция ИЛИ
0111 0001 функция И
и още наколко
1000 0000 вдига флаг
1001 0000 джъмп 1
1010 извежда стойноста на изходния акумулатор
ще има и още  :D за сега това.
Активен

bot

  • Гост
Re: Проект - Q4
« Отговор #52 -: Dec 21, 2012, 00:24 »
 Много от командите са ти излишни - примерно функцията "не" от акумулатора - просто записваш обратното на това, което искаш да обърнеш или ако не го знаеш правиш изключващо 'или' (xor) с числото F (1111). Другата ти излишна команда е извеждане на стойност на изхода на акумулатор. Дешифратора ти на командите трябва да е в състояние да извърши няколко операции последователно. Затова в процесорите доста от командите се извършват за повече от един такт. Може да 'надробиш' един такт на няколко по-къси, или пък да използваш предният фронт на тактовият импулс да разрешава изходите на регистрите на входовете на АЛУ-то, а задният фронт да подава сигнал към АЛУ-то за съответната логическа операция. Това имах предвид, когато ти споменах че дешифратора ще трябва да се изгради от доста интегрални схеми. Тази команда - джъмп 1 не я разбрах, ноже би имаш предвид 'празна' инструкция (nop - no operation).
 На предният ти въпрос, относно входовете на АЛУ-то - може да комбинираш двата вариянта - да закачиш регистър и буфер паралелно. Когато искаш да работиш директно с данните от шината - дешифратора на команди 'отваря' буфера и така свързва входа на АЛУ-то със шината. Може да свържиш един инвертор, който да разрешава изхода само на едното от устройствата - буфера или регистъра, така ще избегнеш евентуално късо съединение при едновременно разрешаване на изходите на двете схеми.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #53 -: Dec 21, 2012, 12:53 »
Да така ще направя. Джъмп функцията е празна инструкция т.е прескача команда.
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Проект - Q4
« Отговор #54 -: Dec 21, 2012, 17:02 »

1. Има възможност да се закачи и е предвидено място но още не съм го направил. Ще бъде 16-тичен брояч с 4 думи + още 4 за оп-кода. 100% ще има такъв. Най-вероятно ще е рам памет и с дип ключета ще пиша програмата. Клока ще е с 555. Брояча не знам какъв ще е но със сигурност такъв с нулиране

 Програмен брояч с отделен достъп до данни и код на операцията (паралелно) си е класическа RISK архитектура. Така че явно има някаква недозряла идея за архитектура.
Място за адресен брояч няма - определено, не може и да има при така начертана схема.

2. Не разбрах въпроса . За какви преходи говориш ?

 Преходите са 3 вида условни, безусловни и към подпрограма. Пример от 8 битови 6502 с минемоника като класика в жанра.
Безусловни: 
JMP $xxxx
JMP $#xx
условни:
BCC $#xx
BSS $#xx
BEQ $#xx
BMI $#xx
BPL $#xx
........
към подпрограма
JSR $xxxx
JSR $#xx


3. Регистрите са си там. Само че още не съм ги сложил на схемата. Предвидено им е място.

Минимум изискване е 1 индексен регистър и 1 акумолатор. Такова нещо на схемата няма. Няма и как да се върже при така направения синтез.

4. Тук си прав нямам архитектура. Искам да пробвам да го си направя по моя начин. Може и да звучи тъпо ама аз съм упорит и ще го направя.
Имаш идея за архитектура нещо RISK-о подобно, но реализацията не е такава. В момента схемата е едно буферирано АЛУ без никакви по-големи възможности освен синхронизация.
 

5. Тук нещо ни се разбрал.. АЛУ-то не ми е готово и ще ползвам няколко схеми. имам управляващо устройство - това е блока със регистрите и декодера. От там имам няколко буфера и инвертори които управляват всичко.

Постарай се да го разбереш - няма стек - няма процесор. Прочети повече. Незнам от съфорумците някой да знае за процесор без стек. ДАже 4 битовият калкулатор на 'APOLO' е бил със стек

 


За сега съм направил само управляващото устройство и единият акумулатор.
та за сега изпълнявам това :
0001  0010 // записва в акумулатора стойност 2
0010  0000 // извежда стойноста на акумулатора т.е извежда 2.
другите команди които ще изпълнява са
0011 0001  събира акумулатора с число въведено от "клавиатурата"  ;D и го записва в изходния акумулатор
0100 0001 изважда
0101 0001 функция НЕ от акумулатора
0110 0001 функция ИЛИ
0111 0001 функция И
и още наколко
1000 0000 вдига флаг
1001 0000 джъмп 1
1010 извежда стойноста на изходния акумулатор
ще има и още  :D за сега това.

И без това ще имаш само 16 инструкции, защо пропускаш код 0000
0001  0010 // записва в акумулатора стойност 2 - това е добре

0010  0000 // извежда стойноста на акумулатора т.е извежда 2. - не е добре числото 0000 трябва да има тежест на адрес иначе никъде не извеждаш. Ако смяташ че извеждането е на дисплея това не е процесор а краен автомат.

0011 0001  събира акумулатора с число въведено от "клавиатурата"  ;D и го записва в изходния акумулатор - не е добре прилича на краен автомат. Нака 0001 да е с тежест на число или адрес (препоръчвам адрес)

0100 0001 изважда - какво??? изважда 0001 от акумулатора или съдържанието на клетка 0001 от акумолатора.

0101 0001 функция НЕ от акумулатора - ОК

0110 0001 функция ИЛИ
0111 0001 функция И
Функция И, ИЛИ с какво клетка от паметта или число. При редуцираните инструкции е неразумно да имаш и 2-те има нещо наречено функционално пълна система основните са 2 -  И-НЕ, ИЛИ-НЕ, има и подсистеми с XOR. При писане за такова нещо игрят сериозно уравненията на Деморган.

1000 0000 вдига флаг - Флаг се вдига от резултат при редуцираните архитектури се използва незабавно след операцията иначе се самонулира. Инструкцията е излишна

Да така ще направя. Джъмп функцията е празна инструкция т.е прескача команда.
1001 0000 джъмп 1 - това е най-безмисленият преход както си го обяснил - по добре да е към адрес

1010 извежда стойноста на изходния акумулатор - това се повтаря с 0010  0000 - защо?

Преосмисли инструкциите и ги напиши на ново. Само 16 са. За момента има 5-6 смислени другото е баласт.


Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #55 -: Dec 21, 2012, 17:19 »
Още не съм го измислил като цяло. Това което го има на схемата е само част. Другото е закачено но не е нарисувано. Затова го няма Адресния брояч. Иначе се е предвиден. Тая част дето съм нарисувал е по-скоро само сметачната. Без да искам съм уцелил архитектурата. Нека да изястним едно нещо. Не мога да разбера на кое викате регистър - Аз ползвам акумулатор като памет. За сега са два - един на входа и един на изхода. Аз под регистър разбирам това което управлява данните идващи от портовете.
Стека е той е предвиден но както казах не е на схемата. За сега не съм я направил пълна . Дайте някакво четиво за РИСК архитектура. Не съм много наясно карам го по моя начин.

ПП Моя процесор ще е по-скоро като този - http://tinymicros.com/mediawiki/images/e/ec/MC14500B_Handbook.pdf
ПП2 Днес ще съм в канала #linux-bg
« Последна редакция: Dec 21, 2012, 17:35 от zxz »
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #56 -: Dec 21, 2012, 18:56 »
Малък ъпдейт.
Разбрах какво е регистър  ;D.
Ще имам един регистър. За сега ..
Команди:
1 - запомня стойност в акумулатора.
2 - записва стойност от акумулатора към регистъра.
3 - извежда стойност от акумулатора към изхода.
4 - запомня стойност от регистъра към акумулатора.
5 - сравнява акумулатора с регистъра
6,7,8 логически операции с регистъра и акумулатора.
9 събира регистъра с акумулатора
10 записва стойност от изхода в акумулатора

Това вече са истински команди според мен. Правя схемата на хартия.
Активен

bot

  • Гост
Re: Проект - Q4
« Отговор #57 -: Dec 21, 2012, 19:49 »

Постарай се да го разбереш - няма стек - няма процесор. Прочети повече. Незнам от съфорумците някой да знае за процесор без стек. ДАже 4 битовият калкулатор на 'APOLO' е бил със стек


 8 битовите контролери на Майкрочип нямат стек! При тях няма call инструкция и имат само един вектор на прекъсвания, затова се нуждаят само от един-единствен регистър за съхранение на програмния брояч. Ако искаш да си съхраниш някои регистри като Акумулатора и Статус-регистъра се правят едни Мики-Маус въртележки през банково-независими регистри, изобщо ги мразя тези контролери защото пошеш хиляда реда код за няколко елементарни аритметически действия.
 А, също си в грешка за RISK архитектурата - няма такова нещо като отделен достъп до данни и операции - всичко идва като един низ от паметта.
« Последна редакция: Dec 21, 2012, 19:55 от bot »
Активен

jet

  • Напреднали
  • *****
  • Публикации: 3473
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Проект - Q4
« Отговор #58 -: Dec 21, 2012, 20:05 »

Ако искаш да си съхраниш някои регистри като Акумулатора и Статус-регистъра се правят едни Мики-Маус въртележки през банково-независими регистри
Тогава става мазало ако имаш вложени calls/interrupts. Пак си трябва да емулираш стек.

А, също си в грешка за RISK архитектурата - няма такова нещо като отделен достъп до данни и операции - всичко идва като един низ от паметта.
Данните и операциите са в отделни пространства при Хардвардската архитектура - например микроконтролера 8031/51
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Проект - Q4
« Отговор #59 -: Dec 21, 2012, 22:40 »

Постарай се да го разбереш - няма стек - няма процесор. Прочети повече. Незнам от съфорумците някой да знае за процесор без стек. ДАже 4 битовият калкулатор на 'APOLO' е бил със стек


 8 битовите контролери на Майкрочип нямат стек! При тях няма call инструкция и имат само един вектор на прекъсвания, затова се нуждаят само от един-единствен регистър за съхранение на програмния брояч. Ако искаш да си съхраниш някои регистри като Акумулатора и Статус-регистъра се правят едни Мики-Маус въртележки през банково-независими регистри, изобщо ги мразя тези контролери защото пошеш хиляда реда код за няколко елементарни аритметически действия.
 А, също си в грешка за RISK архитектурата - няма такова нещо като отделен достъп до данни и операции - всичко идва като един низ от паметта.

АБСОЛЮТНО НЕВЯРНО - ПРОЧЕТИ СИ СПЕЦИФИКАЦИИТЕ

В datasheet  на pic16f84 http://ww1.microchip.com/downloads/en/DeviceDoc/30430c.pdf
Страница 1 Подточка High Performance RISC CPU Features: точка 7 Eight-level deep hardware stack
Страница 8 на схемата точно под програмният брояч.
Страница 11 - картина 4.1 и 4.2
Cтраница 18 - точка 4.3.2. Обясняват CALL инструкцията
Cтраница 18 - точка 4.4. Обясняват стека и дълбочината му
Страница 59 - дадена е CALL инструкцията

За данните и КОП се достъпват паралелно - същият datasheet  страница 3 точка 1 The separate
instruction and data buses of the Harvard architecture
allow a 14-bit wide instruction word with a separate 8-bit wide data bus.

Което ще рече че физически първите 6 бита са КОП а следващите 8 са данните. Физически паметта за процесора му е разделена на 6+8, които се адресират на един адрес на PC. Същата заченка се наблюдава и в блоковата схема, въпреки че нататъка реализацията е грешна. 
Също и википедията върши работа http://en.wikipedia.org/wiki/Harvard_architecture - разделен достъп до данни и операции.

Аз не познавам процесор с по-малко от 2 регистъра, програмен брояч, стек и флагове. Може и да има така че някой ако знае такова нещо да пусне спецификациите му
« Последна редакция: Dec 21, 2012, 22:53 от victim70 »
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"