Situation: configuration serial flash chip (EPCS16) contains several images, let's say at sector 0x00 (factory), then at sector 0x08 (app1), and at sector 0x10 (app2). Area starting sector 0x18 is all 0xFF (empty - erased).
My design re-configures from one image to another without problems, I can switch from factory to app1, to app2 from app1 through factory.
But I encountered weird issue recently.
If I ever try to configure from 0x18 (empty - no image), I end up at factory image with status 0x08 - it is correct status as there was CRC error. Sometimes I get 0x04 though ("System reloads factory configuration image upon nSTATUS assertion in application configuration image").
But then reconfiguration stops working. I can not reconfigure from factory image neither to app1 nor to app2 image any more - and I see status 0x01 "System reloads factory configuration image upon core nCONFIG assertion". I am 100% sure nConfig is not asserted, as it is just pulled up through 10k resistor. The only way to clear this condition is to power cycle the FPGA.
Note that until I try configuring from wrong location reconfigurations work properly, thus I seem to miss some small but important thing here.
Here are technical details:
What could be wrong here? In my design there could be legitimate cases when user tries to configure FPGA with wrong image, and I need a way to ensure FPGA recovers properly after this operation.
Hi Eugeny Brychkov,
When configuration error occurs, the "nStatus" signal will be pulled low and thus no configuration can be done after that. To enable configuration, you will need to manually pulse "nCONFIG" low for at least 500 ns to restart configuration.
However, you may enable the Auto-restart configuration after error option (available in the Quartus II software from the General tab of the Device and Pin Options dialog box), so that the Cyclone III device family releases nSTATUS after a reset time-out period (a maximum of 230 s), and this can retries configuration.