Author Topic: FPGA VGA Controller for 8-bit computer  (Read 414219 times)

0 Members and 3 Guests are viewing this topic.

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7638
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #100 on: October 24, 2019, 08:17:11 pm »
Also, the serdes on this Lattice part is fast enough to directly drive DVI/HDMI 1080p.
Nope, no SERDES on that part. Anyway, Lattice requires a subscription license to use SERDES-enabled chips so it would be useless to open-hardware hobbyists if it did.

Yes. The only ECP5 parts that have SERDES are the LFE5UMxx.
http://www.latticesemi.com/en/Products/FPGAandCPLD/ECP5

One way of evaluating it AND get a free license for this part is to buy a VERSA kit: http://www.latticesemi.com/en/Products/DevelopmentBoardsAndKits/ECP55GVersaDevKit
(I think the license is restricted to the part used on this board:  LFE5UM5G-45F, but a lot can be done with it!)

There are promotional prices on those boards on a regular basis. I bought the VERSA board for the ECP3 a few years ago for $99. The VERSA ECP5 is about $250 and occasionally can be had for $99 too.
I'm sorry, yes, you are correct for getting the 3 gigabit to work, so, 1080p is out.  But for 480p, the standard DQs are fast enough, especially if you user DDR IOs, and the earlier posted verilog DVI/HDMI out serialiser is manually written which does not require the use of Lattice's embedded serdes function.  All it requires is 4 parallel balanced DQ ports which can serial shift at 216Mhz (108Mhz DDR) from a single bank clock.  The chip I listed can handle that with ease.
« Last Edit: October 24, 2019, 08:23:31 pm by BrianHG »
 

Online SiliconWizard

  • Super Contributor
  • ***
  • Posts: 14230
  • Country: fr
Re: FPGA VGA Controller for 8-bit computer
« Reply #101 on: October 24, 2019, 08:50:13 pm »
All it requires is 4 parallel balanced DQ ports which can serial shift at 216Mhz (108Mhz DDR) from a single bank clock.  The chip I listed can handle that with ease.

Oh, yeah. I guess maybe even lower-end Lattice FPGAs could do this.
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2728
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #102 on: October 24, 2019, 09:08:08 pm »
All it requires is 4 parallel balanced DQ ports which can serial shift at 216Mhz (108Mhz DDR) from a single bank clock.  The chip I listed can handle that with ease.
AFAIK HDMI requires a pixel clock to be at least 25 MHz, which corresponds to 250 Mbps per data lane (1:10 serialization). So 216 Mbps is not going to be enough.

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7638
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #103 on: October 24, 2019, 09:21:12 pm »
All it requires is 4 parallel balanced DQ ports which can serial shift at 216Mhz (108Mhz DDR) from a single bank clock.  The chip I listed can handle that with ease.
AFAIK HDMI requires a pixel clock to be at least 25 MHz, which corresponds to 250 Mbps per data lane (1:10 serialization). So 216 Mbps is not going to be enough.
Ok, 270Mhz then, still well within the Lattice part I mentioned which can do 500Mhz serial data on the DDR pins.

Generic DDRX1 Outputs With Clock and Data Aligned at Pin (GDDRX1_TX.SCLK.Aligned) Using PCLK Clock Input - Figure 3.9: All Devices — -8 500 — -7 500 — -6 500 Mb/s...
 

Online Berni

  • Super Contributor
  • ***
  • Posts: 4911
  • Country: si
Re: FPGA VGA Controller for 8-bit computer
« Reply #104 on: October 25, 2019, 05:58:09 am »
Yeah Lattice are the most cost effective FPGAs that you can still easily buy and get proper software for. The  nice bank per buck ECP5 family is fast enough to do it.

The HDMI spec calls for a pixel clock of at least 25 Mpixels/s. For 24bit RGB this means each of the 3 diff pairs carries 8 bits per pixel but the encoding increases that to 10bit so the minimum bitrate of a HDMI link is 25M*100 = 250 Mbit

In general a lot of FPGAs will have some form of "baby serdes" on some or most pins. These are sometimes just a DDR buffer but more often are 1:4 serdes. This brings the bitrate down to only being 1/8 per signal in the FPGA fabric as that requires the signals to be generally under about 200MHz. The ECP5 family does include this functionality on the left and right banks and according to the datasheet will run at between 624Mbit and 800Mbit (depends on speed grade). So this means its 2 or 3 times faster than the minimum HDMI spec.

Even if you don't use the right bank to get this functionality you still get DDR buffers on all banks in the ECP5 and those get 500Mbit (regardless of speed grade) but as a downside you only get 1:2 reduction in signal speed so you have to deal with two 250MHz SDR streams in the FPGA fabric and that does take some careful design to run fast enough. Its possible that maybe the code generator in the Lattice Diamond IDE can add a larger ratio sredes in the logic fabric, but i think the code generator always wants the nice pin with hardware 1:4 and 1:7 reduction.

I think the Lattice Crosslink family has some even faster buffers in the IO pins.

So for low resolutions not a problem. Its things like 1080p that would be a problem since the lowest you can get away with is 130MHz pixel clock and this means 1.3Gbit per lane. Im pretty sure no FPGA out there can do that with regular IO functionality so proper dedicated serdes is a must for that and yeah the prices of those FPGAs tend to be ridiculous.
 
The following users thanked this post: BrianHG

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2728
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #105 on: October 25, 2019, 06:31:57 am »
So for low resolutions not a problem. Its things like 1080p that would be a problem since the lowest you can get away with is 130MHz pixel clock and this means 1.3Gbit per lane. Im pretty sure no FPGA out there can do that with regular IO functionality so proper dedicated serdes is a must for that and yeah the prices of those FPGAs tend to be ridiculous.
Xilinx 7 series at speed grade of 2 and above can officially do 1250 Mbps, and unofficially does 1080p@60 (1480 Mbps or something like that). "High performance" banks can go to 1600 Mbps, but it only supports Vccio of 1.8V and below.
I think Xilinx did a right thing to integrate up to 1:8 SERDES (can be increased up to 1:14 by cascading) into each and every IO pin tile, as users can pick pins which are more convenient from layout point of view, instead of reading through manual to figure out which ones are they supposed to use.
« Last Edit: October 25, 2019, 01:01:54 pm by asmi »
 

Online Berni

  • Super Contributor
  • ***
  • Posts: 4911
  • Country: si
Re: FPGA VGA Controller for 8-bit computer
« Reply #106 on: October 25, 2019, 06:51:39 am »
Oh that's certainly a nice development from Xilinix. I haven't seen such high IO speeds from reasonably priced FPGAs before.

Anyway my point was that most modern FPGAs out there have enough IO performance to easily meet the minimum HDMI speed.
 

Offline Canis Dirus Leidy

  • Regular Contributor
  • *
  • Posts: 214
  • Country: ru
Re: FPGA VGA Controller for 8-bit computer
« Reply #107 on: October 25, 2019, 08:54:32 am »
By the way. ZX Evolution: FPGA (ACEX 1K) assisted ZX Spectrum compatible computer with enhanced graphic modes and VGA-compatible (due to internal scandoubler) video output. Copying it exactly makes no sense (unless Mr. Wells lends his time machine), but a glimpse into the Verilog code may be useful.
 
The following users thanked this post: nockieboy

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #108 on: October 25, 2019, 10:06:58 am »
Right, so... just to clear up any confusion (on my part!  :o) and to reach a general consensus amongst the professionals (you guys!  ;D), can we agree on an FPGA I should choose, bearing in mind my wish-list (listed below for clarity, in order of priority)?

MUST:
  • Be able to interface to 5v Z80 data and address buses - either directly, OR via simple level translation through 74LVC parts down to 3.3v or something similar
  • FPGA IDE software - cheap (free!) No licensing to worry about.
  • Display resolution up to 720x480 (with pillars?) or 640x480 4:3 equivalent
  • 480p/i HDMI-compatible output (or able to drive a 12/24-bit bus to a TFP410 or similar for serialisation)
  • Package type - NOT BGA where possible due to hand-soldering requirement
  • Internal RAM - minimum 90 KB (more the better) OR external SDRAM / DRAM / SRAM interface if I can use it in place of internal RAM
  • Minimum of three main screen modes - 640x480, 320x240, 160x120 with up to 256 colours from a palette of many (using 1 byte-per-pixel LUT)
  • Low cost where possible

NICE TO HAVE:
  • Eval/developer board features/cost (built-in HDMI would be nice!)
  • Non-palette display using 4-bit colour channels (16-bit word per pixel in RAM)
  • Able to mux audio output from internal VHDL AY-3-891x emulator in HDMI stream?
  • Hardware mouse cursor, maybe...?

The MAX 10 is looking like a good option, but with all this talk of Lattice and knowing there are even more manufacturers out there, I'd like to get a good indication of which one you think will fit the bill for me?  :-+
 

Online Berni

  • Super Contributor
  • ***
  • Posts: 4911
  • Country: si
Re: FPGA VGA Controller for 8-bit computer
« Reply #109 on: October 25, 2019, 11:15:11 am »
Yeah Lattice is the 3rd biggest player in the FPGA market. They specialize in being lower cost than the big leading two. Tho the tools on Lattice are not quite as good while still flowing the same free basic version and expensive as hell full version scheme.

Since the cost of the chip is not that high of a priority for you you better stick to Intel or Xilinx as they have better tools. Personally i enjoy Intel/Altera tools the most and i really like the Qsys/SOPC builder tool that wires up your digital computing systems auto-magically.

Previous Altera MAX series tended to be 5V tolerant but the MAX10 not anymore. Then again if your chips are TTL it will all work on 3.3V signals just fine as long as there are resistors to limit current, or you can just use a single 8bit logic buffer to do it proper since the data bus is only 8 bits wide anyway. You still get the around 600 to 700Mbit serial IO performance so HDMI should be just fine, but having 90KB of internal block RAM is going to be quite expensive on it.

For a start just look around at what dev boards you can get from the vendor you like. Be prepared to pay $50 and up for a decent one (But sometimes >$100). The decently sized boards always have some form of SRAM or SDRAM or DDR2 on them. HDMI tends to be rare but if it has VGA its probably good enough for now as you can likely add your own HDMI port later on. (Remember you want to first learn how to use these FPGAs so start simple)
« Last Edit: October 25, 2019, 11:17:26 am by Berni »
 
The following users thanked this post: nockieboy

Online SiliconWizard

  • Super Contributor
  • ***
  • Posts: 14230
  • Country: fr
Re: FPGA VGA Controller for 8-bit computer
« Reply #110 on: October 25, 2019, 02:54:18 pm »
If this is your first such development, I would personally still start with VGA first. And maybe consider HDMI later on, when all the rest works and I've gotten more proficient. VGA is still easier to implement, and easier to debug. Some people seem to make it look as though HDMI is just a picnic, but they fail to tell you that they probably spent hours getting it right back when they started. And now of course it all looks very easy. Just saying, do as you wish and don't mind me. Now if the HDMI spec is mainly to select an appropriate FPGA that you know will allow you to do HDMI later on, that's a valid point.




 
The following users thanked this post: nockieboy

Offline nockieboyTopic starter

  • Super Contributor
  • ***
  • Posts: 1812
  • Country: england
Re: FPGA VGA Controller for 8-bit computer
« Reply #111 on: October 25, 2019, 04:38:07 pm »
Now if the HDMI spec is mainly to select an appropriate FPGA that you know will allow you to do HDMI later on, that's a valid point.

Absolutely it is.  I don't want to mess around too much swapping FPGAs as I develop - I'd rather get the 'end game' FPGA, and learn from the ground-up on that.  I'm assuming, of course, that there's no real reason I can't develop a VGA output on a dev board with HDMI fitted?  Or offer VGA AND HDMI as outputs on the final version, for example?

Yeah Lattice is the 3rd biggest player in the FPGA market. They specialize in being lower cost than the big leading two. Tho the tools on Lattice are not quite as good while still flowing the same free basic version and expensive as hell full version scheme.

Purely out of interest, is there anything on the expensive-as-hell full version software that a beginner like me would want?

Since the cost of the chip is not that high of a priority for you you better stick to Intel or Xilinx as they have better tools. Personally i enjoy Intel/Altera tools the most and i really like the Qsys/SOPC builder tool that wires up your digital computing systems auto-magically.

The cost is still a priority, just not quite as high as the factors before it in the list.  ;)

The only thing holding me back from the MAX 10 series is the cost of the evaluation board, but I can stretch to it if needs be - I just want to make sure no-one's going to pipe up after I've ordered one with a comment along the lines of, "Haven't you checked out the Costmin LogicBlaster IV?  It does everything you want, packs 200KB of RAM, makes the tea and takes your dog for a walk and the dev board includes HDMI and VGA and only costs £50..."  Because that would make me cry...  ;D

Oh, I also meant to say that I have no preference for VHDL over Verilog at all - it's just that the only exposure I've had to FPGA code is via Grant Searle's Multicomp code, which is in VHDL, hence I've spoken about VHDL in this discussion but don't mean to exclude Verilog.  I'm right at the start with this project, so I am ultimately extremely flexible in which path I take.

Previous Altera MAX series tended to be 5V tolerant but the MAX10 not anymore. Then again if your chips are TTL it will all work on 3.3V signals just fine as long as there are resistors to limit current, or you can just use a single 8bit logic buffer to do it proper since the data bus is only 8 bits wide anyway.

System Interface Considerations:
ALL the chips in my computer that would connect to the FPGA are either 74HCT buffers for data / address / most command signals, or the CMOS Zilog Z80 itself for a couple of control signals (and these will be going TO the Z80 FROM the FPGA and are active-low with 5v pull-ups on them).

The only area for potential variation is in the address bus (from the MMU), which may have HCT, HC or LS logic driving the extended address lines.

You still get the around 600 to 700Mbit serial IO performance so HDMI should be just fine, but having 90KB of internal block RAM is going to be quite expensive on it.

The 10M50 is the most attractive proposition, I think, with 200 KB of RAM in it.

For a start just look around at what dev boards you can get from the vendor you like. Be prepared to pay $50 and up for a decent one (But sometimes >$100). The decently sized boards always have some form of SRAM or SDRAM or DDR2 on them. HDMI tends to be rare but if it has VGA its probably good enough for now as you can likely add your own HDMI port later on. (Remember you want to first learn how to use these FPGAs so start simple)

Well, the 10M50 is available on a dev board with HDMI on it.  That would provide me with a good hardware example to work from and all I'd need to worry about would be getting the FPGA set up properly to display something on it.  I could always wire up a VGA socket as well and go that path first.  It's darn expensive though.  :palm:

 

Offline Canis Dirus Leidy

  • Regular Contributor
  • *
  • Posts: 214
  • Country: ru
Re: FPGA VGA Controller for 8-bit computer
« Reply #112 on: October 25, 2019, 05:34:34 pm »
Well, the 10M50 is available on a dev board with HDMI on it.  That would provide me with a good hardware example to work from and all I'd need to worry about would be getting the FPGA set up properly to display something on it.  I could always wire up a VGA socket as well and go that path first.  It's darn expensive though.  :palm:
Come to the Cyclone 10 side, we have cookies>:D (and QFP package)

P.S. But HDMI have another problem: high-speed signals PCB routing.
 
The following users thanked this post: jhpadjustable

Online Berni

  • Super Contributor
  • ***
  • Posts: 4911
  • Country: si
Re: FPGA VGA Controller for 8-bit computer
« Reply #113 on: October 25, 2019, 05:48:13 pm »
The premium features tend to be the same with all the vendors. Things like faster compilation trough the use of more cores and partial recompilation (This is more useful than it sounds because even simple designs can sometimes compile for minutes even on a fast PC) and it usually also unlocks a large set of IP blocks for full use. The free version also usually will not compile for the ridiculously large FPGAs that cost 1000s of dollars per chip.

The set of IP blocks mentioned before tend to  be available in the free version in there crippled form with a "death timer". This is a counter buried deep inside the encrypted IP block that is set to run out in abut 2 hours of running at typical clock speeds. Once it runs out it kills the IP block and renders it unusable. This is nice in that it lets you use it, but not so nice that the FPGA has to be rebooted to get it to work again after the timer runs out. Unluckily the DDR2 controller tends to be once of these crippled premium IPs.

That dev board you linked is actually a pretty good deal. The MAX10 chip on that board is very expensive, i couldn't find the price for the exact part but the slower speed grade version of that chip costs 135 USD if you ware to buy a single one off DigiKey as a mere mortal, so the exact one should be even more expensive. Its actually cheaper to buy the board and desolder the chip rather than buying the chip new(go ahead and try to buy this chip). Tho if you are a commercial costumer and have good relations with Intel they will give you way way cheaper deals directly, especially if you ask for 1000 of them (They likely won't even respond if you ask anything under 100). This is why i brought up that chips with this much memory are expensive, but is also a very powerful chip. For integer math speed it could rival the performance of modern CPUs in PCs (This is why FPGAs got used for cryptocurency mining before GPU compute and ASICs came around). And yet this is actually still a low "low cost FPGA" compared to the other chips they make.

Verilog or VDHL it does not matter. Both are supported by all vendors. I personally prefer Verilog because its simpler and involves less fancy syntax typing. Not that one or the other is better, just my taste went with Verilog after trying one and the other. You can mix VHDL and Verilog in the same project and compile it together anyway.

As for having ready to go hardware, yes that is very useful with FPGAs as they often have a lot of support circuitry (Gazilion power rails, boot memory, config pins) and you always get a JTAG programmer on dev board included. Often this JTAG programmer can be rewired to connect to an external FPGA to turn the dev board into a universal programmer for that vendors chips.

Its your decision what you want to spend the money on but that MAX10 dev board is a pretty good deal for what you get. You can always add a VGA port onto the IO headers to start off there and PWM audio output via a single pin. Believe me you will want to take things slowly because getting into FPGAs is quite a learning curve(Id say significantly more so than with MCUs) but lucky for you that VGA video generation is one of the very nice beginner projects. This is mainly because you can slowly build on it in steps and each incremental step is simple enough to debug purely using a logic analyzer and no simulation.
 

Offline Canis Dirus Leidy

  • Regular Contributor
  • *
  • Posts: 214
  • Country: ru
Re: FPGA VGA Controller for 8-bit computer
« Reply #114 on: October 25, 2019, 06:04:48 pm »
Unluckily the DDR2 controller tends to be once of these crippled premium IPs.
Ahem. Due to these
Package type - NOT BGA where possible due to hand-soldering requirement
you can forget about this IP restriction.
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7638
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #115 on: October 25, 2019, 09:46:43 pm »
Well, the 10M50 is available on a dev board with HDMI on it.  That would provide me with a good hardware example to work from and all I'd need to worry about would be getting the FPGA set up properly to display something on it.  I could always wire up a VGA socket as well and go that path first.  It's darn expensive though.  :palm:
Come to the Cyclone 10 side, we have cookies>:D (and QFP package)

P.S. But HDMI have another problem: high-speed signals PCB routing.
The internal ram bits on that Cyclone10 are too few for the OP to completely contain his project.  If the OP wanted a SDRam version, then that dev board would be fine, but when developing the opensource graphics board, he would need a FPGA with enough IOs for the SDRam and other stuff which may not be possible when porting his project to the 144pin TQFP version of the Max10.  With such a setup, the op will need to engineer a multiport SDRam controller which cache banks for display refresh.

« Last Edit: October 25, 2019, 09:50:01 pm by BrianHG »
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7638
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #116 on: October 25, 2019, 10:04:54 pm »
If this is your first such development, I would personally still start with VGA first. And maybe consider HDMI later on, when all the rest works and I've gotten more proficient. VGA is still easier to implement, and easier to debug. Some people seem to make it look as though HDMI is just a picnic, but they fail to tell you that they probably spent hours getting it right back when they started. And now of course it all looks very easy. Just saying, do as you wish and don't mind me. Now if the HDMI spec is mainly to select an appropriate FPGA that you know will allow you to do HDMI later on, that's a valid point.
Your right, I have too many years of experience in FPGA video and make it seem too easy.
I also picked the MAX10 144pin with all ram inside since the OP's development of a display controller can operate 100% internally without worries about Dram interface errors and logic.

The design is simple enough that the user can make 5 of his own 2$ dev boards PCBs from JLPCB, but yet again, I'm talking from experience I have with Intel chips.

One thing about FPGA analog VGA video out, remember, use a 5V TTL level shifter/line driver when sending the HS and VS!!!  Some monitors work fine feeding 3.3v TTL on these 2 signals, some just wont even turn on, and some monitors sit on the edge turning on, then off, or the syncs go haywire.  The OP wont know what hit him if he makes the mistake of using 3.3v for HS and VS outputs then many third party users start experiencing problems...  |O   A 5v powered 74HCT04 with 3 outputs paralleled for extra drive current for each sync signal should work fine.  At the inputs of the '04, I usually add a single 470ohm pullup to 3.3v since Altera's high drive on their IO pins have an unusual current pull curve as they reach the VCCIO and this just cleans that up a little when driving 3 cmos inputs in parallel on a 5v CMOS part.

« Last Edit: October 25, 2019, 11:27:25 pm by BrianHG »
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7638
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #117 on: October 25, 2019, 10:18:53 pm »
For the HDMI interface, the Max10 dev board used this IC when interfacing with the HDMI for ESD protection and to deal with the 5V DDC signals:
https://www.digikey.com/product-detail/en/texas-instruments/TPD12S016PWR/296-29690-1-ND/2762248

It does the ESD protection and level shifts/converts the 5v DDC I2C signals from the HDMI to the FPGA's 3.3v.

It is used in the Max 10 DEV board mentioned above.
« Last Edit: October 25, 2019, 10:22:48 pm by BrianHG »
 
The following users thanked this post: nockieboy

Offline mariush

  • Super Contributor
  • ***
  • Posts: 4979
  • Country: ro
  • .
Re: FPGA VGA Controller for 8-bit computer
« Reply #118 on: October 25, 2019, 11:03:34 pm »
I don't know why you guys keep stressing about 1080p

I'd suggest setting the maximum to 1280x720 or 1366x768 (HD Ready resolution on cheap TVs)

720p is a standard resolution that should be accepted by everything, and you'd have both 16:9 or 4:3 resolutions, and you can double pixels to do 640x360, or 4 pixels blocks to get 320x180 ... scaling by 1.5x gets 960x720 to stretch 640x480...

Could you maybe use something like SiI8784 https://www.semiconductorstore.com/pages/asp/DownloadDirect.asp?sid=1572019820392 - to convert an analogue signal to HDMI ? 
You could use a fast microcontroller and 3 r2r dacs to produce the rgb/ypbpr signal/ and output to the sil chip which then converts to hdmi.

or SiI9136 ... takes up to 36 bit per pixel digital signal and output hdmi : datasheet

edit : this last 9136 chip is used in some cheap 20$ devices and someone made a blog about it : https://hackaday.io/project/122480-eecolor-color3

and this board uses the 9136 and the download on the page has lots of cool documentation and code for 9136 : https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=1067&PartNo=4
« Last Edit: October 26, 2019, 08:00:14 am by mariush »
 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2728
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #119 on: October 26, 2019, 03:12:30 am »
For the HDMI interface, the Max10 dev board used this IC when interfacing with the HDMI for ESD protection and to deal with the 5V DDC signals:
https://www.digikey.com/product-detail/en/texas-instruments/TPD12S016PWR/296-29690-1-ND/2762248

It does the ESD protection and level shifts/converts the 5v DDC I2C signals from the HDMI to the FPGA's 3.3v.
I prefer TPD12S521 chip - it does the same thing, but it support "flow-through" routing to avoid having any stubs thus improving signal integrity (see attachment).
 
The following users thanked this post: BrianHG

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7638
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #120 on: October 26, 2019, 03:37:14 am »
For the HDMI interface, the Max10 dev board used this IC when interfacing with the HDMI for ESD protection and to deal with the 5V DDC signals:
https://www.digikey.com/product-detail/en/texas-instruments/TPD12S016PWR/296-29690-1-ND/2762248

It does the ESD protection and level shifts/converts the 5v DDC I2C signals from the HDMI to the FPGA's 3.3v.
I prefer TPD12S521 chip - it does the same thing, but it support "flow-through" routing to avoid having any stubs thus improving signal integrity (see attachment).
The TPD12S521 chip does not level voltage translate the I2C DDC lines, at least, it is not mentioned anywhere at all in it's data sheets.
The TPD12S016PWR specifically describes the logic shifter gates with their internal wiring and specs.  The data sheet of the TPD12S521only shows a mosfet inside it, though there is one sentence which says:
"To begin the design process the designer needs to know the 5V_SUPPLY voltage range and the logic level, LV_SUPPLY, voltage range."
But, nothing else...  Typical TexasInstruments crummy modern data sheets...

BTW, the TPD12S016PWR specifically says:
"Auto-direction Sensing I2C Level Shifter with One-shot Circuit to Drive a Long HDMI Cable (750-pF Load)"
With a specific image of this internal logic at the bottom of page 14 in the data sheet.

To be safe, without any mention from TI, I would feel better with my FPGA using the TPD12S016PWR unless I get a letter from TI guaranteeing the same function in the TPD12S521.
« Last Edit: October 26, 2019, 03:40:05 am by BrianHG »
 

Offline jhpadjustable

  • Frequent Contributor
  • **
  • Posts: 295
  • Country: us
  • Salt 'n' pepper beard
Re: FPGA VGA Controller for 8-bit computer
« Reply #121 on: October 26, 2019, 03:50:38 am »
The TPD12S521 chip does not level voltage translate the I2C DDC lines, at least, it is not mentioned anywhere at all in it's data sheets.
Description, second paragraph, first sentence. "The low-speed control lines offer voltage-level shifting to eliminate the need for an external voltage level-shifter IC."

Quote
The TPD12S016PWR specifically describes the logic shifter gates with their internal wiring and specs.  The data sheet of the TPD12S521only shows a mosfet inside it
Yes, that's a bidirectional level shifter. See NXP app note AN10441 for a detailed explanation.
"There are more things in heaven and earth, Arduino, than are dreamt of in your philosophy."
 

Offline BrianHG

  • Super Contributor
  • ***
  • Posts: 7638
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #122 on: October 26, 2019, 04:03:58 am »
The TPD12S521 chip does not level voltage translate the I2C DDC lines, at least, it is not mentioned anywhere at all in it's data sheets.
Description, second paragraph, first sentence. "The low-speed control lines offer voltage-level shifting to eliminate the need for an external voltage level-shifter IC."

Quote
The TPD12S016PWR specifically describes the logic shifter gates with their internal wiring and specs.  The data sheet of the TPD12S521only shows a mosfet inside it
Yes, that's a bidirectional level shifter. See NXP app note AN10441 for a detailed explanation.
Your correct, sorry....
It's odd that on page 7 they only show an upward facing FET like symbol.

 

Offline asmi

  • Super Contributor
  • ***
  • Posts: 2728
  • Country: ca
Re: FPGA VGA Controller for 8-bit computer
« Reply #123 on: October 26, 2019, 04:19:35 am »
To be safe, without any mention from TI, I would feel better with my FPGA using the TPD12S016PWR unless I get a letter from TI guaranteeing the same function in the TPD12S521.
I actually use it on my FPGA board:

I can assure you that it really works just fine :-+ Moreover, it also provides a current limiter for HDMI port's power line, also the destination voltage (on the FPGA side) for DDC/HPD/CEC lines doesn't have to be 3.3 V - it can be any voltage from 1 to 3.3 V.
 
The following users thanked this post: BrianHG, nockieboy

Offline jhpadjustable

  • Frequent Contributor
  • **
  • Posts: 295
  • Country: us
  • Salt 'n' pepper beard
Re: FPGA VGA Controller for 8-bit computer
« Reply #124 on: October 26, 2019, 05:14:09 am »
It's odd that on page 7 they only show an upward facing FET like symbol.
But that really is all there is to it. Select an NMOS with (Vgs(on) < Vcclow - margin) and (Vds(max) > Vcchigh). Connect the gate to Vcclow, the source to the low-voltage signal, and the drain to the high-voltage signal. Add pull-ups to the respective Vcc on each signal input. You have just completed a bidirectional digital level shifter, perfectly sufficient for several hundreds of kilohertz. Feel free to work out what happens when neither side is pulling low, when the drain side is pulled low, and when the source side is pulled low. It's genius.
« Last Edit: October 26, 2019, 05:21:23 am by jhpadjustable »
"There are more things in heaven and earth, Arduino, than are dreamt of in your philosophy."
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf