Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
21 years ago

Processor for MAXII

Hi,

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

Regards,

Steve.

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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.

    G&#39;luck
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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!

    Rick
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

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