How SERDES works in an FPGA, high speed serial TX/RX for beginners

  Рет қаралды 43,329

nandland

nandland

Күн бұрын

Пікірлер: 62
@brucetv-tube
@brucetv-tube 4 жыл бұрын
Nice to see you back dude. Missed your content of late.
@stok3si3
@stok3si3 4 жыл бұрын
Great video! Personally I really like that you're delving into deeper areas on the channel.
@timwatson682
@timwatson682 4 жыл бұрын
Excellent to see you back.. have enjoyed the videos so far, and you have cleared one or two things up for me already in other videos! - just one small observation though, in the spirit of clarity - I have been working on digital systems for decades, and I feel you're confusing people about parallel and serial. Parallel is just that - parallel. More than one bit at the same time. Serial is one bit at a time. For me, I2C is serial, and I beleive PCIe is actually either one or multiple serial interfaces too.. (that whole X1, x2, x4 thing..). Your intro is really about sending the clock WITH the data VS recovering the clock FROM the data. Combine clock recovery with balanced transmission and that's what allows you high speed over crappy links. That's the important thing. Nothing really to do with whether the data is serial or parallel.. Parallel isn't 'slower' - it's just harder to get the bits to line up correctly at the other end when physics starts to get annoying, so we resort to several serial links in, well, parallel. Then it's just a question of getting all the bits into the same clock domain.. (I'm not going to argue that a parallel printer lead was faster than a USB connection, but it's important not to over generalise that parallel is inherently slow.) That said - nice overview of the entertainments of high speed data transmission down a physical circuit, including the line coding necessary to prevent line bias and allow the clock recovery (did you mention clock recovery?). Being an old cynic, I would add that the main reason serial is so popular is because it's cheap to make. Hard to code, but cheap to make.. (Compare a SCSI3 cable with a USB2 cable, and you will see what I mean ;-). It feels a bit Halfway there though- Can we have the rest of the info please? There's a lot of good info about why one might use the SERDES block, but if there was anything on how, I missed it. As you said, using a SERDES block is the way to go to do HDMI, and also PCIe interfaces, and I can't be the only one that would like a more detailed overview of how to implement them. Maybe an HDMI or DVI block? Im hoping that's the next video :-) Do keep up the good work though!
@CrazyCasta
@CrazyCasta 8 ай бұрын
Yeah, what he's done is confuse asynchronous vs synchronous for parallel vs serial. Like you say, I2C is serial. Also, he hilariously suggests parallel's downside is that it's lower bandwidth. It's not, case in point, memory is one of the highest bandwidth interfaces there is and it's still serial. The problem with parallel is just the GIANT nightmare of length matching the traces which pretty much goes away with serial, even with the multiple serial interfaces.
@damny0utoobe
@damny0utoobe 4 жыл бұрын
Thanks man. I got a bad case of the SerDes and this is just what I needed.
@Nandland
@Nandland 4 жыл бұрын
Gotta get that checked out.
@DeadsupraEE3
@DeadsupraEE3 4 жыл бұрын
thank you so much. this info is so necessary. its practically in every fpga job description requirements.
@leonshen8093
@leonshen8093 4 жыл бұрын
We are waiting for some cool content about MIPI, LVDS, JESD etc which are common challenges in today's FPGA design
@asmi06
@asmi06 4 жыл бұрын
Great video as always! A couple of small nitpicks if I may: 1) technically SerDes is not the same thing as transceiver, transceiver blocks have SerDes as part of it, but SerDes'es exist as a standalone blocks too. As I'm sure you know, in Xilinx 7 series FPGAs a pair of SERDES'es (input and output) is embedded into each IO buffer cell, which allows (relatively) slow channel speed links to be implemented using regular IO pins instead of dedicated transceivers. For example, on said 7 series chips these pins are fast enough to implement HDMI protocol up to (if you overclock a clock buffer a bit) 1080p@60Hz, which is 1.45 Gbps per channel. Official specs call for up to 1.25 Gbps per link, but in practice I'm yet to see a chip that can't do 1.45 Gbps - even slowest speed grade 1 devices are capable of that. There are enough HDL projects out in the wild that demonstrate that, Digilent even officially supports a code for their 7 series boards with do support 1080p@60. And the cool thing about HDMI is that it's backwards compatible with DVI, which is incredibly simple to implement on FPGAs (literally just few screens' worth of HDL code!). 2) Nowadays LVDS usually goes over 50 Ohm single-ended/100 Ohm differential lines and thus require 100 Ohm termination resistor, not 120 Ohm. These resistors are sometimes incorporated into IO cells though (at least I know for sure for 7 series).
@kharikeaton8221
@kharikeaton8221 3 жыл бұрын
sorry to be offtopic but does anybody know of a trick to log back into an Instagram account? I somehow forgot the login password. I appreciate any tricks you can offer me.
@ephraimalonzo7835
@ephraimalonzo7835 3 жыл бұрын
@Khari Keaton instablaster =)
@kharikeaton8221
@kharikeaton8221 3 жыл бұрын
@Ephraim Alonzo Thanks so much for your reply. I got to the site on google and Im waiting for the hacking stuff atm. Takes a while so I will reply here later when my account password hopefully is recovered.
@kharikeaton8221
@kharikeaton8221 3 жыл бұрын
@Ephraim Alonzo It did the trick and I actually got access to my account again. I'm so happy! Thanks so much you saved my ass!
@ephraimalonzo7835
@ephraimalonzo7835 3 жыл бұрын
@Khari Keaton No problem :D
@tono_01
@tono_01 4 жыл бұрын
Great to see videos from you, Russel! Always enjoying them, thanks!
@wrathofchuck
@wrathofchuck 4 жыл бұрын
SDI, HD-SDI (1.5Gb/s), and 3G-SDI (3Gb/s) are popular standards for moving video and sound in production settings, and they are unbalanced (single-ended), using existing coaxial cabling and running considerable lengths like 100m. HDMI, a consumer interface, actually has 3 balanced data lanes and 1 balanced pair dedicated to the clock. PCIe is really a hybrid of serial and parallel, too, by adding additional differential lanes, up to at least 16, for greater throughput. Thanks for preparing another excellent video.
@joecox9958
@joecox9958 Жыл бұрын
little about Serdes in FPGA. yet video is good for beginer.
@thebeat2575
@thebeat2575 3 жыл бұрын
IC2 is actually a synchronous Serial communication protocol and not parallel communication, as mentioned on timeframe 4:05
@Calphool222
@Calphool222 2 жыл бұрын
@9:00 - It should be asserted that 8b/10b VARIES by application. The 8b/10b use in HDMI TMDS is **NOT** the same encoding/decoding scheme used in PCIe for example. They share a name, and absolutely nothing else. Lots of folks lose time on this issue.
@Nandland
@Nandland 2 жыл бұрын
Good to know!
@ericqiang7502
@ericqiang7502 2 жыл бұрын
Thanks for your sharing video. I have a question about the 8b/10b clk recovery. At the beginning of tx and rx connection, the TX may send the start bits and frame to RX. How does the CDR in the RX work to immediately obtain the clk and used it to extract data? I am not understand that the recovery clk should be finished before the first data coming. if tx and rx finish the recovery clk in the OOB, how do we know how long the clk recoveru is finished?
@Nandland
@Nandland 2 жыл бұрын
It does take a little bit of time for the TX and RX to lock on to the data stream. There will be some data loss while this occurs. The TX and RX need to ensure that the data is received properly via higher level protocols.
@ericqiang7502
@ericqiang7502 2 жыл бұрын
@@Nandland Thanks for your reply. Can I understand it in this way? TX sends some special characters at first. In the RX, it recover clk from the special character, and use the recoverd clk extract data. In this step the extracted data may be wrong so RX will check if it is right. RX will not give any signal to tx until RX's checking is right. And TX will always send speical chararcter if TX doesn't receiver the RX's checking right signal.
@colinl4221
@colinl4221 3 жыл бұрын
Thanks for the vid - very clear, detailed and informative
@srmeister1
@srmeister1 4 жыл бұрын
well it stops right where it starts to become interesting. hope you will do a follow up and show us how to implement a simple SERDES for an HDMI output :)
@Nandland
@Nandland 4 жыл бұрын
Fair point, but I didn't want to post a 1+ hour video. Also it becomes less universal for the implementation part.
@srmeister1
@srmeister1 4 жыл бұрын
@@Nandland pretty sure alot of us viewers would like to see you go in-depht on such topics :) anyway great work! thx
@asmi06
@asmi06 4 жыл бұрын
Xilinx 7 series IO cells include SERDES which are fast enough to implement 1080p HDMI without the use of dedicated transceivers. There is a ton of HDL code out in the Internet which does just that. It would be cool if nandland would go through one of them and explain what's going on, but as he said, it's going to be highly chip-specific.
@JoseSilva-dy1op
@JoseSilva-dy1op 4 жыл бұрын
Great simple and complete, Congratulations
@engjds
@engjds Жыл бұрын
Great video!, one small point, Manchester I believe uses an Xor, so in your graph you show data=1, clk=1 but with an output of 1, when it should be zero?
@daysirc
@daysirc 4 жыл бұрын
Awesome explanation, could you do like a "hello world" of transceivers? I am trying to use them but is overwhelming the options in configurations.
@hightlightlol2106
@hightlightlol2106 4 жыл бұрын
nice to see you back ^^
@glennkirilow9015
@glennkirilow9015 3 жыл бұрын
Excellent video!
@FrodorMov
@FrodorMov 4 жыл бұрын
Hey, thanks for the video. Good explanation. Something has been bothering me about parallel vs serial though. Basically, the fact that we call something serial doesn't mean its data is transmitted over a single communication channel (be it a single wire or differential pair). Take your provided examples of HDMI, lightning and USB (its even in the same) Older USB connectors, sure. But now, USB Type-C have up to four differential pairs that can be used. HDMI has 3 differential pairs. Lightning has two. Which makes me wonder, where do we draw the line ? Should we even call these serial / parallel ? As far as I understand it (after some googling while writing this post), we call things serial interfaces when serialization takes place. If we transmit words, entire addresses or whatever in parallel, they're parallel connections. But really, with today's parallel serial interfaces (like hdmi/usb etc), I think its mainly a good source of confusion :p
@TrapAddict
@TrapAddict 2 жыл бұрын
I'd say that if there is any serialization of data at all, even pairing just two channels of data into one (despite maintaining the rest of the channels), it could be identified as SerDes. I do see where your confusion comes from though!
@Audiocrazed
@Audiocrazed 4 жыл бұрын
yissss been waiting for this
@Suryaofficial691
@Suryaofficial691 2 жыл бұрын
Great work keep going
@hayfahvytsen
@hayfahvytsen 4 жыл бұрын
Great stuff. Thanks!
@mustafaemreyilmaz4180
@mustafaemreyilmaz4180 4 жыл бұрын
Have you ever worked with SoCs like Zynq etc. If so, care to make a video about that? I am especially suffering from embedded linux, device drivers, kernel stuff.
@nielspaulin2647
@nielspaulin2647 2 жыл бұрын
EXCELLENT!
@muhammadasimjavaid7198
@muhammadasimjavaid7198 4 жыл бұрын
Please make a video on DDR3 memory interface generator and how to use Gtx transceivers for Xilinx FPGAs
@GauravGupta-gd9wv
@GauravGupta-gd9wv 4 жыл бұрын
very well explained :)
@autumnfox3619
@autumnfox3619 4 жыл бұрын
Thank you! Do you plan on touching the Zynq and PLPS interaction? AXI/Avalon in future?
@tono_01
@tono_01 4 жыл бұрын
+1 for AXI.
@Neuroszima
@Neuroszima 2 жыл бұрын
Serial data transfer has its limits. At high speeds signal integrity drops so much that you either have to stick with insanely well manufactured shielded cables (and short ones!) or you have to use active boosters on the way to not lose information on the way. Parallel also have to be shielded but can be sent at much lower freq. thus not losing integrity that much and less of technological tricks/efforts have to be made. Look at I2C - 400kH and it can be sent pretty mucj through bare wire. It isnt parallel standard i ger it, but you could send several I2C data lines pretty much on bare AWG 24 cable and still wouldnt notice anything.
@nikolaykostishen6402
@nikolaykostishen6402 4 жыл бұрын
Nice, thanks.
@johnberame5322
@johnberame5322 Жыл бұрын
thanks :D
@mgagoshidze
@mgagoshidze 4 жыл бұрын
Is it only me or does Russell look like Doug Demuro's brother?
@chriskiwi9833
@chriskiwi9833 4 жыл бұрын
Great to see you back. Great content as always. Any chance of an AXI bus and/or a PMod video? There’s nothing like moving real world data around to make things, well, real :).
@chandrasamsung337
@chandrasamsung337 3 жыл бұрын
parallel vs serial comparison slide, something wrong in the statement- "parallel is slow and serial is fast"
@刘博铭-v9q
@刘博铭-v9q 4 жыл бұрын
哇,更新了
@adzbasslines268
@adzbasslines268 3 жыл бұрын
I'd find it interesting to see what improvement would be had by changing the differential conducting wire element from Cu to Ag given Rho for Silver is a better choice for this application. But of course, would the lesser resistivity of Ag over Cu be of any benefit to offset the higher cost of Silver over Copper?
@Nandland
@Nandland 3 жыл бұрын
For longer high speed runs you just go to Fiber Optics. Best signal integrity and speed.
@alperenalperen2458
@alperenalperen2458 4 жыл бұрын
Great!
@y_x2
@y_x2 6 ай бұрын
HDMI does not run at 12GHz... and does NOT use 8/10 bits encoding scheme. This is only a rough explanation...
@HDgaming345
@HDgaming345 2 жыл бұрын
Hi. How do I instantiate serdes IP on my zynq ultrascale FPGA? I don't see how to do it in the datasheet. I have to take data from fast adc and process it in slow fpga clock domain. ADC clock = 8x faster than fpga clock. Can anyone help me?
@boonedockjourneyman7979
@boonedockjourneyman7979 4 жыл бұрын
Good job kid. Keep it up. Your stamina is important. As a professional you will find it.
@OKeefeist
@OKeefeist 4 жыл бұрын
i2c is not easy to implement haha
@axentfly5854
@axentfly5854 3 жыл бұрын
2:24 If parallel is slower, That why USB ULPI (480 Mbits/s) uses 8 bit data bus?? Or why USB 3.0 uses additional pairs of data wires (more pins, that equivalent for works serial data pairs as parallel) against simple 4-pin USB 2.0?? HDMI also uses 3 pairs of serial lines (not one), that works in parallel. Why 3, not one pair?? And simply.. Why modern versions of OS and processors changed bitness from 32-bit to 64-bit (that also equivalent for using 64 wire-bus against 32 wire-bus. More pins again..)?? Maybe it's better use only 1 serial wire against many wires for terabit baudrate?? Lets go with I2C at "1 Terabit/s" ! Why not?? (Ha-ha-ha) No. Answer is simple - parallel is always faster.
@conorstewart2214
@conorstewart2214 Жыл бұрын
The reason they changed from 32 bit to 64 bit isn’t really to do with parallel vs serial at all. Computer chips pretty much have to deal with data in parallel due to how it is represented. You can store a much larger number in 64 bits vs 32 bits. You also end up limited in terms of speed when making computer processors and in processors the length of individual paths can be very precisely controlled hence it eliminates the issues with parallel connections. He even covered this in the video, parallel is okay for on board connections since you can control the length but for cables it isn’t. Using additional pairs of wires isn’t the same as using a parallel connection, it is using multiple serial connections, there is a big difference. If you used parallel then one block of data, say a byte is split up across all the wires, like in an eight wire plus clock parallel bus, each bit of your byte would get its own wire. With multiple serial connections, each channel is transmitting totally separate data and bytes aren’t split between the wires. With hdmi it has a clock channel and then three data channels, each channel carries data for one specific colour, each channel is acting independent of the other channels and transmitting its data serially. Parallel is always faster only if you can ensure the length and hence time taken on each wire is exactly the same and that becomes more of an issue the faster your speeds get, so your manufacturing methods limit the maximum speed of parallel communication you can get and the more wires you add the harder it is to length match them. So parallel is not always faster at all. With current manufacturing methods, especially for cables it is much easier to get high speed serial communications than high speed parallel communications, so theoretically parallel is faster, realistically serial is faster.
What is I2C, Basics for Beginners
18:30
nandland
Рет қаралды 168 М.
Как Я Брата ОБМАНУЛ (смешное видео, прикол, юмор, поржать)
00:59
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
Симбочка Пимпочка
Рет қаралды 5 МЛН
Smart Sigma Kid #funny #sigma
00:33
CRAZY GREAPA
Рет қаралды 23 МЛН
Crossing Clock Domains in an FPGA
16:38
nandland
Рет қаралды 69 М.
SERDES Clocking and Equalization for High-Speed Serial Links, Jack Kenney
12:21
IEEE Solid-State Circuits Society
Рет қаралды 38 М.
What is a FIFO in an FPGA
17:47
nandland
Рет қаралды 75 М.
6 Horribly Common PCB Design Mistakes
10:40
Predictable Designs
Рет қаралды 219 М.
What is an FPGA? Intro for Beginners
13:22
nandland
Рет қаралды 370 М.
The Path to 200Gbps Serial Links
29:50
Alphawave Semi
Рет қаралды 9 М.
CAN Bus Properties and Troubleshooting
18:09
Enovation Controls
Рет қаралды 1,4 МЛН
What is a Flip-Flop?  How are they used in FPGAs?
24:13
nandland
Рет қаралды 161 М.
Cracking Enigma in 2021 - Computerphile
21:20
Computerphile
Рет қаралды 2,5 МЛН
Как Я Брата ОБМАНУЛ (смешное видео, прикол, юмор, поржать)
00:59