Forum Discussion

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

Nios2 Flash Programmer in Quartus II v11 sp1

I've been using Quartus 8.1 and 9 extensively over the last 4 years and after a bit of headache managed to persuade nios2-flash-programmer to work to program my flash memory. I've recently upgraded to v11 and they've changed the GUI for the flash programmer, but even in command line mode it doesn't recognise my CFI flash. It's the same board that worked with v9 of the nios2-studio programmer. What have they done? I always used to have to manually put in --width=8 because it couldn't detect that my flash was width 8 but even if I put this in on the command line now it doesn't work.

Any clues greatly appreciated.

3 Replies

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

    Ok, I've done some more digging, and it would appear to be a problem with Qsys and tristate bridges.

    The original v9 design in SOPC builder was imported into Qsys and "upgraded" to Qsys. This did various things, including changing to a tri state conduit bridge and a tri state conduit pin sharer. The Pin sharer is set up correctly, and shows 21 output address lines, 8 bidirectional data lines and 4 output control signals (ce_n to sram and flash, and oe_n and we_n). Although at this point the only bidirectional signals are the data pins, when it generates the Qsys system the top level entity has bidirectional pins for address, data, ce_n, oe_n and we_n. It also decides to make them all vectors but that seemed ok.

    Having checked the fitter messages more carefully, it implies that the output enable for ce_n, oe_n and we_n are always disabled. But I never put those in, so how can I persuade Qsys to enable them? I'm starting to pull my hair out here!

    Any clues gratefully received.

    Cheers,

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

    It comes from using the VHDL Example template from Qsys - this has the ce, oe, we signals as vectors(0..0) but they aren't vectors in the Verilog module it generates. This means the two sets of signals don't connect. If you change the component declaration in your top-level file to have std_logic, rather than std_logic_vector then it all hooks up properly.

    I found the answer somewhere else on this forum, but can't remember exactly where.