Got my clear on last Friday, I measure xclk at @10...
# clear
v
Got my clear on last Friday, I measure xclk at @10MHz and ~@48MHz at IO36. The management SoC seems to work OK, I played with the PLL and measure the changes on xclk successful, but I were unable to test any example that from the CLEAR git, nor any example of the SOFA branch of the synth tools, nor any simple counter (trying to infer clk auto-magically as stated in the Readme). Does anyone have a minimal example that work on the FPGA side? I configure the FPGA with ftdi_fpga.py, does it have a difference if I program the FPGA with process_bit_stream?
l
Hi, please see my reply in the previous post.
m
And my results 🙂
Regarding your last question bit process_bit_stream() is the way the examples program the FPGA bit from the management SoC (bitstream converted to a char array C header file). It should be possible to program the FPGA externally/directly as well, but I've not tried that approach yet.
BTW and FWIW I get a solid 50Mhz (not 48Mhz) on the FPGA/Wishboard clock a.k.a IO pin 36. The software powered FPGA Programing Clock (active while programming only) runs at 1.5Khz with a 33% on duty cycle; pulsing ccff_head (IO pin 34) on as required per the header char encoded bitstream sequence. Total programming time is just under 26 seconds. These results came from a logic analyzer sampling at a 1.65 volt threshold at 500mhz.
v
In fact, I thought that and_2 did not work because it took a really long time to get the FPGA programmed (~45 seconds). Luckily, with some adjustments, I got it programmed in ~3 seconds. BTW, what PLL configuration did you use to put it @50MHz? My management SoC stopped working with more than 25MHz.
m
I didn't do anything special that I'm aware of... I believe the "onboard" FPGA clock is acutally just the caravel management SoC wishbone bus clock just being fed in (running at 5x the caravel system clock); the rest of the wishbone bus lines are not connected to anything internally so there's no actual other contention/purpose for it. There are no hard IP PLL blocks in the FPGA implementation that I'm aware of.
v
The PLL is in the management SoC, but trying to put over 25MHz don't work for me, below that I can change the clock without problem
m
I'll have to look through the provided housekeeping subroutines, but my LA is convinced that the FPGA clock is running at 50MHz... maybe some reconfig of the wishbone bus is required.
hmm... I started counting pulses and it appear the fabric clock has quite large fluctuations over long periods... in seconds decode I'm seeing a range up to 2ns over or under per pulse.
l
For the PLL make sure you are using a possible internal frequency range: https://github.com/efabless/caravel/pull/537
v
I got the FPGA to load in 1.5 seconds through the integrated UART, but the speed limits come on because apparently there is no configurable UART divisor.
🙌 1