|
RISC, with Verilog |
|
|
|
Apr 3 2009, 18:11
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Цитата(Serhiy_UA @ Apr 3 2009, 20:36)  Советую выбрать 20 команд из системы команд AVR. Хоть там их больше сотни, но для некоторых простых алгоритмов хватит и 20 команд... Реально у АВР как раз около 20 команд, это маркетологи раздули число мнемоник Ниже таблица всех(вроде) команд 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
|
|
|
|
|
Apr 7 2009, 04:48
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Egel @ Apr 6 2009, 22:03)  А где про это можно почитать? я не первый раз слышу, но так до конца и не въехал как это делается - понимаю, что там должно быть все просто. Но, на сколько я знаю там обязательно вставлять специфический template в проект..... Посмотрите у меня на сайте статьи: "Микропроцессор своими руками"... И особенно раздел про ассемблер... Будут вопросы - пишите. Кстати, где живете? Удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Apr 7 2009, 06:02
|
Частый гость
 
Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016

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

|
Цитата(Egel @ Apr 6 2009, 23:03)  понимаю, что там должно быть все просто. А с чего Вы это взяли? Вы полагаете, что любой новичок запросто может сварганить на ПЛИСине микропроцессор соответствующий по уровню сложности AVR?
|
|
|
|
|
Apr 8 2009, 08:33
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

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