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

200 ЛЕ - это с запасом. 3х-уровневый конвейер естественным образом получается, без дополнительных элементов.

1 уровень - внутренние регистры одного порта памяти, 2 уровень - внутренние регистры другого порта памяти, 3 уровень - регистр аккумулятора.

 

Если интересно, и устраивает система команд - могу детально проработать и проверить практически.

На Марсоходе выложил исходники 16-разрядного аккумуляторного ядра, с 1К регистровым файлом в памяти (фон Неймановская архитектура). 3х-уровневый конвейер, команды регистр-аккумулятор за 1 такт. Чуть больше 200 ЛЕ (но можно ужать, если добавить синтезаторо-зависимые оптимизации, я их убрал). В f.hex.v можно посмотреть ассемблерный код, синтезируемый припомощи LCC, сам ассемблер еще не выкладывал.

 

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


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

Leka

Глянул проц, спасибо. :) Но где же самое интересное? Даже не сам ассемблер как таковой, а в первую очередь адаптация LCC под свой ассемблер?

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


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

Позже выложу (подправленный symbolic.c + *.exe), надо рефакторинг сделать. У меня цепочка symbolic ---> asm ---> hex, состоящая из нескольких исполняемых файлов. В LCC я подправил symbolic.c, остальное - оптимизатор-транслятор на Паскале. Паскалевские исходники выкладывать не буду, только если позже перепишу на Си.

 

Адаптации LCC под ассемблер минимальна, тк используется target=symbolic, это и скармливается ассемблеру.

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

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


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

0.asm - вывод с подправленным symbolic.c, дальше этот файл обрабатывается самопальным ассемблером. У меня модель памяти сильно отличается от общепринятой (из-за 1К регистрового файла), поэтому не стал разбираться/делать свой .md файл.

В symbolic просто закомментировал все ненужное мне, добавил вывод space вместо смещений, и поменял некоторые ключевые слова.

 

Рефакторинг (и выкладывание .exe) не скоро буду делать.

symb.zip

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

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


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

Кстати, "разгонные" потенциалы смотрел кто для разных ядер?

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

Для моего m16, например, STA дает ~110МГц на при 1200мВ/0Ц (de0-nano), попробовал 150МГц - работает...

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


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

Для меня наибольший интерес представляют процессоры, которым на ассемблере можно написать что-то типа

R1.H = (A1 = R3.L * R0.H), R1.L=(A0 = R3.L * R0.L) || [P0++] = R6 || R2 = [I2++];

Есть ли вообще в открытом доступе подобные soft-DSP?

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


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

Упрощенный USB-хост для клавиатуры - чтобы беспроводную можно было подключить без софт-процессора с Линуксом (из проводных намного проще взять PS/2). Проект для DE0-nano, ~400 ЛЕ (спасибо разработавшей USB армии даунов). На выходе модуля скан-код последней нажатой клавиши, счетчик нажатий, и карта нажатых Ctrl/Alt/Shift. 0-я версия, комменты в исходниках писать лень, проверил на паре клавиатур - работает.

usbkbd.zip

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

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


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

Упрощенный USB-хост для клавиатуры - чтобы беспроводную можно было подключить без софт-процессора с Линуксом (из проводных намного проще взять PS/2). Проект для DE0-nano, ~400 ЛЕ (спасибо разработавшей USB армии даунов). На выходе модуля скан-код последней нажатой клавиши, счетчик нажатий, и карта нажатых Ctrl/Alt/Shift. 0-я версия, комменты в исходниках писать лень, проверил на паре клавиатур - работает.

С Вашего разрешения добавил ссылку в "ссылки на готовые описания модулей на форуме, предлагаю собрать все в одном документе/ветке форума" :)

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


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

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

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


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

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

Вообще это не проблема. Для меня достаточно было компилятора ассемблера, который в результате работы вписывал в файл процессора содержимое памяти команд... И заодно я сделал софт-симулятор. "Среда разработки" была мной же написана на Си в ВСВ6. И это все оказалось быстрее отладить, чем автомат на более чем 200 состояний...

 

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


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

Вообще это не проблема. Для меня достаточно было компилятора ассемблера, который в результате работы вписывал в файл процессора содержимое памяти команд... И заодно я сделал софт-симулятор. "Среда разработки" была мной же написана на Си в ВСВ6. И это все оказалось быстрее отладить, чем автомат на более чем 200 состояний...

iosifk,, уточните структуру, систему команд, основные принципы построения, а также итоговые параметры (тактовую частоту и занимаемые ресурсы ПЛИС) для своего софт процессора. И какой получился свой компилятор, т.е. какие он имеет возможности. По софт-симулятору тоже хотелось получить представление...

Если все вместе сложить, то получается достаточно большой объем работы был Вами сделан. Хотелось бы с ней ознакомиться, хотя бы в общих чертах...

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


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

iosifk,, уточните структуру, систему команд, основные принципы построения, а также итоговые параметры (тактовую частоту и занимаемые ресурсы ПЛИС) для своего софт процессора. И какой получился свой компилятор, т.е. какие он имеет возможности. По софт-симулятору тоже хотелось получить представление...

Если все вместе сложить, то получается достаточно большой объем работы был Вами сделан. Хотелось бы с ней ознакомиться, хотя бы в общих чертах...

Дело было такое. Пришел работать на фирму и мне дали сделать проект в ПЛИС. Там должен был быть командо-аппарат, управляющий примерно 50 шт реле, 8-10 ЦАПов и столько же АЦП. Команды принимались по последовательной шине на 300 МГц, а весь проект работал на 50 МГц.

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

Что я сделал? Я сделал связку из 2-х процессоров. Битовый процессор делал Булеву обработку флагов и входных сигналов и результаты выдавал в память и в порт. Этот битовый порт дела SPI последовательность, далее там сидела микросхема с ОК мощными выходами. И для каждого битового интервала выполнялся расчет для соотв. реле. Т.е на одно реле можно было успеть просчитать до 50 команд. И этого вполне хватало...

Процессор описан в одной из моих статей. У меня на сайте...

А с 17 разрядным процессором битовый общался через память и флаги. Команды -24 бита, шина данных - 17 бит, озу - 16 бит. Потому как 12 битовые данные из АЦП принимались 32 раза и потом усреднялись. Процессор довольно простой: аккумулятор, стек данных и стек возврата, несколько регистров... Команды соответственно подогнаны под задачу. Одной командой данные можно считать из порта в память, в регистр и в порт вывода. И при этом задать wait-state. Всего понадобилось около 1Кслов команд. Т.е. примерно раза в 3-4 меньше, чем у стандартного мк. А вместе с битовым - раз в 10 проще и быстрее...

Про ассемблер тоже писал статью. Но если кому интересно, могу по скайпу показать рабочий стол с запущенной программой...

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

Да и софт-симулятор тоже дело не хитрое, когда знаешь какая команда в каком окне что должна изменить...

 

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


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

Вообще это не проблема. Для меня

Ну таких как Вы мало. Для большинства даже свою архитектуру процессора разработать и реализовать её на ПЛИС уже страшенный гемор. А если ещё и свой компилятор и свою IDE писать для своего процессора...

 

ИМХО, эта задача не посильна для одного разработчика.

Он будет решать эту задачу лет 10. Но так полностью "до ума" не доведет.

 

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


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

Ну таких как Вы мало. Для большинства даже свою архитектуру процессора разработать и реализовать её на ПЛИС уже страшенный гемор. А если ещё и свой компилятор и свою IDE писать для своего процессора...

Свой компилятор и IDE писать не обязательно, обычно обходятся back-end-ом к GCC, и плагинами к Eclipse, что обеспечивает вполне вменяемый объём работы.

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


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

Свой компилятор и IDE писать не обязательно, обычно обходятся back-end-ом к GCC, и плагинами к Eclipse, что обеспечивает вполне вменяемый объём работы.

А это, типо просто?

Я, к примеру, даже слов-то таких не знаю.

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


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

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

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

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

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

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

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

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

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

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