|
|
  |
Свои процессоры, Разработка своих процессоров со своей системой команд |
|
|
|
Jan 13 2015, 10:47
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Представляю свой 8-разрядный софт процессор miniByte, реализованный в среде QII 8.1 на Cyclone III. Приложение miniByte.rar включает: miniByte.pdf – краткое описание структуры процессора и сиcтемы команд. mb.exe - транслятор с ассемблера mb.asm в файл mb.mif mb.asm – пример кода с выводом текста «HELLO» на LCD. Процессор miniByte предназначен для программирования внутри ПЛИС, с возможностью изменять под задачу его архитектуру и систему команд. Система команд miniByte схожа с 51 архитектурой, но сокращена до 32 команд с длинами в один или два байта. Тактовая частота до 100 МГц, а команды выполняются за 1 или 2 такта. Память RAM и ROM емкостью по 4096*8 реализована на 2-х портовой внутренней памяти М9К. Стек в RAM произвольной длины. Систему прерывания пока не делал. Синтез софт процессора на verilog и транслятор на С++ написал сам. Для трансляции запустить mb.exe в том же директории, где и mb.asm. Создастся файл mb.mif, используемый далее в QII при загрузках в ROM. Средствами QII 8.1 можно симулировать программу из mb.mif до уровня регистров. После конфигурирования ПЛИС, процессор сбрасывается сигналом locked от мега-функции ALTPLL.
|
|
|
|
|
Feb 15 2015, 11:13
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 22-12-10
Из: Россия, Ростовская обл.
Пользователь №: 61 800

|
Цитата(Serhiy_UA @ Jan 13 2015, 13:47)  Представляю свой 8-разрядный софт процессор miniByte, реализованный в среде QII 8.1 на Cyclone III. Конкуренция растёт.  А я предлагаю 32-разрядный микропроцессор. Точнее, архитектуру. Вот, намедни сделал карту системы команд.  Разумеется, по простоте и компактности он не может конкурировать с 8-ми битными микроконтроллерами, но у него есть другие преимущества - отличная расширяемость и высокая плотность кода. Желтым помечены неназначенные коды операций. Когда (и если) заработает встроенная многозадачность, то проект будет достоин отдельной темы в этом подфоруме. А вот так может выглядеть программа на ассемблере для этого процессора  Знаю проекты, которые продвинулись значительно дальше моего, но с точки зрения возможностей архитектуры я готов пободаться.
Сообщение отредактировал alman - Feb 15 2015, 11:21
|
|
|
|
|
Feb 16 2015, 06:35
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(alman @ Feb 15 2015, 14:13)  Конкуренция растёт.  8 –разрядный софт процессор не конкурент 32-разрядному. У них разное предназначение, скорее он мог бы быть младшим партнером. Для меня главное, что мой miniByte уже работает и его можно легко втыкать в ПЛИС взамен очень больших FSM. Здесь мне интересны методы аппаратной реализации процессора в HDL, а также способы и детали программирования транслятора с ассемблера, ну и архитектура в целом. То есть, кто и как это все реализует… У Вас, как я понимаю, задача аппаратной реализации операционной системы... Один мой знакомый, правда в Америке, что-то подобное делает.
|
|
|
|
|
Mar 11 2015, 20:40
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488

|
Serhiy_UAЦитата Представляю свой 8-разрядный софт процессор miniByte, реализованный в среде QII 8.1 на Cyclone III. А исходники самого проца (rtl) и ассемблера вы можете выложить?
Сообщение отредактировал ~Elrond~ - Mar 11 2015, 20:41
|
|
|
|
|
Mar 12 2015, 09:02
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Timmy @ Mar 12 2015, 11:36)  Мне кажется, что miniByte подходит только для самых простых задач - ну типа светодиодом поморгать, передать в ком порт константную строчку и т.п. Поскольку в нём нет даже сложения двух регистров(сложение возможно только с константой), более сложные операции придётся выполнять, примерно как на машине Тьюринга  . Timmy, спасибо за замечание! Проглядел, исправлю. Бывает, когда все делаешь сам. Теперь вместо команды INC A, введу двухбайтную ADD A, Rx. Ведь аккумулятор инкрементируется и через ADD A, xy. Проблем нет, я как раз и хотел обсуждения… Сравнение с машиной Тьюринга забавно, а какая на самом деле там была система команд, кто знает? Да, еще для затравки. Хотел сделать софт-процессор "полуБайт". То есть с данными в 4 бита. Пока только хочу... Тоже для микро применений.
|
|
|
|
|
Mar 12 2015, 09:16
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Serhiy_UA @ Mar 12 2015, 16:02)  Сравнение с машиной Тьюринга забавно, а какая на самом деле там была система команд, кто знает? описание языка brainfuck почитайте. это оно и есть Цитата Да, еще для затравки. Хотел сделать софт-процессор "полуБайт". То есть с данными в 4 бита. Пока только хочу... Тоже для микро применений. возьмите пикоблейз и прокачайте его до нормального уровня (большой регистровый файл, 4К команд, AXI), вот это будет дело
--------------------
|
|
|
|
|
Mar 12 2015, 09:30
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Как раз 3 команд не хватает до pic'а (35 команд). Может тогда все команды, где осуществляются операции с заданной константой, перевести в режим работы с аккумулятором, как у Motorola MC14500B, ссылку на который привел ув. des00. Код #1 LD A RR ← A #2 AND B RR ← A • B #3 STO TEMP RR = A • B → TEMP #4 LD C RR ← C #5 AND D RR ← C • D #6 OR TEMP RR ← C • D + (TEMP = A • B) = A • B + C • D #7 STO LOAD RR = A • B + C • D → LOAD
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|