Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++

Processor for MAXII

Honored Contributor II



I know how this is the NIOS forum and such, but NIOSII (or NIOSI for that matter) will not support the upcoming MAXII family. I have been working on a minimal 8 it processor for MAXII, but as I am mainly a hardware person the best I can do is an assembler for it and not a 'C' compiler. 


As this is really just a pet project it's all just a bit of fun, but if there is interest I will test more fully and get some code examples and develop a low-cost board for development. It would be nice if someone would port the gnu 'C' compiler to run with it (I can morph some of the instructions if necessary to make it a better fit) 


I looked at making it emulate NIOSII instructions, but then it defeated the purpose of being small (no offence) - currently the processor + UART + memory interface is 490LE push-button with a web-edition licence in a EPM1270 device and fmax 34Mhz. 


for those interested the instruction set is ... 


0000 00rr ldri n r <= n 

0000 01rr ldra r <= a 

0000 10rr ldar a <= r 

0000 1100 ldax a <= mem(x,y) 

0000 1101 stax mem(x,y) <= a 


0000 1110 incx (x,y) <= (x,y) + 1 

0000 1111 decx (x,y) <= (x,y) - 1 


0001 00rr pshr 

0001 01rr pulr 


0010 0000 sec 

0010 0001 clc 

0010 0010 sei 

0010 0011 cli 

0010 0100 ror 

0010 0101 rol 

0010 0110 shr 

0010 0111 shl 

0010 1000 pshp 

0010 1001 pulp 


01cc c000 sjpr n if c true then pc <= pc + sext(n) else pc <= pc + 2 

01cc c001 jpr nn if c true then pc <= pc + nn else pc <= pc + 3 

01cc c010 jrs nn if c true then push(pc), sp++, pc <= pc + nn else pc <= pc + 3 

01cc c011 retc 


1aaa 00rr alui n a <= alu(a,n) 

1aaa 01rr alur a <= alu(a,r) 

1aaa 10rr alux a <= alu(a,mem(x,y)) 


aaa ccc 

000 add c 

001 adc nc 

010 sub z 

011 sbc nz 

100 and i 

101 or ni 

110 xor alw 

111 cmp alw 





0 Kudos
3 Replies
Honored Contributor II

Cool (I&#39;m doing a similar project but I&#39;m not sure if I&#39;m just going to extend NIOS II or do mine from scratch like you did). 


In your case you should stick ASM code (you want to keep memory down as small as possible I&#39;m assumming and that won&#39;t 

happen if compiled from C). 


I&#39;d help you out with the compiler but I&#39;m a hardware guy too so I just know how to program C, making a compiler would 

probably blow my mind hehe. 


0 Kudos
Honored Contributor II

If I&#39;m not mistaken our local Altera guys said NIOS1 or 2 could not work with MAXII because they don&#39;t have the right kind of memory (if any at all). We were told that the MAXII parts are really Cyclone parts with an internal config memory device. What happened to the Cyclone memory? We suggested to them that there is a market out there for a small processor that could fit in the MAXII parts. Looks like this post agrees with us. They should create a MAXII part that has a reasonable amount of internal memory. This would be a great solution for many! 


0 Kudos
Honored Contributor II

What he means is that he&#39;s making his own core, and trying to match it up to NIOS as much as possible.

0 Kudos