Страници: 1 ... 6 7 [8] 9 10 ... 25   Надолу

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

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #105 -: Jan 28, 2013, 15:04 »
Малее аз като се замислих то така ми обърква всичко. А ако го оставя така то пак ще работи ?
Активен

bot

  • Гост
Re: Проект - Q4
« Отговор #106 -: Jan 28, 2013, 17:35 »
Добре сега вече разбрах. Боте можеш ли да ми дадеш някъкв такъв чип т.е инициалите му за да го потърся. А относно моя процесор аз принципът го разбрах обаче не мога да схвана как ще чета следващата команда освен да добавя един суматор и да бъде н+1 за да чета данните и където няма данни просто празна команда. Така става ли ?

 разгледай този файл, това са последните модели на Spartan
http://www.xilinx.com/support/documentation/data_sheets/ds160.pdf
 Би трябвало дори най-слабия да върши работа (3800 логически клетки). Аз бих ти препоръчал да си намериш кит, нещо такова:
 http://uk.farnell.com/digilent/410-182/board-dev-fpga-nexys3-spartan-6/dp/2061833
 предимството е че имаш програматор, матрицата, дисплеи, портове, общо взето най-важното събрано на едно място. Скъпичко е знам, но ако се занимаваш упорито ще ти се отплати добре.
 Относно проекта, по-късно днес (в момента съм на работа) ще погледна какво си направил досега, ще ти помогна със схеми и идеи, може би трябва да махнеш стека и да поопростиш схемата, в края на краищата процесора може да мине без инструкцията CALL, ще направим един списък с най-необходимите инструкции, ще трябва да добавиш програмен брояч, както споменах АЛУ-то ти е добре, може малко да се допълни, но най-важното е дешифратора на инструкции. Някои добри хора в опита си да те окуражат те ангажираха морално да завършиш това, което си започнал, предполагам до 2 месеца ще успееш да се справиш. Надявам се и victim70 да се включи, така може да приключиш и по-рано.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #107 -: Jan 28, 2013, 17:54 »
Благодаря. Може да я обсъдим в #linux-bg . Иначе аз искам да има кол функция иначе става просто. стек да може и да го орежа но ще видим.Колкото до списъка
LD - зарежда в акумулатора
ST - зарежда от акумулатора в регистъра
STLD - разменя акумулатор и регистър
AUT - от изхония регистър към акумулатора
ADD
AND
OR
XOR
CALL
RET
OUT
NULL

А не става ли ако ползвам моя метод - инструкция и дата отделно и адрес ? Защо трябва да е с една обща шина ?
Активен

bot

  • Гост
Re: Проект - Q4
« Отговор #108 -: Jan 28, 2013, 18:11 »
 CALL без стек не може, ако искаш тази инструкция да присъства, то задължително трябва да има и стек, може би трябва да е хардуерен с фиксирана дълбочина, да речем 4 нива са достатъчни. JUMP също трябва да присъства, освен това трябва да имаш инструкции за условен преход, което поставя необходимост от регистър на състоянието (флаг за пренос, нулев резултат и т.н.) Инструкцията OUT е излишна, както и NULL.
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #109 -: Jan 28, 2013, 18:36 »
Стека ще си го има. Погледни схемата и виж IC2 . Това е тригер той ще запомня позицията на която е брояча IC1 . След като я запомни т.е извиквам нещо като CALL команда и примерно съм на ред 0001 . Изпълнявам кол и посочвам адрес на който да отида . примерно искам да отида на 0011 . След изпълняването на командата на адрес 0011 на 0100 има команда ретърн. Тя взима стойноста на тригера в който съм записал преди това стойноста на адреса и се връща там.Джъмп инструкцията е на друг принцип. Тя е по-скоро като GOTO . Т.е зарегда адрес от шината и отива там. Джъмп функцията примерно за JMPE - т.е да направи нещо ако акумулатора е равен на регистъра . Това ще става от логическия блок ще има селектор и сравнител. И ако двете числа са равни прескача до определен ред. Мисля че така ще стане. OUT и NULL не са необходими и ще се заменят от JMPE - ако акк е равен на рег. JMPL ако акк е по-малък от рег. и JMPH ако акк е по-голям от регистъра.
Активен

bot

  • Гост
Re: Проект - Q4
« Отговор #110 -: Jan 28, 2013, 18:59 »

А не става ли ако ползвам моя метод - инструкция и дата отделно и адрес ? Защо трябва да е с една обща шина ?
теоретично е възможно. Ако приемем че имаш до 16 различни инструкции и 4 битов адрес ето как би изглеждал един паралелен запис:

 JUMP, address
 CALL, address
 RET , -
 LD   , number
 ST   , address

 и т.н.  Инструкцията "ретърн" няма аргумент, затова се допълва от нули.Такъв модел ти ограничава програмата до 16 инструкции. Може би за демонстрация ще върши работа, но не и за сериозна програма. Ако държиш ще е по твоя начин.
Активен

bot

  • Гост
Re: Проект - Q4
« Отговор #111 -: Jan 28, 2013, 19:11 »
Джъмп функцията примерно за JMPE - т.е да направи нещо ако акумулатора е равен на регистъра .
Ето това е инструкция за условен преход и няма как да се запише в твоя модел, защото тази инструкция има 2 аргумента - адреса на регистъра, с който стравняваш и адреса на който да отидеш ако условието е изпълнено.
 ps  Microchip са решили този проблем като използват една инструкция "прескочи следващата команда ако регистър = акумулатор", следващата команда е "джъмп на адрес" и така се получава условен преход с 2 едноаргументови инструкции, ако искаш го направи така.
« Последна редакция: Jan 28, 2013, 19:28 от bot »
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Проект - Q4
« Отговор #112 -: Jan 28, 2013, 19:36 »
Малко пропуснах, но може да модифицираш АЛУ то по този начин като го сведеш до 1 схема, и да заприлича на истинска схема на процесорно АЛУ.
На JP1 и JP2 се подават двете числа. На  JP3 се подава кода на операцията примерно 0000 (сумиране) 0001 (или)...
На JP4 получаваш резултата. На JP5 са флаговете от операцията (примерно пренос, резултат 0, препълване .....). При тези операции съответно на адресите ще запишеш следната таблица:

Адрес     двоичен запис + флагове (D0-D7)
0            0000 0100
1            1000 0000
2            0100 0000
3            1100 0000
4            0010 0000
5            1010 0000
6            0110 0000
7            1110 0000
8            0001 0000
9            1001 0000
a            0101 0000
b            1101 0000
c            0011 0000
d            1011 0000
e            0111 0000
f             1111 0000
10           1000 0000
11           0100 0000
12           1100 0000
13           0010 0000
14           1010 0000
15           0110 0000
16           1110 0000
17           0001 0000
18           1001 0000
19           0101 0000
1a           1101 0000
1b           0011 0000
1c           1011 0000
1d           0111 0000
1e           1111 0000
1f            0000 1010
....... и така на татъка с таблицата за събиране,изваждане, OR,AND на 2 4 битови числа. Мога да я напиша но няма да ми стигне поста.
Примера е с част от таблицата за събиране. Така вече имаш и флагове на операциите. Не съм свързал CE, OE но ти си ги свържи съгласно апликацията.
Този тип АЛУ се нарича матрична логика (някъде му викат и таблична). Всички процесори го имат и е една памет нищо повече.
//офф
За CM601 трябва да го свържеш както си се полага с РОМ РАМ и И/О чип със съответната програма за да стане нещо. Схемата е с добра сложност.
Активен

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

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #113 -: Jan 28, 2013, 20:13 »
Може и така да го свържа но аз мисля да смятам само цели числа. Регистъра е един. Т.е аз имам 2 акумулатора , но може да го разбирате като регистър.
По въпроса с алу-то мислех и аз за готово може и с готово да го направя, но мисля че ще е по-интересно ако си го направя с дискретни елементи.
« Последна редакция: Jan 28, 2013, 20:17 от zxz »
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #114 -: Jan 28, 2013, 20:16 »
ПП Влезте в чата ще обсъждаме .
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #115 -: Jan 28, 2013, 21:04 »
Схемата вече завършена. Тук-таме някои неща за дооправяне. В официална алфа версия.
Активен

dev_urandom

  • Напреднали
  • *****
  • Публикации: 114
  • Distribution: Slackware
    • Профил
Re: Проект - Q4
« Отговор #116 -: Jan 28, 2013, 22:48 »
IC12 - Свързани накъсо изводи ?
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Проект - Q4
« Отговор #117 -: Jan 28, 2013, 23:12 »
Не е завършена. Вникни в предложението. Отстрани си грубите грешки.
Примерно:
IC6 изходите DQA1-4 са свързани паралелно с изходите IC4
Хубаво IC4 е с 3 състояния на изходите но IC6 не е това означава че в един момент изход е свързан паралелно с изход. Какво става ако единя е в лог. 1 другият в лог. 0 - нарича се състезание и е непредсказуемо отделно че товари изходите и на 2-те схеми.
Времето на пренос през аритметичната част е голямо. Скоро ще разбереш че ти трябва общ такт на схемите за да стават нещата синхронно когато им е времето, тогава ще са необходими 2 такта за да са ти валидни данните, за това се правят сметките таблично с памет, както съм ти нарисувал, защото се извършват за 1 такт и са по-бързи, не е толкова голямо допълнителното закъснение "Transition time".
Друга грешка са ключетата "писовете" пак са свързани към изход на схема IC5 а те се разглеждат като изход. Между тях и схемата няма никаква синхронизация на 3-то състояние. Но не е невъзможно да се осъществи ако ги захраниш от S1, така, че да имат захранване на S2 само при високо Z на IC5.
Прегледай схемата и логиката дето съм дал и я разбери преди да я отхвърлиш в полза на нещо си.
Отстрани поне тези груби грешки в схемата - изход с изход вързано на куп- т.е.:
IC11A - IC11B
PIS - IC5
IC12 - IC14A
IC6-IC4
Активен

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

bot

  • Гост
Re: Проект - Q4
« Отговор #118 -: Jan 29, 2013, 11:36 »

Отстрани поне тези груби грешки в схемата - изход с изход вързано на куп- т.е.:
IC11A - IC11B


 Не е проблем че ги е вързал паралелно, а че ги разрешава едновременно. За всичко останало си прав с едно допълнение - ключетата трябва да се свържат към захранването. Схемата е далече от завършена. Аз от самото начало се опитах да обърна внимание на това че дешифраторът на инструкции ще бъде най-сложната част от този проект и че инструкциите няма да се изпълняват са един такт. Схемите трябва да се разрешават последователно по веригата, ще е необходимо най-малко една закъснителна верига по последователност на всички елементи, участващи в изпълнението на една инструкция. @zxz ако разрешиш всички елементи едновременно може да стане така че алу-то ти да извърши логическа операция преди да получи валидни нива на сигнала на входовете си. 
Активен

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
Re: Проект - Q4
« Отговор #119 -: Jan 29, 2013, 16:02 »
Тия за параленото знам че тях трябва да ги оправя. Имах предвид че всичко е нанесено на схемата не че е готова. Довечера ще я оправя.
Активен
Страници: 1 ... 6 7 [8] 9 10 ... 25   Нагоре
« назад напред »