Войти
ФлеймФорумПроЭкты

❌80: Тёплый ламповый (10 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 19 10 11 1219 Следующая »
#135
23:30, 8 июня 2018

Alikberov
> Практичeски двое суток потратил на отладку своего АЛУ…
...
> И составлял всё так, чтобы максимум экономии элементов было, как в ТТЛ-схемах
> сумматоров/АЛУ.
это всё от незнания того, как оно ляжет в FPGA. нет там тех элементов в вашем понимании. там LUT`ы. можно и трое суток иметь нетрадиционный секс, но если записать примерно так:

  case (opcode)
    4'h0 : {carry_out, val_out} <= a + b;      // ADD
    4'h1 : {carry_out, val_out} <= a + b + carry_in;  // ADDC
    4'h2 : {carry_out, val_out} <= a & b;      // AND
    4'h3 : {carry_out, val_out} <= a | b;      // OR
    ...
  endcase

  assign zero_flag = ~|val_out;
то результат будет абсолютно такой же, а отладки будет в разы меньше.

кроме того, а почему АЛУ асинхронное? где будет запись в регистры? сколько одновременно регистров будет адресовано за такт?

> чтобы любая периферия могла иметь доступ ко всем регистрам.
это вот что за бред? накуа, простите мой французский?


#136
9:27, 9 июня 2018

Mahagam
> это всё от незнания того, как оно ляжет в FPGA

Минимальные FPGA, которые можно купить по дешёвке, от 4000 LE... это, извините, дофига.  Там не только проц влезет, но ещё и львиная часть переферии, вплоть до PSG.  Не говоря уж о читтерстве, в виде запуска процессорного ядра через софт эмуляцию на процессорном ядре FPGA. А экономить LE для CPLD нет никакого смысла, их либо всё равно не хватит, либо сама CPLD выйдет в разы дороже FPGA с кратно большим количеством LE

#137
9:30, 9 июня 2018

Хватит фигнёй заниматься :)

лучше сделайте архитектуру простого RISC и продайте в Сколково-Осколково

#138
11:21, 9 июня 2018

innuendo
RISC не нужен, лучше CISC с коротким машинным циклом

#139
11:28, 9 июня 2018

Tonal
> RISC не нужен, лучше CISC с коротким машинным циклом

я за максимальную простоту

#140
14:00, 9 июня 2018

Mahagam
> но если записать примерно так… то результат будет абсолютно такой же, а отладки будет в разы меньше.
Не зря я выше реальную схему выложил и подсчитал примерные затраты. Так как я должен хотя бы приблизительно понимать устройство АЛУ, если «приспичит» на макетке его стряпать…
Я хоть и «безобразничаю» и местами ошибаюсь грубо, но стараюсь не выходить за рамки ТТЛ, чтобы и самому понимать потом, как мой же процессор и устроен… Пусть не до транзистора или вентиля, но максимально детально.
> почему АЛУ асинхронное?
В ТТЛ-номенклатуре большинство АЛУ - ассинхронные. Есть ТТЛ-множители тактируемые, однако. Держусь в том же русле.
Тем более, АЛУ не должен тактироваться никак в моём понимании. Да и в справочниках АЛУ - комбинаторная схема без триггеров и защёлок.
> это вот что за бред? накуа, простите мой французский?
Раньше меня удивляло, что в NES контроллер ПДП засунули в один кристалл с CPU. Потом это стало очевидным правильным решением и я, уже писал выше, функции ПДП возложил на «x80», устранив сигналы «захвата шин»…
Реньше и i8087 перехватывал ESC-инструкции. Сейчас на кристалле имеется огромный регистровый файл и конвейеры имеют доступ к его хранилищу. Хотя, ещё 30 лет назад я мечтал про несколько выводов для непосредственного чтения регистров Z80/i8080.
Напоминаю, что концепция данного процессора уходит в мои школьные годы.
И всё, что может показаться «бредом» взятого сегодня «с потолка» после кошмарного сна, на самом деле является 25 летним опытом общения с i8080/Z80/6502/68000/i8088/Pentium и т.д… и накоплением разных технических решений в блокнотик долгие годы.

innuendo
> лучше сделайте архитектуру простого RISC
Кажeтся, Вы ошиблись темой. Вот RISC-дискуссии.

P.S.: Пусть рубрика «Флейм/ПроЖЭкты» и не хочется грубить, но прошу серъёзнее, товарищи, относиться к теме…
(По-крайней мере, не устраивать здесь флейм-чат и голосования «за/против»…)

P.P.S.: Пришлось переделать модуль Контекста, так как 8-битный АЛУ и 16-битные операнды Контекста - это я замутил круто.
Сейчас работаю над проблемой подключения АЛУ к Контексту с сложением/вычитанием 16-битных слов. Пришлось выбросить пин «Pair» с его логикой и добавить другой сигнал…

#141
15:37, 9 июня 2018

Tonal
> RISC не нужен
innuendo
> я за максимальную простоту

В итоге всё на 200% не так.
Почему? Ну уж точно не потому что (далее каждый придумает сам)

#142
18:30, 9 июня 2018

=A=L=X=
> В итоге всё на 200% не так.
> Почему? Ну уж точно не потому что

что не так?

#143
(Правка: 13:52) 13:36, 11 июня 2018

Mahagam
> блок-схемы в нормальном виде не существует походу. код пишет настоящый акын
Однакo, опыт приобретается теорией-практикой.
Оказалось, мои подходы к чтению префиксов/команд/операндов до сих пор были тупиковыми:
В субботу пытался применить «микрокод» и разместить его в один 100-разрядный сдвиговый регистр.

00 0000????|HALT        // Read Instruction
00 0001????|STC         // Save To Context 
00 0010CCCC|ALU-Code    // Process-ALU
… … …
00 1XXXXXXX|PTR 0-FF    // Select Pointer
01 AAAAAAAA|SAC 0-FF    // Select "A"-Cell
10 BBBBBBBB|SBC 0-FF    // Select "B"-Cell
11 DDDDDDDD|UID 0-FF    // Use Immediate Data
Но потом понял, что это уже получится CISC с RISC-ядром. А в мои планы не входит разрабатывать RISC в рамках конкретного проекта.
А так как идея - «потомок» i8080, решил освежить соответствующий материал
Тут я понял, что нужно:
  1. Вывести флаги состояния процессора/АЛУ напрямую из контекста
  2. Встроить инкремент/декремент указателей прямо в модуль контекста
  3. Ввести регистр «машинных циклов»…

Что у меня теперь? Имеется регистр машинных циклов:
M8      M7      M6      M5      M4      M3      M2      M1      M0
Mem-Wr  Ctx-Wr  ALU-Ops Ctx-Rd  Mem-Rd  Sub-ALU IB-Need IC-Need ???

   M0 - зарезервированный цикл
M1    - Необходимость в коде инструкции
M2    - Необходимость в последующем байте
M3/M0 - Предварительная АЛУ-операция (+M0-бит, если перенос на второй байт)
M4/M0 - Чтение из памяти (+M0-бит, если читается два байта, например, стека)
M5/M0 - Чтение из контекста (+M0-бит, если регистровая пара)
M6/M0 - АЛУ-операция (+M0-бит, если над регистровой парой)
M7/M0 - Запись в контекст (+M0-бит, если регистровой пары)
M8/M0 - Запись в память (+M0-бит, если регистровую пару)
Обработчик:
        always @(negedge CLOCK)
        begin
                casex(MC[8:0])
                        9'BXXXXXXX1X:   // M1 - Read Instruction-Code
                        begin
                                IC = DATA;
                                $display("M1: %02H", IC);
                                MC[1] = 1'B1;
                        end
                        9'BXXXXXX10X:   // M2 - Read Immediate Data
                        begin
                                ID = DATA;
                                $display("M2: %02H %02H", IC, ID);
                        end
                        9'BXXXXX1000:   // M3 - ALU Lo-operation
                                ;
                        9'BXXXXX1001:   // M3 - ALU Hi-Operation
                                ;
                        9'BXXXX10000:   // M4 - PTR Lo-byte read
                                ;
                        9'BXXXX10001:   // M4 - PTR Hi-byte read
                                ;
                        9'BXXX10000X:   // M5 - 
                                ;
                        9'BXX100000X:   // M6 - 
                                ;
                        9'BX1000000X:   // M7 - 
                                ;
                        9'B10000000X:   // M8 - 
                                ;
                endcase
        end
  //
        always @(posedge CLOCK)
        begin
                if(MC[0])       // Резервный цикл? Выходим из него.
                        MC[0] = 0;
                else            // Иначе, обнуляем бит активного цикла. Если всё обнулилось, запускаем цикл M1
                        MC[8:1] = MC[8:1] & (MC[8:1] - 8'D1) | (MC[8:1] === 8'D0 ? 8'D1 : 8'D0);
        end
Как видно, пока это всего лишь пустышка, эскиз.
Другими словами, это уже не RISC, а MISC-подобие. Но уже задача конкретизируется и обретает более чёткие направления.

P.S.: На данный момент испытываю сложности с обработкой «RESET»-сигнала, так как нужно «прыгнуть» на адрес «FF00», а «IP» находится в «контексте» и напрямую к нему не подступишься так легко…
Тем самым, как я теперь понимаю, нужно при Сбросе запуститься с цикла «M7», где будет доступ к контексту с записью в него…
(И мне не нравится цикл «M2»… Его надо объединить в «M1»/«M0» видимо и сбрасывать «M0» принудительно, если непосредственного байта не требуется…

#144
13:38, 11 июня 2018

Alikberov
> А в мои планы не входит разрабатывать RISC в рамках конкретного проекта.

ok, сделай отдельную тему :)

#145
13:54, 11 июня 2018

innuendo
> сделай отдельную тему :)
Тут описал свой RISC же.

#146
14:32, 11 июня 2018

innuendo
> что не так?

Современные процы:
а) очень сложны
б) соединяют в себе узлы и RISC и CISC
в итоге и ты и предыдущий оратор сказали всё наоборот настоящему положению дел

#147
(Правка: 14:34) 14:33, 11 июня 2018

=A=L=X=
> Современные процы:
> а) очень сложны
> б) соединяют в себе узлы и RISC и CISC

скажи это ARM и MIPS, PPC отдельный случай

я за экономию каждого транзистора :)

#148
14:45, 11 июня 2018

innuendo
> я за экономию каждого транзистора :)

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

Кстати тоже, если вернуться пяток страниц назад - микроконтроллеры же в принципе сейчас тоже могут фигачить себе сверхбыстродействующее ОЗУ прямо на чипе статическим способом как кеши-меши устроены. Размеры кристаллов с лёгкостью вместят сотни килобайт и так стопудово делают. Интересно какие там скорости получаются без всяких конвееров и кешей...

#149
(Правка: 14:55) 14:46, 11 июня 2018

innuendo
> я за экономию каждого транзистора :)
Нa кой тогда двигаются технологии к биллиарду транзисторов на кристалле?
Производители в «билльярд сыграли» не вчера и не позавчера
Зачем экономить?

P.S.: В самом начале темы я сразу сказал, что экономить не намереваюсь во вред системе команд…
Нет, я хочу научиться грамотно составлять узлы и экономить вентили там, где можно нужно.
Но не в плане, «инструкция ФИГ имеет код такой, чтобы проводок был на 2 атома короче»…

Страницы: 19 10 11 1219 Следующая »
ФлеймФорумПроЭкты