Forum Discussion

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

Why does an output only 8-bit wide PIO use/needs 16 memory locations (0x2010-0x201F)?

Hi all,

I'm new to the Nios/Qsys/Eclipse. I've used Quartus software before but never with Nios. I'm using a Nios Gen2 with a MAX10 (BeMicroMAX10). The free version of Nios.

The base address of the PIO is for the data. Then there is outset and outclear. That's 3 locations. So how come Qsys shows an address span of 16?

Thanks

6 Replies

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

    Yes. Table 11-2 shows offset 0 thru 5. That's 6 addresses? Why the other 9? Thanks

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

    In one case there are 6 x 32bit registers. So that means in powers of two there are 8 x 32bit = 32 bytes.

    But if you have don't have the extended registers enabled, then there are 3 x 32bit registers - as powers of two that is 4 x 32bit = 16 bytes.

    Address spans are shown in bytes (even if you are using Word Addressing).
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I think the minimum width is 16 bytes.

    You should also make your slave 32bits wide - return 0 to reads for the top 24 bits.

    The Nios acceses are 32bit (with appropriate byte enables for writes) and logic gets added to generate 4 cycles to an 8bit slave.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    You should also make your slave 32bits wide - return 0 to reads for the top 24 bits.

    The Nios acceses are 32bit (with appropriate byte enables for writes) and logic gets added to generate 4 cycles to an 8bit slave.

    --- Quote End ---

    Do You suggest to make all PIO registers ( connected to NIOS II as slaves in QSys ) 32-bits wide even though only several bits are used?

    What C type variable should then be used?

    Apparently, unsigned int ?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    You can make the PIO any width you like. The Avalon-MM slave interface of the PIO core will always be 32bit wide and unused bits will read as 0.