Forum Discussion

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

reset & configuration revisited

I have some custom boards (cyclone, NiosIIe 33Mhz) that exhibits strange behavior on reset (either full POR OR soft reset (DEV_CLRn)). The behavior is that the Nios sometimes executes the code at the reset address as it should, but sometimes executes code located elsewhere in memory. The problem was not obvious until multiple applications were loaded in flash. Power and clocks seem OK. All memory tests so far have passed, and once an application is running, the other apps can also be run (by jumping directly) and they all appear stable. For testing, I have modified "hello_world#1","#2","#3" builds loaded at different locations in flash. They all have have the bootstrap loader and load to the same place in SRAM.

1) Looking at the configuration signals on the EPCS1S (AS) device, I see a couple of strange things. nCS is asserted 3 times during configuration, two short pulses and one long one. The cyclone data sheet shows one long assertion. Also, DATA shows some slow rise ramping during the first two nCS assertions, but is clean after that. DCLK is clean but is active during some the data ramping where the data could not possibly be valid. Both CONF_DONE and nSTATUS behave as if all went OK. Should I be concerned about these signals, or is CONF_DONE and nSTATUS enough?

2) I notice that Quartus has an option to make DEV_CLRn a global reset. The default is no. The Nios is being reset without this enabled, but is it just the core? When would I want to enable this?

3) There are several posts about the reset signal, and using the PLL to delay reset. I do see a bunch of narrow pulses/edges on my reset (DEV_CLRn) which could be the cause of my problem. I am looking into fixing this first. The cyclone data sheet lists a max rise time for inputs of 40ns. Does this apply to DEV_CLRn as well? Is there some additional logic on this signal to make it more robust or is it just like any other input?

thanks

13 Replies

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

    Good idea. Both settings seem to be supported on cyclone parts. Do you know if there is a way to apply these settings globally if I wanted to try it out on the entire chip?

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

    Probably through the Assignment editor (I think you may have to do this setting to individual banks though).

    Good idea Respun, you may have saved him a Re-spin lol
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    As an update I did try the slew rate and current strength options.

    Setting slew rate to Slow for my flash CS made no discernable difference to the rise time of this signal. Perhaps this is the default?

    Setting current strength to minimum did reduce xtalk considerably.

    Rise time on the troublemaker went from < 3ns to about 7ns.

    I&#39;d like to know where I look to see what the global defaults are, or if there is a automatic pin by pin assignment based on timing constraints. I assume most would want to have the slowest edge that still provides some timing margin.