Forum Discussion

BrianHG's avatar
BrianHG
Icon for Occasional Contributor rankOccasional Contributor
4 years ago

Differential DQS MAX10 assignment using DIY altddio_bidir.

Hello, I'm trying to custom drive the DQS pins on a MAX10 FPGA setting their IO standard to all the possible compatible differential IO standards, driving the IO using the altddio_bidir.

Here is the error I get:

Error (176202): The differential I/O standard Differential 1.5-V SSTL cannot be used on the pin DDR3_DQS_p[0], because the specified pin uses a tri-stated output buffer.

Same if I use LVDS_E_3R.

I had no problem with the 'DDR3_CK' differential since it is an output only, but, the DQS needs to be bidirectional.

I can fake it by feeding the altddio_bidir an N&P signal and run the pins in single ended mode, however, when receiving data, the DQS will loose the precision gained by having a differential input buffer.

How can I work around this?

Altera's ALTDQS does a few things behind a hidden door, not to mention some weird timing setup and phase delay not under my strict .sdc control. I have yet to try it as I want the entire DDR bus to appear common where I control the my own PLL's read/write/dqs clocks.

Also, wouldn't specifying the DQS pins into differential still generate the same fitter error?

I'm using a MAX10 and using the official DQS & DQS(n) IO pins.

7 Replies

  • BrianHG's avatar
    BrianHG
    Icon for Occasional Contributor rankOccasional Contributor

    I've attempted the 'dummy' software cross feeding a 1 and 0 to the data in H & L of the altddio_bidir to generate 2 outputs, a p&n IO pad. I now get this new error instead:

    Error (169008): Can't turn on open-drain option for differential I/O pin DDR3_DQS_n[0]

    I am not sure if this is any closer, but at least the DDR3_DQS_p[0] pins are still labeled as differential and they made it through.

    Oops, the IO wasn't assigned. I still get the same tri-state error.

    • BrianHG's avatar
      BrianHG
      Icon for Occasional Contributor rankOccasional Contributor

      Ok, I tried using 'altiobuf_bidir' which has both differential and bidirectional capability, yet Quartus says:

      Error (176202): The differential I/O standard Differential 1.5-V SSTL cannot be used on the pin DDR3_DQS_p[0], because the specified pin uses a tri-stated output buffer.

      Even worse, I cannot simulate in ModelSim when using the 'altiobuf_bidir'. It is not a recognized function.

      It would seem Altera's Mem-phy seems to access the DQS pins as bidirectional differential I/O standard Differential 1.5-V SSTL fine, but I am at a loss as how to do so directly.

      Now I know I can use something like altdq_dqs2, however, it is not compatible with Cyclone IV/III, or others. Their older altdqs doesn't support differential and wont work on newer cyclones and max 10 fpgas.

      • yoichiK_altera's avatar
        yoichiK_altera
        Icon for Contributor rankContributor

        Hi

        Which version of Quartus software are you using to implement altddio_bidir with MAX10 device ?

        As far as I see I do not find the altddio_bidir in IP Catalog when I set the device as MAX10.