voce pode fazer seu proprio core risc tambem ueh... se liga nesse cara aqui:
http://darklife.org/pics/xilinx/Screen% ... 7%20PM.pngtem menos de 100 linhas de codigo, possui 16 registros de 16 bits, instrucoes de 16 bits, faz o basicao de aritmetica e logica e possui ateh instrucao de loop com auto-decremento de contador! hahaha
eu ateh montei um assembler basicao para ele:
http://darklife.org/pics/xilinx/risc_src.tgzclaro, bem incompleto ainda, pois fiz isso no sabado passado quando estava deprimido com a chuva e o carnaval hahaha
todas as instrucoes rodam em um clock e consegui colocar 4 destes caras rodando a 50MHz em uma XC3S100E, que dah 200MIPs de performance na FPGA mais barata disponivel. nem coloquei RAM, pq os 16 registros por si acabam funcionando como uma RAM primitiva hahaha mas se vc tiver recursos, pode colocar 64K words de ROM e 64K words de RAM e/ou IO.
de forma geral, as instrucoes sao do tipo:
xxxx dddd ssss ooooonde xxxx eh um opcode de 4 bits, dddd eh um registro destino, ssss eh um registro fonte e oooo eh um operando imediato curto.
por exemplo, a instrucao de multiplicacao com a notacao:
mul %d0 %s1 15vai multiplicar o registro 1 com o registro 0, shiftar 15 para a direita e guardar o resultado no registro 0. o %d e %s sao justamente para indicar, respectivamente, destino e fonte, assim podem aparecer em qualquer ordem.
outro exemplo eh como a notacao permite codificar instrucoes novas sem realmente criar elas no core:
a instrucao clr simplesmente eh codificada como:
xor %d0 %s0e nop eh simplesmente
ror %s0 %d0 0ou seja, ele rotaciona 0 bits para a direita o registro 0 e armazena o resultado no registro 0. essencialmente, nao faz nada.
e existe algum suporte a operacoes mais elaboradas, como loops, call/return, etc. a vantagem de vc projetar e entender como funciona, eh que vc pode alterar e modificar a vontade. a desvantagem sao as ferramentas: tenho apenas um asm primitivo no momento.