Forum Discussion

linhz0hz's avatar
linhz0hz
Icon for New Contributor rankNew Contributor
10 days ago

IO speed limit while implementing high resolution PWM on Cyclone 10

I would like to implement high resolution PWM on a Cyclone 10 LP.

One simple approach I have is running the IO at double data rate for a high possible switching frequency. However as the single ended IOs (3.3V LVTTL for example) cannot switch that fast, when I compiled the design I got a [limit due to minimum port rate restriction (tmin)] with original Fmax=425MHz restricted to 223MHz. But for my application I know I can control the minimum pulse width in software. So my question is where does the IO speed limit actually apply? Does it apply in the IO buffer or does it apply in the double data rate register? In the former case that should not create a problem because I am not switching every cycle, I only want to tune the pulse width with fine steps. In the later case it would. I want to ask this for both input and output, as I might want to measure the realized switching pattern as well. 

I am aware that another possible way is to add a delay to the IO. However correct me if I am wrong, I don't see how I can dynamically choose the IO delay in any of the IP / primitives. You can dynamically change the phase of the PLL I guess, but I am not sure how fast does it stabilize at the new phase. Also If I use multiple output in my design then I would need a dedicated clock output for each output.

 

3 Replies

  • FvM's avatar
    FvM
    Icon for Super Contributor rankSuper Contributor

    Hi,

    timing analysis doesn't know about the actual waveform you are generating DDR output, there should be no problem for HR PWM. Minimal pulse width can be an issue, but typically it's limited by connected gate driver rather than IO standard.

    Rearding dynamic phase shift feature, there's no stabilization time as long as you only manipulate output phase (C counter). Maximal variation speed is about 1 phasestep/50 ns per PLL.

    Regards
    Frank

    • linhz0hz's avatar
      linhz0hz
      Icon for New Contributor rankNew Contributor

      Thanks for the response. It seems fine for single ended output, I got issue in timing analysis but the entire compilation finished nevertheless. However if I use differential signaling (for example lvds) I got 

      Error (176060): The transmitter driving I/O pin pwm_out at data rate 800 Mbps exceeds the maximum allowed data rate of 640 Mbps for LVDS output 

      In the fitter stage and cannot finish the compilation. As I said I am oversampling the signal so the actual switching rate is much lower. Is there a way to suppress this and keep compilation going?

      Thanks 

    • AqidAyman_Altera's avatar
      AqidAyman_Altera
      Icon for Regular Contributor rankRegular Contributor

      Hello,


      Thanks, Frank, for the answer provided. 

       

      If there are no further inquiries during this period, I will step back and allow the community to assist with any future follow-up questions.

      Best regards,
      Altera Technical Support