- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We are trying to program an Agilex 3 device over the AVST8 interface, implemented through a CPU using SPI and bit-banging.
Setup (see picture below):
Data is shifted into a serial-to-parallel converter via SPI.
AVST_CLK is generated from the SPI CS signal.
AVST_VALID and AVST_READY are controlled by GPIOs.
With this setup, we can mimic the passive serial programming approach used on Arria FPGAs.
What works:
Programming and testing over JTAG works fine.
The FPGA design itself runs correctly.
What does not work:
During AVST8 programming, AVST_READY goes low after ~8210 bytes and never returns high.
Programming sequence we follow:
CPU initializes pins: nCONFIG=0, AVST_VALID=0
CPU sets nCONFIG=1
FPGA pulls nSTATUS=0
CPU sets nCONFIG=0
FPGA sets nSTATUS=1
CPU provides some clock cycles (~81 cycles) on AVST_CLK (since AVST_READY is low)
FPGA sets AVST_READY=1
CPU sets AVST_VALID=1 and streams configuration data
After 8210 cycles, FPGA sets AVST_READY=0
CPU sets AVST_VALID=0 and continues clocking
At this point, AVST_READY never goes high again.
What we observed:
If we deliberately corrupt the configuration data, nSTATUS goes low after a few cycles — as expected.
This suggests that the FPGA is checking data integrity, but something prevents AVST_READY from recovering.
Our bit-banged AVST_CLK frequency is only about 60 kHz. Could this low frequency be the root cause?
Question:
Why does AVST_READY stay low after 8210 bytes? Is the slow clock (60 kHz) causing the issue, or are we missing something in the programming sequence?
Thanks in advance for your support!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I noticed that the nStatus drops to a low value for a short time, which indicates that something is wrong with the data. I fixed the problem and the programming is working.
Best regards,
Samuel
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
May I know are you using PFL IP or custom logic for AVST config?
Thanks,
Best regards,
Alan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Can you try higher frequency for AVST_CLK? 60kHz is too slow. Can start from 1MHz.
You can also keep AVST_VALID -> high during streaming, even after AVST_READY goes low.
Only send the idle clock cycles after AVST_READY goes low, with AVST_VALID = 0.
Please check signal condition with oscilloscope, is it clean or too noisy.
regards,
Farabi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Farabi,
>60kHz is too slow
Is there a time out or something?
Unfortunately, we cannot increase the speed without further effort. We first need to implement a Linux driver to optimize access to the SPI interface and the pins. I will get back to you in a few weeks. If you have any further ideas, please let me know.
Best regards,
Samuel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I noticed that the nStatus drops to a low value for a short time, which indicates that something is wrong with the data. I fixed the problem and the programming is working.
Best regards,
Samuel

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page