Страници: 1 ... 19 20 [21] 22 23 ... 25   Надолу

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

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #300 -: Nov 25, 2014, 18:16 »
Направих новата схема.

По шината наистина има още много работа, мисля да закача и рам, обаче сега това което ме притеснява е как ще запоя двуслойната платка и по-точно от горния край. Отдолу лесно ще стане, но гора ако пътечката минава под инт.схема и почти ще е невъзможно запояването. Мисля да работя с цокли, но се оказа, че те са прави отдолу - няма как да ги запоя. Все още се чудя дали да не я направя на един слой - ще има бая джъмпери, но какво пък - поне ще съм сигурен че ще мога да я направя.
Прескачането мисля да е по следния начин - ще има някакъв регистър на състоянията - който ще държи флаговете а>b, a<b, a=b и при команда CMP ще се подава импулс да запомни състоянията. После с един селектор в зависимост от скачането ще се избира 1 бит от регистъра, който ще се подава през някакъв си лог. елемент на GOTO_JMP, икакто вече стана ясно, после ще следва и адреса, ако евентуално има зареждане.
Активен

kierenski

  • Напреднали
  • *****
  • Публикации: 92
    • Профил
Re: Проект - Q4
« Отговор #301 -: Nov 25, 2014, 18:52 »
За платката за да е двуслойна трябва да използваш така наречените VIAs, само гледай да не са на самите крака на чиповете защото няма да можеш да ги запоиш от двете страни, с вънни VIAs става с проводниче запоено от двете страни което е лесно защото няма какво да му пречи.

Относно условните преходи бих те посаветвал за по-лесно да го направиш с няколко инструкции за преход например:
CMP A,B  -> SR   // изхода ще се записва в сравнителния регистър
AND A, SR -> B  //взема резултата от сравнителния(status)  регистър с тази маска и  записва резултата в регистър B
JMP инстукцията с проверка на всички битове дали някой от тях не е единица със няколко OR елемента
адреса къде да отиде

Не забравяй че усети ли че има GOTO или JMP трябва да закъсняват с 1 такт тези сигнали за да може да прехване адреса и да го предаде на броячите чрез буфера IC20 (за двете инструкции ще ти трябват 2 отделни тригера или трябва да ги смесиш като един опкод със параметър дали да взема в предвид регистър B или не).
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #302 -: Nov 25, 2014, 19:09 »
Да, буфера също трябва да е 1 цикъл назад иначе все ще скача на 0 ;D. Колкото до сравнението, мисля че това дето го описваш е твърде сложно, май може да се направи и по по-прост начин примерно - регистъра на състоянията се активира при командата за сравнение, после викам последователно командите за скок които ми трябват. Командите за скок ще стават по следния начин - по един контролиран буфер на всеки изход от статус регистъра, после буферите отиват в един елемент ИЛИ и от там в GOTO_JMP. При команда за скок, ще се подаде сигнал към контролирания буфер и ако там има 1-ца ще отиде в ИЛИ елемента и после ясно. Иначе просто ще подаде 0 и няма да скочи, след това ще се подаде и адреса, което е малко безсмислено, ама май ще работи :).
Активен

kierenski

  • Напреднали
  • *****
  • Публикации: 92
    • Профил
Re: Проект - Q4
« Отговор #303 -: Nov 25, 2014, 19:31 »
Не е по-сложно защото без това трябва сложиш логически инструкции AND, OR и XOR а както го преглагаш ще е по-оптимизиран от към скорост, но ще трябва да слагаш поне още 4-5 чипа освен логическите функции.

Винаги регистъра на сравнението запомня новата стойност от сравнението (същия такт) защото е най-лесно така, но после трябва да имаш допълнителна логика от няколко мултиплексора за да избереш кой бит да бъде включен до разрешаване сигнала за преход и подаването му на IC20, поради това ти казвам вместо да слагаш няколко мултиплексора и купчина връзки, по-лесно че ще го направиш със маска към регистър което в последствие ще ти даде възможност да разширяваш шината за данни като сложиш няколко регистъра за A и няколко за B но там вече става по-сложно където или ще трябва да ползваш няколко инструкции за регистрите или ще слагаш мултиплексори за да ги избираш като параметри на съответната инструкция.

Тоест или имаш JMP инструкция с хардуерна маска за селектор (мултиплексори) или го правиш като отделна инструкция за маска или го правиш като няколко JMP инструкции с различни условия, като в последния вавянт ще ти трябва по-добър декодер за инструкциите защото ще набъбнат доста.
« Последна редакция: Nov 25, 2014, 19:41 от kierenski »
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #304 -: Dec 03, 2014, 21:48 »
Уж тая седмица щях да правя платката, ама нещо ме хвана мързела от студеното сигурно, та имам още да довършвам по схемата. От петък до понеделник нямах интернет, щото някаква фирма копала нещо си и багера откъснал кабела.. поне така ми каза доставчика. Иначе за сега се получи ето това :

Има още доста неща да се пипат по схемата но нещо такова ще представлява.  Сега се сетих за още едно нещо което не мога да измисля - какво да правя по-големите числа от 4 бита. Мога да сложа рам блок, където да ги съхранявам на части, но пак не се сещам как може да стане. Още по-интересно ми е как ще стане събирането на 2 8-битови числа например.
Активен

kierenski

  • Напреднали
  • *****
  • Публикации: 92
    • Профил
Re: Проект - Q4
« Отговор #305 -: Dec 04, 2014, 14:10 »
По-големите числа се правят с няколко инструкции
LDAL - Зареждаш младши A
LDAH - Зареждаш старши A
LDBL - Зареждаш младши B
LDBH - Зареждаш старши B
ADD - Добавяш операция (SUB - изваждане става като инвертираш регистър B преди да направиш добавянето, т.н. допълнителен код) - резулатата от добавянето ще бъде записан в отделен регистър който после да можеш да го четеш на 2 инстукции RDL и RDH.


Отностно преходите трябва IC21 изходите да могат да бъдат прочетени от шината данни както са свързани другите модули по шината данни иначе инстукцията CMP няма да действа и тогава няма да можеш да имаш инструкция "добави при по-малко" или "добави при равенство" , но щом имаш наяколко инстукции за преход не ти трябва инстукция CMP (просто е безмислено допълнителна логика която забавя нещата).

Виж как е направн PIC16F84 на фирмата Microchip
http://www.electronics.dit.ie/staff/tscarff/16F84/block.gif
той е най елементарен и добре описан от архитектурата която си избрал да правиш (без конвеер).

п.п. Сравняването трябва да е автоматично всяка инсрукция се сравнява като се дава възможност на следващата да прочете и спрямо него да изпълни нещо в зависимост от състоянието на предишната (за това състоянието се съхранява в STATUS регистър IC21).


« Последна редакция: Dec 04, 2014, 14:24 от kierenski »
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #306 -: Dec 06, 2014, 17:44 »
Мисля да го остава горе-долу така, няма да правя пренос, ще смята само до 16 и ще събира и извежда регистрите. Ако го усложня няма скоро да го завърша, мисля да направя платка, да набуча компонентите на цокли и да го пробвам. Така поне ще имам работещ вариант. Мисля да продължа да го правя по-мощен, но вече ще се казва Q8 и ще е 8 битов. Единственото което може да добавя сега (евентуално) е някаква рам памет. Все пак идеята беше да направя устройство с което се демонстрира работата на процесор, не толкова "истински" :D. Поздрави на всички читатели!  [_]3
ПП. Ето я и леко редактирана схема:
Активен

prototip

  • Напреднали
  • *****
  • Публикации: 53
    • Профил
Re: Проект - Q4
« Отговор #307 -: Dec 19, 2014, 14:09 »
Впечатлен съм от двугодишната работа по този проект. Подобни проекти съществуват в интернет, дори имаше някакво сайтче което обединяваше голяма част от такъв ви проекта. За съжаление на успях да го открия сега, къде съм запазил URL-то му.
Но за първи път виждам такава разработка от човек от България. Отново поздравления за проекта.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #308 -: Dec 24, 2014, 10:52 »
Аз от тия 2 години, да съм работил 1 месец по процесора  ;D, предполагам ако се бях амбицирал повече, щях да го завърша по-бързо, но на мен ми е хубаво по-бавно да действам - така хем научавам повече неща, хем накрая излиза по-добре. Обмислям днес на го нацапам на бредборда, както е сега, или поне частта с паметта, щото за сега тя ми е една от най-важните.
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3401
    • Профил
Re: Проект - Q4
« Отговор #309 -: Dec 24, 2014, 14:29 »
Знаеш ли откога чакам да ти изпише  'hello world'.

Но ако ти е толкова трудно с 'hello world' то може поне 'Мerry Christmas' да изпише!
Активен

Perl - the only language that looks the same before and after encryption.

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #310 -: Jan 17, 2015, 16:23 »
Направих симулацията му на Logisim, оказа се, че трябва да променя някои неща, понеже компонентите тук са малко по-общи. Опитвам се да направя платка, обаче тия хора дето са правили 74хх схемите хич не са мислили кое краче къде да е, става голяма каша даже на двуслойна платка. Ето го и клипчето - http://youtu.be/RZ-OR-zcUJc
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #311 -: Feb 15, 2015, 15:23 »
Знаеш ли откога чакам да ти изпише  'hello world'.

Вярно че е на симулация и че няма 'world', ама все е нещо  :D. Имам леки проблеми със синхронизацията, надявам се да ги оправя скоро време.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #312 -: Feb 21, 2015, 22:11 »
След дълъг застой, реших да поработя над платката. Понеже Eagle, с който разполагам е безплатен и не дава да се правят много големи платки, трябваше да разделя схемата. След като си поиграх малко, се оказа почти невъзможно да се направи на един слой, заради това избрах двуслойна платка. Не знам как точно ще стане номера, но се надявам да се получи. Ето малко файлове:

Това е схемата, не съм правил промени от последният вариант. Включва модулите програмен брояч, програмна памет и модула за запис в програмната памет.

Това е долната страна на платката.

И горната страна...

А това са интегралните схеми и другите компоненти.
Това е за сега, ще добавя снимки на готовата платка ако стане :).
Поздрави,
Георги
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3401
    • Профил
Re: Проект - Q4
« Отговор #313 -: Feb 22, 2015, 11:17 »
Понеже ще го правиш на ръка, гледай така да го проектираш, че проходните отвори (via) да не са под схемите. Така по лесно ще можеш след това да го доработваш ако има някаква грешка или просто си забравил да опроводиш някой отвор.
Активен

Perl - the only language that looks the same before and after encryption.

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #314 -: Feb 22, 2015, 19:48 »
Голяма играчка ще си е ако ще я правя така. Сега си мисля и още нещо - ако сбъркам някъде, цялата платка отиде. Наскоро трябваше да правя профилактика на един касетен дек, там всичко беше свързано с платката чрез технологията wire wrap. Мисля че някой беше споменал за нея тук по едно време. Картинката от уикипедия е ето такава:

На мене обаче не ми хареса идеята всичко да е наопаки. За това тия рейки бих си ги изкарал отгоре, и бих добавил захранване на схемите на самата платка. Ще си купя кабел, или пък ще използвам стандартен ethernet кабел примерно, че има доста жици а пък е евтин. Някой сигурно ще кажат че е като бредборда. Да - нещо такова е, ама пише че тая "технология" е много сигурна и връзките държат много време ако са направени стегнато. А пък още повече - щом Pioneer го използват, значи е надеждно. Междувременно си намерих си друг софтуер за платки, който няма ограничения и има 3д преглед на платката. Сега остава само да го разуча и да действам. Програмата се казва KiCAD.
Активен
Страници: 1 ... 19 20 [21] 22 23 ... 25   Нагоре
« назад напред »