cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer
Observer
429 Views
Registered: ‎01-26-2020

differential buffer implementation

Jump to solution

Hello there

 

I have multiple differential input pairs (data and clock) and I am trying to use IBUFDS buffer to convert them into single-ended signals.

My question is:

Is the IBUFDS buffer exist or should I build it from scratch? or basically, how can I use it in my VHDL code?

Also the same question about other buffers named: BUFIO and BUFR for the clock signal?

I found two sources listed below but I couldn't what I want and I tried to build the buffer using the second source but I thought I should ask first.

 

https://www.xilinx.com/support/documentation/user_guides/ug471_7Series_SelectIO.pdf

https://www.xilinx.com/support/documentation/sw_manuals/xilinx13_4/7series_hdl.pdf

 

Thank you

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Moderator
Moderator
278 Views
Registered: ‎01-16-2013

Re: differential buffer implementation

Jump to solution

@ashura12 

 

Yes, your understanding is correct. The instantiation code from document can also found in the Language template option shared in my above post.

 

--Syed

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

Did you check our new quick reference timing closure guide (UG1292)?
---------------------------------------------------------------------------------------------

View solution in original post

8 Replies
Highlighted
Xilinx Employee
Xilinx Employee
409 Views
Registered: ‎05-22-2018

Re: differential buffer implementation

Jump to solution

Hi @ashura12 ,

You can use attribute clock_buffer_type to control insertion of type of buffer, check page no.164 of below link:

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug912-vivado-properties.pdf

Thanks,

Raj

0 Kudos
Highlighted
Observer
Observer
398 Views
Registered: ‎01-26-2020

Re: differential buffer implementation

Jump to solution

Hi @rshekhaw 

I understand from your answer that using clock_buffer_type will decide what type of buffer the signal will have. but what about the differential buffer? how can I convert differential input into single-ended?

Thank you

0 Kudos
Highlighted
Explorer
Explorer
393 Views
Registered: ‎12-05-2016

Re: differential buffer implementation

Jump to solution

Hi,

please check the link given below.

https://forums.xilinx.com/t5/Synthesis/Differential-buffer-insertion-in-XST-or-VHDL/td-p/460932

Regards,

Reshma 

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

0 Kudos
Highlighted
Moderator
Moderator
384 Views
Registered: ‎01-16-2013

Re: differential buffer implementation

Jump to solution

@ashura12 

 

Which device are you using? You can find all the Xilinx buffer which can be instantiated in Language template in both verilog and VHDL. You can copy them and use in the RTL code. 

image.png

 

image.png

 

For clock buffer related information check the device clocking resource used guide. I assume you are using 7 series device so check below UG:

https://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf#page=24 

 

--SYed

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

Did you check our new quick reference timing closure guide (UG1292)?
---------------------------------------------------------------------------------------------
Xilinx Employee
Xilinx Employee
379 Views
Registered: ‎05-22-2018

Re: differential buffer implementation

Jump to solution

Hi @ashura12 ,

For that i guess you need to use IBUFDS/OBUFDS for that.

Vivado will not infer IBUFDS/OBUFDS. They have to be manually instantiated in the HDL.

Please check page 354 of UG953 (https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug953-vivado-7series-libraries.pdf)for 7 series and page 322 of UG974  (https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug974-vivado-ultrascale-libraries.pdf)for Ultrascale regarding the same for IBUFDS.

Thanks,

Raj

Highlighted
Observer
Observer
286 Views
Registered: ‎01-26-2020

Re: differential buffer implementation

Jump to solution

@rshekhaw @syedz @reshmaakhil 

Thank you for your replays

From what I understand, I should first write the entity with the differential input and the single-ended output ports and then in the architecture, I should use the code in the document below and map my ports to it to derive the output.

Can you correct me if I am wrong?

Te code in page 355

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug953-vivado-7series-libraries.pdf

0 Kudos
Highlighted
Moderator
Moderator
279 Views
Registered: ‎01-16-2013

Re: differential buffer implementation

Jump to solution

@ashura12 

 

Yes, your understanding is correct. The instantiation code from document can also found in the Language template option shared in my above post.

 

--Syed

---------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.

Did you check our new quick reference timing closure guide (UG1292)?
---------------------------------------------------------------------------------------------

View solution in original post

Highlighted
Teacher
Teacher
264 Views
Registered: ‎07-09-2009

Re: differential buffer implementation

Jump to solution
If your just after differential inputs with data / clock,. I'd suggest using the IO wizard, as this takes care of all the clocking and buffering for you
<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos