Как стать автором
Обновить
26
0
Кирилл @Sukhachev_KIR

разработчик электроники для научной аппаратуры

Отправить сообщение

я если честно циклон 3 люблю - да, кушает побольше потомков, но он такой суровый и довольно быстрый камень, вообще без излишеств, а главное есть корпус в 240 ног без BGA (можно в 2х слоях легко развестись) и пока его еще можно купить... я ими затарился впрок. Из плюсов, как нестранно это слышать, довольно дубовый техпроцесс, что иногда бывает важно)

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

у динозавров есть полные аналоги)

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

сигнал SI- не нужен. Я его ввел для удобства определения фазировки, если не будет работать нужно будет поменять выводы трансформатора связи) Сори, что долго отвечал - не увидел

Может быть, я не спорю, но, а как например соединить N ПЛИСов по 485 без внешних драйверов и только на резисторах? Просто в моей практике берешь стандартный интерфейс – чего нет в железе, а значит берешь внешнее железо.

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

Да, конечно, можно было-бы, но задачи такой не стояло))) целевая стабильная скорость: 1МБ - 2 МБ/с – без чего-либо сложнее диода в обвязке и кусочка проволоки на феррите неизвестной марки. Претензий никаких нет, ни на топовую скорость, ни на идеальный протокол, но в моем опыте оказалось ни раз полезно. И если вдруг кому пригодится - а тут есть готовое и весьма отлаженное решение с открытым кодом) вот  

А она не нужна – отрицательная полуволна это по сути «0», сигнал на входе ПЛИС должен быть как из википедии. Схема с диодами нужна чтобы трансформатор не насыщался. Т.Е. если выкинуть всё: и трансформаторы и диодики с резисторами и соединить ПЛИС напрямую, то канал будет работать, и если добавить все вот это (что на схеме), то канал связи будет работать так-же.

1.       Так если посмотреть мое самое ТЗ я и хотел максимально странно все)) (Шутка)

2.       Во-первых, Вы совершенно правы, как я и писал память программ и ОЗУ вполне конкретные +-, основной тезис: что доступна шина 16 бит (мало ножек ПЛИС + опять же по доступности ИМС памяти) и память медленная. Старался оптимизировать плотность, и это далеко не первый вариант ISA, и да, скорее всего можно много что улучшить в принципе, но пока вышло вот как вышло… эх

3.       Это не баг это фича, идея и родилась от того, что бывают случаи, когда можно вообще копошиться в областях РОН (для несложных задач управления чем-либо с небольшой обработкой), а в ОЗУ вообще не лезть. В таких случаях можно отказаться и от внешней ИМС ОЗУ, и освободить внутреннюю память ПЛИСа для нужд периферии.

П.С.: кстати пытаемся реализовать в компиляторе – подход что он после анализа программы может влиять на ядро, отключая неиспользуемые команды области и тд.

С Регистрами не совсем так - они выглядят как РОН с точки зрения компилятора и программы, но по природе это сектора интегрированной в ПЛИС ОЗУ, реализовать 512 РОН в рамках целевой ИМС думаю невозможно.

ВАЖНО в таблицах системы команд, когда есть условная запись «A255 что то там B 254» действие 253, это условная запись необходимая что бы просто отразить числа в столбцах opr1, opr2 т.д.. Т.Е. регистры 253, 254, 255 ничем не особенные. И вообще в таблице индексы числовые просто указывают на максимальный доступный адрес, иногда адрес «типа» меньше на единицу или две, чтобы команду можно было представить в числовом формате. (Возможно непонятно, лучше дам комментарии по конкретной команде, если нужно)

4.       Регистровый файл разбит именно по той причине, что физически он состоит их двух банков реальной ОЗУ ПЛИС и при операциях использует скрытые реальные регистры А, B и result, ведь все операции только на РОН.

5.       В точку, спасибо попробуем добавить!

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

7.       Да! сил тратится не меньше уж точно! Правда на разработчика компилятора свалился не супер-сырой проект железа, не первая итерация, плюс, что мог отлаживал своими силами ассемблером и простыми программками, а также море симуляций. Конечно, ОС кипит, да и пинаю его постоянно – что бы работал)

Да совершенно верно, механизм такой же, как в циклическом кодировании - ну CRC короче и задавая связи формально можно получать разное основание кодирования, но это скорее фича))) я если честно, пользовался в 99% модулями без кодирования, так и быстрее и меньше места занимает.

Спасибо!!!  Нейман сложнее (м.б. чисто в моем восприятии), а мне хотелось именно уместиться в целевую ИМС.

П.С.: интересно будет почитать про Ваш проект!

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

Почти все варианты адресации можно получить, работая с выходными (относительно ядра) регистрами адреса (первый блок ISA). Т.е. перед любым обращением куда-либо можно предварительно обработать и обновить регистр адреса шины, по которой последует обращение. Для этого и сделаны доступными из программы все «системные» регистры. Отчасти такой подход усложняет компилятор, но сильно расширяет возможности, иногда экономит время выполнения, а главное позволяет выполнить главное условие Т.З. уместиться куда надо. Второй блок, содержащий команды перемещения — это скорее частный случай первого для облегчения процедур единичных обращений.

Доступ к массиву констант? Т.е. получить массив данных из памяти программ?

Если да, то предполагается, что перед началом выполнения основной программы константы загружаются в РОН А (A255<=16'd65535 команда 29), можно блоками по 256 значений (255 – это максимальный адрес РОН блока А: доступные адреса от 0 до 255). А из РОН блока А данные можно отправить куда угодно, например в ОЗУ с предустановкой начальной области ОЗУ (ATR<=16'd65535 команда 3 / расширение 1), регистра адреса блока РОН (ATA<=8'd255 команда 1) и последующим копирование с инкрементами адресов (RAM+<=A+ команда 6 / расширение 3). Таким образом массив констант можно записать и в разные сектора ОЗУ, предварительно указав целевой сектор 0 - 31 (MEM<=5'd31 команда 111). Из ОЗУ данные можно отправлять в режиме пословно, как с явным, так и с косвенным, или со смешанным указанием адресов, а так же в потоковом режиме (R(65535)=>P команда 13).

Пример: Загрузили массив констант в Х-сектор ОЗУ, в процессе выполнения основной программы, получили массив данных который сохранился в другой области или секторе ОЗУ, потоково отправили в периферийное устройство оба массива (например сопроцессор, или уникальный модуль для выполнения какой-то конкретной обработки), и дали команду на выполнение, и вернулись к основной программе и ждем флага или прерывания, выполняя основную программу.

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

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

Важно, что ядро разрабатывалось без претензий на ПК, это контроллерный проект)

Информация

В рейтинге
Не участвует
Откуда
Самарская обл., Россия
Зарегистрирован
Активность

Специализация

Embedded Software Engineer, System Software Engineer
Senior
От 1 ₽
Development of tech specifications
Electronics Development
Circuitry
Development of printed circuit board
Embedded system
FPGA
Verilog HDL
SystemVerilog
Altium Designer
SystemVerilog