0
\$\begingroup\$

I'm designing a pcb with an Altera MAX10 (10M02) CPLD used to do, amongst other things, bus arbitration between several memory chips (one /CS per chip). All the memory chip are on same bus so only one /CS (and /OE) shall be toggled low at same time to avoid bus conflict.

To my understanding, the MAX10 CPLD can initialize itself within 2ms at power on (based on uncompressed, un-encrypted binary, numbers I found in a datasheet).

I wanted to know what is the state of the I/O when CPLD is initializing. Are they HighZ? Low? High? Or is the state unpredictable? Some more notes:

  • I use verilog "assign" to set all the critical I/O's to 1 by default (assuming registers are 0 after initialisation). Eg: "assign outputname= registername?1'b0 : 1'b1;"
  • I've set all the I/O's to 3.3LVCMOS because everything is interfaced with 3.3V devices.
  • The rise/fall timing requires to be less than 10ns.

Also, can someone confirm the MAX10 (10M02) CPLD has all registers cleared after initialisation? (I don't use any reset pin). I can't find any details about that on the datasheets.

Thanks for your answer / suggestions.

Best Regards,

\$\endgroup\$

2 Answers 2

0
\$\begingroup\$

As @Claudio states, the I/O pins will all be high-z during configuration.

In terms of reset, during configuration, all of the registers should be initialised to whatever default value was specified when the design was synthesized.

However I would not rely on this as your only source of reset. When you first power on the device, the state of any clock source or input source that you are using cannot be guaranteed - the clock for example may be an oscillator with some start-up time during which it may be unstable. As a result you may end up with weird metastability issues if your design has no other reset source.

If you do not have any external reset, the simplest solution would be a basic reset synchroniser chain of a few registers. The registers would be initialised to zero, and the input to the first would be a logic 1. This means that the output of the chain would hold everything in reset for a few clock cycles (as many as in the chain) after power on giving time for external I/O connections to settle down.

I would still however consider your design to see if there are any conditions - e.g. errors in control/data paths - that you consider to be fatal and use that as a secondary source to reset the system if something goes terribly wrong.

\$\endgroup\$
4
  • \$\begingroup\$ I did assume registers are 0 after initialisation (at least MAXII seems to behave this way). I could have master reset pin that resets everything but that reduce by almost 25% the performance (100mhz vs 130mhz max clock). Currently, if reset pin is set, I ignore any new bus request but I do not reset any register to say so. Not sure if that makes sense. \$\endgroup\$
    – ggadde29
    Commented Feb 4, 2017 at 13:52
  • \$\begingroup\$ I do not also understand this sentence. Did you synchronize the reset signals? \$\endgroup\$ Commented Feb 4, 2017 at 14:09
  • \$\begingroup\$ The whole design is driven by a single clock input event. If any reset, it would be synchronous to that clock. But like said in previous comment, I don't use the reset pin to reset registers to 0 (because it reduces performance and I assume they are 0 after initialisation done). I use the reset pin to ignore new bus requests. Hope it's clearer now. Thanks. \$\endgroup\$
    – ggadde29
    Commented Feb 4, 2017 at 14:18
  • \$\begingroup\$ @ggadde29 the reset pin itself doesn't have to be synchronous, you simply use a 2-flop synchroniser internally to resynchronise the deassertion to the clock. \$\endgroup\$ Commented Feb 4, 2017 at 14:26
1
\$\begingroup\$

The I/O during configuration are inputs. Refer to the MAX I/O User Guide, page 2-13.

I really don't understand your sentence, about you not using a reset. I really don't think it is a good practice not to use reset in a digital design.

\$\endgroup\$
1
  • \$\begingroup\$ Ok thanks. I can then put a pull up resistor on the /CS outputs to ensure no issue during initialisation. \$\endgroup\$
    – ggadde29
    Commented Feb 4, 2017 at 13:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.