Перейти к содержанию
    

Попытка создания собственного конвейера процессора.

  Здравствуйте. В электронике я вообще новичок. В программировании и алгоритмизации - не совсем. Всё началось с того, что я придумал, всё-таки, альтернативу свёрточным нейросетямю Не думайте что я рекламирую что-то, моя цель проста - завершить начатое. Альтернатива свёрткам мной аписана тут https://habr.com/ru/articles/743758/ .

Далее уже при написании генератора карт, алгоритм Брезенхема к текущему ТЗ генератора проиграл. Код генератора мной был отполирован (формулы доработаны, просто я не вижу смысла выкладывать это в паблик), а глядя на блок схему и код https://habr.com/ru/articles/769972/ в голове начала вырисовываться необходимая архитектура. Примерно так 

https://habr.com/ru/articles/794544/ . То-есть нечто вроде конвейера, у которого минимум простоев. Четыре кэша. И уже далее в голову закралась мысль, чтобы сделать процессор двух режимным : обычный режим, и режим без тактирования (полагаю он будет намного быстрее), при этом адреса у памяти кэша команд быть всё-же должны. За схему - прошу прощения, так как в электронике я практически нуб, и ошибки будут меня преследовать ещё долго.

Пояснение схемы просто процитирую из моего сообщения участнику на Хабре.

Цитата

Здесь тригеры - ячейки памяти в один бит, Ym - бит моста, Yr - бит выполнения. Бит моста может быть равным нулю(команда не должна выполняться), а может единице(команда должна выполняться). Диод - условно память, в которой хранится одна команда, которую при активации память кэша выложит на шину данных для процессора. Здесь без тактирования, кроме того момента, когда происходит перезапись бита выполнения далее по цепи источника S1, но активируется эта запись и сигналом S2, который означает что процессор прочитал команду и ожидает следующих данных. Поэтому сказать что это аналоговое - не правильное, просто здесь часть работы хочется сделать без тактирования. При этом нужно чтобы эта память кэша команд могла работать и с адресацией - без ней просто совсем никак, например записать в регистры Ym информацию о пропускаемых командах и о выполняемых, перезапись Yr вроде как должна выполняться автоматически, но у меня нет уверенности в правильности моей схемы - тут я полный новичок.

Тайм-прайм у меня очень маленький и продвижение очень медленное. Читаю литературу - основы схемотехники. Только начал (два дня назад получил в доставке книгу). От помощи и от подсказок - не отказался бы.

Screenshot from 2024-02-25 20-33-27.png

Файл сземы для Qucs не смог прикрепить, только изображение.

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 26.02.2024 в 00:53, accurate_random сказал:

Пояснение схемы просто процитирую из моего сообщения участнику на Хабре.

Входы рисуются слева, а выходы справа. У вас схема какая-то оборванная Ym1 неизвестно куда подключается, выходы Y1 и Y5 в воздухе зависли, надо дополнить что куда....

А остальные Ym и Yr (т.е. кроме Ym1 и Yr1) надо выкинуть - они загромождают схему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, accurate_random сказал:

режим без тактирования (полагаю он будет намного быстрее)

Работа схем без тактирования называется асинхронной логикой. И много где исследована. Вот например букварик.

Одна беда. Под неё нету ничего отладочного. Плисы заточены под другое. А делать асики сложно и дорого.

Kluwer=Perspective.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 часов назад, HardEgor сказал:

У вас схема какая-то оборванная Ym1

это первый тригер кэша мостов первого адреса кэша команд, поэтому завис, в него записываются данные с помощью адресации.

17 часов назад, HardEgor сказал:

Ym1 неизвестно куда подключается, выходы Y1 и Y5

всё что подключено к Ym1 и  Yr1 - элементы их звена, следовательно далее все повторится. Сигналы идут в разных направлениях специально, что активировать звено на пересечении-обрыве.

17 часов назад, HardEgor сказал:

А остальные Ym и Yr (т.е. кроме Ym1 и Yr1) надо выкинуть - они загромождают схему.

я как мог  намекал что это множество...не получилось - прошу прощения.

9 часов назад, MegaVolt сказал:

Плисы заточены под другое. А делать асики сложно и дорого

я и не планирую исключительный асик, думаю что смогу сделать всё что задумываю - всегда есть пространство для "манёвра", к тому же нет в планах идти только путём асинхронной реализации, просто - местами будет асинхронно, и думаю что это вполне реально. Отпускать на время ..., это как "йо-йо", всё вполне будет синхронизироваться в конечном счёте, просто будет в большей степени или в меньшей применено - как получится..

Просто мосты Ymзапаисываются принудительно, с помощью адресации, а выполнение обращения к памяти - моргнуть диодом автономно, как и запись и обнуление Yr (аппаратно).

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но схема не доделана -  нет полноты всех элементов каждого звена цепи тригеров. Мне-бы в Qucs симуляцию её запустит хотя-бы для одного звена. В общем спасибо за внимание - до завтра, сегодня посмотрю мануалы. Хотя в Qucs есть Verilog, но для меня это тёмный лес. Монитор для FPGA мне задержать до первого марта - можно просто подождать, там и ОС и ПО и примеры. У меня такая штука

Макетная плата Xilinx ZYNQ7000 XC7Z020 с Xilinx программатор USB HDMI-совместимый Gigabit Ethernet PYNQ

в продаже сейчас уже нет на Али.

Поэтому пока не приедет монитор для платы - ничего не могу делать, ну и потом возможно надо будет заказать клавиатуру USB... правда портов у неё маловато...

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

такое . Думаю что не плохая вещь. Документация есть, но не изучал детально, просто скачал то что мне дали.

IMG.jpg

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 27.02.2024 в 01:29, accurate_random сказал:

Но схема не доделана -  нет полноты всех элементов каждого звена цепи тригеров. Мне-бы в Qucs симуляцию её запустит хотя-бы для одного звена.

У вас схема не дорисована, о какой симуляции можно рассуждать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, HardEgor сказал:

У вас схема не дорисована, о какой симуляции можно рассуждать?

мне как-бы после работы не охота рисовать одно и то-же, а Qucs на Ubuntu 22.04 через копировать вставить - выделенные элементы не вставляет...Прошу прощения - делает только через CTRL+C и CTRL+V . Не проблема - дорисую, точнее - докопирую.

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот. Состояние тригеров Ym - устанавливается из вне... Может есть ссылка на текстовый мануал или уроки...чтобы не тратить время на просмотр видео?

Я понимаю, что в сземе вероятно есть ошибка, это более чем 50 процентов, но с симуляцией мне проще увидеть её и вникнуть в проблему. Источник сигнала S2 можно даже заменить на логическую единицу...но тогда тактов не будет видно...и изменений состояний элементов цепей.

 

Screenshot from 2024-02-27 20-58-35.png

Тут первое что бросается в глаза знающему ТЗ - нет  того, что нашло бы следующий тригер Yr, в который нужно записать 1. Вроде для этого есть что-то, но чего-то не хватает.

ТЗ такое - моргнуть диодами, правда мной нигде не указано что это светодиоды, поочерёдно, время свечения значения не имеет, главное сделать это поочерёдно где  Ym ранодмно содержит единицу.

Размерность цепи пока не определена, сложность в том, что она должна быть максимально большой (у любого девайса есть ограничения), и вот как-то надо. С симулятором проще, как и с отладчиком ошибки в коде искать.

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мной была предпринята попытка, чтобы 1 в Yr само удалалось и перезаписывалось далее само где Ymсодержит единицу, но это вроде как так просто не сработает, чтобы Yr потом сам обнулялся, именно эта попытка мной была предпринята в этой схеме, 100 процентов не работоспособной. Ставка делалась на обрывания сигнала в верхней и нижней линии элментов И . Кажется это не сработает так запросто.

И  и включении на месте следующего контакта, так как нижняя цепь пропустит сигнал далее потом. Кажется это не сработает так запросто.

Нашёл такое http://library.tsilikin.ru/Руководства/ПО/Qucs/QucsUserGuide_ru.pdf

Мне надо стало-быть с страницы 52, глава "Симуляция, основы".

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пришёл монитор, подключал пока только к буку. FPGA пока не трогал. Как только попробую симуляции - отпишусь. Маленький прайм-тайм, на работе сейчас. В общем как только попробую симуляции - точно не раньше выходных (ковырять буду конечно, но прогресса большого вряд-ли будет в будни, хотя кто его знает...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/27/2024 at 9:01 PM, accurate_random said:

Источник сигнала S2 можно даже заменить на логическую единицу...но тогда тактов не будет видно.

Простите, может быть не понял - о каких тактах идет речь?

Тут же сплошная асинхронная схема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/25/2024 at 8:53 PM, accurate_random said:

 

Screenshot from 2024-02-25 20-33-27.png

 

Прошу извинить, если не понял замысел:  а что, D1 так подключать - это так и задумано? Он же логическую 1 вроде просто закоротит на землю - или я чего-то не понял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/29/2024 at 2:36 PM, Raven said:

D1 так подключать - это так и задумано?

это так светодиод обозначен. как я понимаю - чисто условно (т.е. без резистора и значок обычного диода - было про это у ТС в тексте - правда, про резистор я сам предположил).

Конечно, Вы совершенно правы - надо было бы нарисовать правильный значок + резистор, чтобы видящий эту схему не отвлекался на лишние размышления.

Изменено пользователем Yuri124

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы начинал с изучения HDL языка, например http://www.asic-world.com/verilog/veritut.html

Если цель именно процессор, конвейер, кэши и так далее - сначала потребуется освоить HDL язык на достаточном уровне, и тогда работа над процессором пойдет уже мягче и успешнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...