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

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

Завтра мне снова на работу, но думаю что воскресенье и остаток субботы - даром не потеряю. Главное что симулятор запустил и теперь по мере его освоения конечно буду читать литературу.

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

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


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

Да, пожалуй так и есть - пытаться начать работать с Qucs не совсем разумно, да ещё в Ubuntu ... 22.04 , дело в том что с цифровым моделированием там не так всё просто, установил две вресии Qucs, но GHDL так и не смог пока добавить, так понимаю, что это может оказаться пустой тратой времени...

Нашёл в такое приложение

vhdplus, попробую

 

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

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


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

А зачем вам вообще лезть в схемотехнику? Пишите программную модель конвейера и программу, и гоняйте сразу на Си - получится аналог потактовой симуляции. Быстро и эффективно.

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

И про асинхронную логику - забудьте. Там много нюансов, и даже просто стыковка синхронной и асинхронной схем задача не тривиальная. Скорость асинхронных схем - миф, поскольку для хендшейка нужна схема опроса сигнала готовности буквально каждого триггера, и чем больше разрядов в схеме, тем больше/медленнее эта схема опроса. Плюс, при хендшейке схема через каждый такт простаивает, поскольку надо сбросить данные в комб. части - производительность падает вдвое (есть патент, который это частично обходит, но не полностью). Задержка схемы управления хендшейкам плюсуется к задержке комб логики, и Fmax получается и еще меньше. И последний гвозь в гроб асинхронной логики, это в разы бОльшее потребление из-за в разы большей переключательной активности в проводах - в сравнении с синхронной схемой. Провода это RC, на старых процессах не шибко важный параметр, но финфетах и ниже это уже основной источник потребления. Асинхронная логика выигрывает толлько в ну совсем редких задачах

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

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


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

4 минуты назад, Shivers сказал:

Чем заниматься схемотеникой, начните с того что хорошо умеете.

я уже говорил, что схематичное представление информативнее текстового.

К тому-же С я могу применять, но не знаю. Могу что-то простое на С - скетч, а больше мне не надо. Остальное я делал в Lazarus, как и занимался отладкой алгоритма, через который пришёл к выводу что мне не нужны традиционные процессоры - так как они вообще не то что надо, да и доступа к кэшу не дают, так и языки программирования под них. Следовательно мне черех программирование логики делать процессор, что проще - черех схемотехнику. И кстати нашёл программу симулятор - Logism, с ней будет попроще. И установил GHDL, но это уже для Qucs. А так - так, схемотехника мне не нужна, а логику программировать удобнее через схемы.

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


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

1 час назад, accurate_random сказал:

я уже говорил, что схематичное представление информативнее текстового.

 

Ничего подобного. Как пример - Ваша схемотехника. Лично мне ничего непонятно. Нагляднее представить в виде функции, а это уже текстовое описание и как результат - схему на откуп синтезатору. В Вашем случае использование RS защелки некорректно по определению. Потому что исходя из таблицы истинности на входах R и S она накладывает запрещенное состояние, которое у Вас возможно, ибо у Вас выходы асинхронной схемы напрямую связаны с ее входами. Если по-русски -  это гонки. Любое изменение схемы по быстродействию, изменение температуры влияет на временные задержки, а значит на  работоспособность Вашей схемы (Солнышко пригреет плату и она может не проснуться по включению питания).

Как только речь заходит о схемотехнике, она подразумевает базис - какой то технологический процесс на базе примитивов, которые всегда ограничены функционально. Если Вы хотите для обучения использовать плату на базе ПЛИС бывшей фирмы XILINX, то надо скачать среду разработки типа вивадо, среду моделирования типа модельсим, и пользоваться примитивами, которые Вам будут доступны. Не знаю как сейчас, а лет 20 назад на семействе 3000 FPGA у Xilinx принципиально не было примитивов с одновременно и R и S входами. Чтоб пользователь не имел соблазна воспользоваться и R и S входами в своей схеме. 

И Вам все равно придется разорвать Ваши циклические пути и добавить в разрыв регистры. Добавив понятие - работа по фронту клока.

И тут действительно дилемма. Или все будет жить только на уровне патента. Или превратиться в профессионального ремесленника.

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


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

1 час назад, sazh сказал:

Если Вы хотите для обучения использовать плату на базе ПЛИС бывшей фирмы XILINX, то надо скачать среду разработки типа вивадо, среду моделирования типа модельсим, и пользоваться примитивами, которые Вам будут доступны

это всё есть, нет пока USB хаба...ну и вроде как клавиатуру надо небольшую.

1 час назад, sazh сказал:

Добавив понятие - работа по фронту клока.

и вот кстати в Logism я уже встречаю знакомые понятия - "срабатывание по переднему фронту". Чем она и удобнее оказалась. В остальном - не очень. Но вроде как заявлена как образовательная.

1 час назад, sazh сказал:

Нагляднее представить в виде функции,

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

Тогда проще так - таблицу истинности блоков и какие столбцы или строки таблиц соеденены проводами.  Разве это не проще? Нписать функцию - это немного проблематичнее. Кластер таблиц истинности подойдёт? В данном случае их 4 - таблиц. И они совсем не сложные, если посмотрите на схему. А...то-есть таблица истинности одна, но нужно обозначить подключения проводами между копиями.

А...то-есть таблица истинности одна, но нужно обозначить подключения проводами между копиями. Можно разбить каждый блок. Тогда это днём сегодня, но не сейчас, сейчас я ещё Logism рассматриваю.

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

Как видите - текстовое представление всё равно уступает... Графическое легко заменить таблицей соединений пинов копий и таблицею истинности пинов.

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

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


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

Видимо нужно изменять содержимое файлов как на GitHab говорят, GHDL - работает, но синтаксис надо менять.

А так вообще - недолго и свой симулятор попутно писать чисто на таблицах истинности и на таблицах распиновки к этим таблицам истинности. Вопрос лишь в том - где меньше времени будет потрачено.

Screenshot from 2024-03-03 09-55-47.png

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

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

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


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

И докупил клавиатуру, мышь - скоро прийдут, по месту usb хаб и шнур USB Type-C для питания FPGA, потому как для программатора шнур неохота для питания использовать. Глупо было-бы не использовать ПО от разработчика, тем более что оно скачано, просто устанавливается на отладочную плату - там 2 arm процессора и Linux с ПО. Поэтому пока так - ковыряю что есть докомплект.

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

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

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


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

Странно, ведь должна устанавливаться единица на следующем такте в нижний RS тригер, но этого не происходит...или подобные схемы (я не утверждаю что она точная и без ошибок) на FPGA не делают? Тогда правда лучше перейти к описанию или в виде таблиц или на языке. Насколько мне известно должна записаться единица, но не происходит этого.

Screenshotfrom2024-03-0321-49-11.png.dd6c76f99649c1d57284c462315ee237.png

Что-то странная публикация попалась

Цитата

Подадим на вход S нулевой потенциал. Согласно таблице истинности логического элемента "И-НЕ" на выходе Q появится единичный потенциал. Это приведёт к появлению на инверсном выходе триггера нулевого потенциала. Теперь, даже если снять нулевой потенциал с входа S, на выходе триггера останется единичный потенциал. То есть мы записали в триггер логическую единицу.

это тут

https://digteh.ru/digital/RS_trigg.php

Screenshot from 2024-03-03 21-59-16.png

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

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


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

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

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

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


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

On 3/3/2024 at 12:49 AM, accurate_random said:

таблица соединений копий, и таблица истинности. Ок? Зачем усложнять какими-то языками

А "таблица истинности" - это как? Разве не текстом ее нужно будет как-то описать?

Ну и до кучи - когда Вы рисуете схему из элементарных кирпичиков - на выходе все равно получаете последовательность вых. сигналов в зависимости от входных. Только это стороннему взгляду трудно понять. А разработчику - трудно обнаружить и исправить ошибку.

Текстом (на к-л языке) можно не только описать эти соединения, но пойти дальше - описывать сразу поведение блока - т.е. сразу описать зависимость выходов от входов.

А как оно внутри куска кремния будет физически реализовано (конкретная схема) - это отдать на откуп синтеза тору, который лучше знает особенности построения этого кремния.
 

On 3/2/2024 at 10:33 PM, Shivers said:

Скорость асинхронных схем - миф, поскольку для хендшейка нужна схема опроса сигнала готовности буквально каждого триггера, и чем больше разрядов в схеме, тем больше/медленнее эта схема опроса


Иногда асинхронный кусок может оказаться полезным - ранее уже был приведен пример на эту тему.
Что же касается готовности - можно посчитать худший случай готовности асинхронного куска (т.е. передали асинхронному блоку на обработку, выждали положенное время - результат готов),
При хендшейке также нужно учитывать то, что опрос готовности происходит на другой скорости - на скорости синхронного блока.
Например, асинхронный блок способен работать (выдавать готовый результат) через 100 нсек (10МГц), если же синхронный блок работает на 100МГц - то времени потеряется 1-2 такта работы синхронной схемы.

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


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

35 minutes ago, Yuri124 said:

Например, асинхронный блок способен работать (выдавать готовый результат) через 100 нсек (10МГц), если же синхронный блок работает на 100МГц - то времени потеряется 1-2 такта работы синхронной схемы.

В асинхронной схеме нужно сбрасывать и флопы и логику. Сбросить одни флопы недостаточно, ведь в логике остаются логические состояни, и они приведут к переходным процессам сразу по снятию сигнала сброса. А сброс логики это практически та же задержка что и у полезного сигнала. Получаем скорость в два раза меньше, если грубо. Плюс подсхема окончания переходных процессов, плюс управление, итого примерно в 2.5 медленнее эквивалентной синхронной схемы.

Но, однозначно асинхронная схема может быть полезной. В автоматах управления ацп, шим, в ультра лоу пауер задачах, нестабильном питании, или нестандартных температурах (крио, либо наоборот 200+)

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


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

On 3/4/2024 at 10:46 AM, Shivers said:

сбрасывать и флопы и логику

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

On 3/4/2024 at 10:46 AM, Shivers said:

в 2.5 медленнее эквивалентной синхронной схемы.

Конкретный пример:

у меня был проект, без триггеров внутри. Результат на выходе был гарантирован через 100 нсек. 
Синхронная (конвеерная) схема при частоте 100МГц выдавала бы результат через 450-500 нсек.
Т.е. после подачи на вход асинхронного блока я мог через 110 нсек гарантированно забирать результат обратно в синхронную часть.

Но на самом деле надо бы использовать обе реализации - и асинхронную (т.к. периодически нужно было получить только один результат), и синхронную - получать подряд серию (она бы после истечения 500 нсек шла уже со скоростью 10 нсек/результат). К сожалению, для обеих не хватало ресурсов имеющегося кристалла...

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


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

6 hours ago, Yuri124 said:

у меня был проект, без триггеров внутри. Результат на выходе был гарантирован через 100 нсек. 
Синхронная (конвеерная) схема при частоте 100МГц выдавала бы результат через 450-500 нсек.
Т.е. после подачи на вход асинхронного блока я мог через 110 нсек гарантированно забирать результат обратно в синхронную часть.

Если по алгоритму стейт машина ждет несколько тактов, прежде чем защелкнуть результат с выхода комб. логики, это называется multicycle. Синхронный констрейнт, специально для таких случаев. К примеру, на 100Мгц, если забирать результат через 110нс (11 тактов), схематехнически это делается как обычно, синхроно - с флопами на входе и выходе (но без деления на стадии конвейера), а на комби. путь между ними накладывается констрейт set_multicycle_path -setup 11. Не нужно изобретать что то асинхронное, малтисайкл это стандартный подход.

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


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

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

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

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

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

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

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

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

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

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