реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> RISC, with Verilog
Egel
сообщение Apr 3 2009, 16:32
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 28-07-08
Из: Химки
Пользователь №: 39 244



Здравствуйте. Чисто в учебных целях нужно создать RISC- процессор с порядка 20-ти командами. Представление на этот счет есть. Вопрос вот какой - как лучше организовать ассемблер к нему? Т.е. вот, что я имею в виду: будет описана модель ПЗУ - просто как статическая память в FPGA. Хотелось бы, чтобы некоторая программа компилировала исходный ассемблер и вставляла по нужным адресам коды команд для процессора в нужные строки модели ПЗУ, написанной на Verilog. Т.е. сделать нечто вроде реализации для PicoBlaze.
Суть вопроса - как это лучше сделать, на каком языке писать эту программу и сложно ли (последнее конечно относительное понятие).
В дальнейшем модель ПЗУ будет просто цепляться к проекту и синтезироваться с ним вместе.

Если есть какие-нибудь советы по RISC тоже очень буду рад выслушать. На опенкорки не отсылать - не люблю пользоваться чужими проектами.

Спасибо за потраченное время
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 3 2009, 17:24
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Egel @ Apr 3 2009, 19:32) *
...Если есть какие-нибудь советы...

В первую очередь продумать методику отладки проекта в целом, с оценкой скорости/трудоемкости. Если все с нуля - ошибки будут и в железе, и в софте, и на системном уровне.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Apr 3 2009, 17:36
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Советую выбрать 20 команд из системы команд AVR. Хоть там их больше сотни, но для некоторых простых алгоритмов хватит и 20 команд.
Вы сможете использовать уже готовый ассемблер и, например, AVR-Studio. Первый легко позволит формировать код и размещать его по адресам, а второй делать параллельную проверку Вашего проекта в режиме симуляции проверенными средствами.
Работа сложная, но интересная.
Правильная постановка задачи - уже половина ее решения, похоже, с этим у Вас все в порядке.
Go to the top of the page
 
+Quote Post
Egel
сообщение Apr 3 2009, 17:54
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 28-07-08
Из: Химки
Пользователь №: 39 244



Да команды простенькие - у меня завалялось хитрое АЛУ с 8 командами. надо сделать ветвление, и пересылка типа регистр-регистр и память-регистр. Вот еще вопрос - сколько внутренних регистров выбрать? или ограничится только ОЗУ данных? мне бешенная производительность не нужна - главное, чтобы работало. (без всяких там КЭШ и конвейеров и т.д.).
Вот что еще интересно - легко ли потом будет навесить всякую периферию на него - типа таймерных блоков, может даже UART и т.д.?
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 3 2009, 18:11
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Serhiy_UA @ Apr 3 2009, 20:36) *
Советую выбрать 20 команд из системы команд AVR. Хоть там их больше сотни, но для некоторых простых алгоритмов хватит и 20 команд...

Реально у АВР как раз около 20 команд, это маркетологи раздули число мнемоник cranky.gif
Ниже таблица всех(вроде) команд AT90S1200 - для моего первого ассемблера. Для своих первых софт-процессоров я просто менял эту таблицу - без переделки программы.
Код
;AT90S1200
0001 11sd dddd ssss : ADC Rddddd,Rsssss;
0000 11sd dddd ssss : ADD Rddddd,Rsssss;
0010 00sd dddd ssss : AND Rddddd,Rsssss;
0111 kkkk dddd kkkk : AND R1dddd,kkkkkkkk;
1001 010d dddd 0101 : ASR Rddddd;
0001 01sd dddd ssss : CMP Rddddd,Rsssss;
0011 kkkk dddd kkkk : CMP R1dddd,kkkkkkkk;
1001 010d dddd 0000 : COM Rddddd;
0000 01sd dddd ssss : CPC Rddddd,Rsssss;
1001 010d dddd 1010 : DEC Rddddd;
1001 010d dddd 0011 : INC Rddddd;
1100 kkkk kkkk kkkk : JMP @kkkkkkkkkkkk;
1111 01kk kkkk ksss : JMP(Fsss=0)@kkkkkkk;
1111 00kk kkkk ksss : JMP(Fsss=1)@kkkkkkk;
1101 kkkk kkkk kkkk : JSR @kkkkkkkkkkkk;
1001 010d dddd 0110 : LSR Rddddd;
1001 0100 1ddd 1000 : MOV Fddd,0;
1001 0100 0ddd 1000 : MOV Fddd,1;
1000 001d dddd 0000 : MOV @R11110,Rddddd;
1000 000d dddd 0000 : MOV Rddddd,@R11110;
0010 11sd dddd ssss : MOV Rddddd,Rsssss;
1001 1000 dddd dsss : MOV P0ddddd.sss,0;
1001 1010 dddd dsss : MOV P0ddddd.sss,1;
1011 1ssd dddd ssss : MOV Pssssss,Rddddd;
1011 0ssd dddd ssss : MOV Rddddd,Pssssss;
1111 101d dddd xsss : MOV F110,Rddddd.sss;
1111 100d dddd 0sss : MOV Rddddd.sss,F110;
1110 kkkk dddd kkkk : MOV R1dddd,kkkkkkkk;
1001 010d dddd 0001 : NEG Rddddd;
0000 0000 0000 0000 : NOP;
0010 10sd dddd ssss : OR Rddddd,Rsssss;
0110 kkkk dddd kkkk : OR R1dddd,kkkkkkkk;
1001 010d dddd 0111 : ROR Rddddd;
1001 0101 0xx1 1000 : RTI;
1001 0101 0xx0 1000 : RTS;
0000 10sd dddd ssss : SBC Rddddd,Rsssss;
0100 kkkk dddd kkkk : SBC R1dddd,kkkkkkkk;
1001 1001 dddd dsss : SKP(P0ddddd.sss=0);
1001 1011 dddd dsss : SKP(P0ddddd.sss=1);
1111 110d dddd xsss : SKP(Rddddd.sss=0);
1111 111d dddd xsss : SKP(Rddddd.sss=1);
0001 00sd dddd ssss : SKP(Rddddd=Rsssss);
1001 0101 100x 1000 : SLP;
0001 10sd dddd ssss : SUB Rddddd,Rsssss;
0101 kkkk dddd kkkk : SUB R1dddd,kkkkkkkk;
1001 010d dddd 0010 : SWP Rddddd;
1001 0101 101x 1000 : WDR;
0010 01sd dddd ssss : XOR Rddddd,Rsssss;
;


Сообщение отредактировал Leka - Apr 3 2009, 18:12
Go to the top of the page
 
+Quote Post
yes
сообщение Apr 6 2009, 11:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



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

так работает не только пикоблейз, но и микроблейз и поверПС

формат открытый - любым языком С, Жавой, Бейсиком - пишите такой текстовый файл и подключайте к проекту

--------------

если это синтезировать хочется - то прямо исходный код генените - верилог или вхдл
у Гейслера есть такой элемент AHBROM на VHDL, ну и сообще такое пишется за несколько минут - заголовок в формате case, внутри offset:command; ну и endcase endmodule

--------------

а из чужих проектов mico8 от Lattice можно смотреть
Go to the top of the page
 
+Quote Post
Egel
сообщение Apr 6 2009, 19:03
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 28-07-08
Из: Химки
Пользователь №: 39 244



А где про это можно почитать? я не первый раз слышу, но так до конца и не въехал как это делается - понимаю, что там должно быть все просто. Но, на сколько я знаю там обязательно вставлять специфический template в проект.....
Go to the top of the page
 
+Quote Post
iosifk
сообщение Apr 7 2009, 04:48
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Egel @ Apr 6 2009, 22:03) *
А где про это можно почитать? я не первый раз слышу, но так до конца и не въехал как это делается - понимаю, что там должно быть все просто. Но, на сколько я знаю там обязательно вставлять специфический template в проект.....

Посмотрите у меня на сайте статьи: "Микропроцессор своими руками"... И особенно раздел про ассемблер...
Будут вопросы - пишите.
Кстати, где живете?
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
tolik1
сообщение Apr 7 2009, 06:02
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Цитата(Egel @ Apr 3 2009, 19:32) *
Здравствуйте. Чисто в учебных целях нужно создать RISC- процессор с порядка 20-ти командами. Представление на этот счет есть. Вопрос вот какой - как лучше организовать ассемблер к нему? Т.е. вот, что я имею в виду: будет описана модель ПЗУ - просто как статическая память в FPGA. Хотелось бы, чтобы некоторая программа компилировала исходный ассемблер и вставляла по нужным адресам коды команд для процессора в нужные строки модели ПЗУ, написанной на Verilog. Т.е. сделать нечто вроде реализации для PicoBlaze.
Суть вопроса - как это лучше сделать, на каком языке писать эту программу и сложно ли (последнее конечно относительное понятие).
В дальнейшем модель ПЗУ будет просто цепляться к проекту и синтезироваться с ним вместе.

Если есть какие-нибудь советы по RISC тоже очень буду рад выслушать. На опенкорки не отсылать - не люблю пользоваться чужими проектами.

Спасибо за потраченное время

Аналогично с AVR рекомендую посмотреть PIC контроллеры 16 серии. Там порядка 30 с небольшим команд. Есть описания на русском.
Go to the top of the page
 
+Quote Post
Egel
сообщение Apr 7 2009, 18:21
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 28-07-08
Из: Химки
Пользователь №: 39 244



Спасибо за ответы. Живу в Москве и Химках rolleyes.gif

Обязательно все посмотрю!
Go to the top of the page
 
+Quote Post
iosifk
сообщение Apr 8 2009, 05:15
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Egel @ Apr 7 2009, 21:21) *
Спасибо за ответы. Живу в Москве и Химках rolleyes.gif


Тогда до встречи на ЭкспоЭлектронике. Буду 14 со второй половины и 15 первую половину дня на стенде Элтеха...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Guest_Скопидор_*
сообщение Apr 8 2009, 07:13
Сообщение #12





Guests






Цитата(Egel @ Apr 6 2009, 23:03) *
понимаю, что там должно быть все просто.

А с чего Вы это взяли? smile3009.gif

Вы полагаете, что любой новичок запросто может сварганить на ПЛИСине микропроцессор соответствующий по уровню сложности AVR?
Go to the top of the page
 
+Quote Post
Mahagam
сообщение Apr 8 2009, 08:33
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240



Цитата(Скопидор @ Apr 8 2009, 10:13) *
Вы полагаете, что любой новичок запросто может сварганить на ПЛИСине микропроцессор соответствующий по уровню сложности AVR?

да. только сроки разработки будут зависеть от опыта. у начинающего с нуля запросто уйдёт год-полтора. это если вечерами по часику колупаться с симулятором.
Go to the top of the page
 
+Quote Post
Egel
сообщение Apr 8 2009, 10:33
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 28-07-08
Из: Химки
Пользователь №: 39 244



Господа следите пожалуйста за ходов разговора, чтобы вставлять свои комментарии в стиле автор лох. Разговор тогда был про прошивку процессора без пересинтезирования всего проекта. И это действительно легко у того же PicoBlaze. У меня еще руки не дошли, чтобы разобраться с этим. Я думаю, на простой AVR пол года вполне достаточно. Но сейчас такого замаха вообще нет - нет столько времени
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 8 2009, 11:14
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Egel @ Apr 8 2009, 13:33) *
...про прошивку процессора без пересинтезирования всего проекта.

У меня память программ/данных загружается через последовательный COM-порт - без участия ISE.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 19:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016