Forum Discussion

TomCarpenter's avatar
TomCarpenter
Icon for Occasional Contributor rankOccasional Contributor
3 years ago
Solved

Bus LVDS on Arria 10 with Hardware Deserialiser

I'm trying to implement Bus-LVDS to communicate between a Cyclone IV and an Arria 10 device. For the Cyclone IV, I use the altlvds cores which are software serialisers, so no issue there.

For the Arria 10 device, there is no software SERDES IP available from Intel. Because the differential IO buffers don't support output enables, I've had to implement a software serialiser for transmit, using a combination of a DDIO block, and an Psuedo-Differential transmit buffer, with SSTL1.8V II as the IO standard.

For receive I would like to use the hardware DPA derialiser block to improve the receive timing margins. For this I am using an instance of the altera_lvds core. When the receive LVDS core is used alone, everything works fine. However if I try and connect the same pad to the Psuedo-Diff transmitter, Quartus will get part way through the fitting stage and then pop up with a window saying "Quartus Crashed" with the following message:

Problem Details
Error:
Internal Error: Sub-system: U2B2_CDB, File: /quartus/db/u2b2/u2b2_nf_io48tile_config_creator_module.cpp, Line: 10552
An io_lvdsio_buf_x2 cannot connect an to IO_SERDES_DPA if it connects to an additional primitives
Processors in use: 2
Stack Trace:
0x12ca01: U2B2_NF_IO48TILE_CONFIG_CREATOR_MODULE::populate_iobuf_children_hierarchy + 0xfd1 (db_u2b2_cdb)
0x12af50: U2B2_NF_IO48TILE_CONFIG_CREATOR_MODULE::populate_config + 0x7c0 (db_u2b2_cdb)
0xdeae4: u2b2_populate_config_fn + 0x174 (db_u2b2_core)
0x4076: PUT_SPMD_JOB_VOID_PTR_IMPL::thread_loop + 0x146 (ccl_put)
0x3f16: PUT_SPMD_JOB_VOID_PTR_IMPL::thread_fn + 0x46 (ccl_put)
0x1484e: msg_thread_wrapper + 0x6e (CCL_MSG)
0x18210: mem_thread_wrapper + 0x70 (ccl_mem)
0x2854: thr_thread_begin + 0xa4 (ccl_thr)
0x17343: BaseThreadInitThunk + 0x13 (KERNEL32)
0x526b0: RtlUserThreadStart + 0x20 (ntdll)

End-trace

Executable: quartus
Comment:
None

System Information
Platform: windows64
OS name: Windows 10
OS version: 10.0

Quartus Prime Information
Address bits: 64
Version: 22.1std.2
Build: 922
Edition: Standard Edition

I'm trying to understand whether this is a hardware limitation, or a bug in the Quartus software.

If a bug in quartus, is there a workaround to implement this?

If a hardware limitation, can anyone elighten me as to why this would be - the receive and transmit are surely separate enties, just sharing the same IO pad.

  • FvM's avatar
    FvM
    3 years ago
    SERDES IP doesn't seem to be able to connect other IO-standards than plain LVDS RX respectively TX. It's apparently necessary to write your own serdes logic in these cases. No problem as such if you don't run near device speed limits, but surely annoying.

5 Replies

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

    Hi,


    Is it possible to share the .qar file of this project? If yes, please let me know as I will initiate the email for you to send the file.

    I will need to reproduce the error from my side to further check on this.


    Regards,

    Aqid


    • FvM's avatar
      FvM
      Icon for Super Contributor rankSuper Contributor
      SERDES IP doesn't seem to be able to connect other IO-standards than plain LVDS RX respectively TX. It's apparently necessary to write your own serdes logic in these cases. No problem as such if you don't run near device speed limits, but surely annoying.
      • TomCarpenter's avatar
        TomCarpenter
        Icon for Occasional Contributor rankOccasional Contributor

        Yeah, I came to that conclusion.

        Ended up rolling out my own soft-SERDES core using half-rate DDIO blocks. Managed to get it to meet timing at the 720Mbps we require. Couple that with some creative dynamic phase shifting of the PLL output clocks should hopefully allow dynamic phase alignment of the receive assuming it works once I get into hardware testing.

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

    As we do not receive any response from you on the previous question/reply/answer that we have provided, please login to ‘https://supporttickets.intel.com’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions.