Forum Discussion
Altera_Forum
Honored Contributor
18 years agoAlt_asmi
Hi,
I have a CyCIII connectet to a serial configuration device. I´m able to configure the CYC III with active serial. Now I want to access the Flash with the ALT_ASMI_Parallel_Interface. I pulled the signal read_sid to HIgh... and about 40 clock cycs later the busy signal (ouptput) goes to low. The problem is that the epcs_id (8 bit output) is allways 0xFF. What could there be wrong? clk_in frequency of alt_asmi is 12.5Mhz from a PLL. Thanks Chris16 Replies
- Altera_Forum
Honored Contributor
They had me modify the file epcs_asmi.v lines as follows:
original code: initial ncs_reg = 0; // synopsys translate_on always @ ( negedge clkin_wire or posedge end_ophdly) if (end_ophdly == 1'b1) ncs_reg <= 1'b0; else if (wire_ncs_reg_ena == 1'b1) ncs_reg <= 1'b1; modify it to: initial ncs_reg =1; // synopsys translate_on always @ ( negedge clkin_wire or posedge end_ophdly) if (end_ophdly == 1'b1) ncs_reg <= 1'b1; else if (wire_ncs_reg_ena == 1'b1) ncs_reg <= 1'b0; Of course YMMV. But I'd be really surprised if CycII had the same issue, that's a relatively mature product. But then things get broken with every new release so I guess it may not be that hard to beleive. - Altera_Forum
Honored Contributor
I use: 1. Quartus 8 + SP1 2. Cyclone III 3. EPCS64 4. Verilog If using the mega wizard as is, and it have major bug, the CSn line to the EPCS64 is active hi and should be active low. I found manual correction in altera forum http://www.alteraforum.com/forum/archive/index.php?t-1141.html (http://www.alteraforum.com/forum/archive/index.php?t-1141.html) johns April 9th, 2008, 10:50 AM They had me modify the file epcs_asmi.v lines as follows: original code: initial ncs_reg = 0; // synopsys translate_on always @ ( negedge clkin_wire or posedge end_ophdly) if (end_ophdly == 1'b1) ncs_reg <= 1'b0; else if (wire_ncs_reg_ena == 1'b1) ncs_reg <= 1'b1; modify it to: initial ncs_reg =1; // synopsys translate_on always @ ( negedge clkin_wire or posedge end_ophdly) if (end_ophdly == 1'b1) ncs_reg <= 1'b1; else if (wire_ncs_reg_ena == 1'b1) ncs_reg <= 1'b0; Manually change the verilog file This fix the issue, but still one major issue: The pin DCLK to EPCS64 is always active; this core should turn ON the clock only after try to access to the EPCS64 and not all the time (power issue, EMI/RFI issues) Please send me quick correction to this issue as well - Altera_Forum
Honored Contributor
This issue has been fixed in QII 9.0.
But the manual does not document that "Device and Pin Options" -> "Dual-Purpose pins" must all be set to "Use as regular I/O" otherwise the communication to the EPCS is not established. That is omission in the manual is IMHO a bug. - Altera_Forum
Honored Contributor
When I look at the "Device and Pin Options" dialog under "Dual-Purpose pins" the only possibility allowed in the drop down box for the ADS0, nCS0 pins is "As input tri-stated" there is no other choice. For the pin nCEO there are two choices listed "Use as programming pin" and "Use as regular I/O". I will try to see if it works with this setting for ADS0 and nCS0. This is for an EP2C8 with an EPCS4 under Quartus II v9.0.
- Altera_Forum
Honored Contributor
--- Quote Start --- the only possibility allowed in the drop down box for the ADS0, nCS0 pins is "As input tri-stated" --- Quote End --- Yes, this seems to be a Quartus "special" with Cyclone II. The Altera SFL MegaFunction is however working correctly with exactly this setting, obviously using ASDO, NCSO and DCLK as output in user mode. So I would expect altasmi to work as well, despite of this setting. Another option is to set PS configuration in Quartus, but actually configure AS with MSEL. Then you get free choose of dual-purpose pin configuration again. I didn't try with Cyclone II, but I needed this workaround with Cyclone III due to some oddities of previous Quartus versions. - Altera_Forum
Honored Contributor
I can confirm that the Cyclone II can read the EPSC4 using altasmi_parallel with ADS0 and nCS0 set to "As input tri-stated" and nCE0 set to "use as regular I/O".