KrutavShah / PCIE-to-MXM-Adapter

This adapter/card allows you to plug an MXM 3.1 graphics card into a desktop PCIE port.
https://www.krutav.com
35 stars 9 forks source link

Adapter design discussion #1

Closed chraac closed 3 years ago

chraac commented 3 years ago

Looks the PCB files in altium project of both x1 and x16 was not properly updated, are they still under development?

chraac commented 3 years ago

Also the Altium Designer show that the footprint of PCIeX1 was not found, just curious if it missing something when convert from KiCAD project

KrutavShah commented 3 years ago

Yes, it is still under development. Currently I am working on other projects so time is limited.

The goal is to transition from KiCAD to Altium, so I’m in the process of redesigning each board in Altium to gain more advanced features necessary for designing the board with high speed signals and relatively good design standards.

chraac commented 3 years ago

Yes, it is still under development. Currently I am working on other projects so time is limited.

The goal is to transition from KiCAD to Altium, so I’m in the process of redesigning each board in Altium to gain more advanced features necessary for designing the board with high speed signals and relatively good design standards.

Thanks for quick reply, I think I can help to do some developing or testing, I have a spare MXM graphics card and can test the PCB if it work.

KrutavShah commented 3 years ago

Thanks for the offer, I do have an MXM card available too, so the only issue is that it will take a few weeks to actually manufacture the adapter.

Since the project is still in development, it will take some time before its fully ready for manufacturing. If you want to help contribute to designing and/or validation, feel free to do so!

chraac commented 3 years ago

@KrutavShah, anyway, I think you should remove the History folder under every altium project root, it's altium zip cache, unable to diff by version control. Or init the Git LFS to manage it more efficiently.

KrutavShah commented 3 years ago

I will add .zip files to the gitignore in that case, thanks for the suggestion. I hope to commit the work I have been working on for the past few days to this repository today.

chraac commented 3 years ago

From the MXM spec v3.1, page 36, the PWR_LEVEL pin define 1 as full power, and should weak pull-up to 3.3v with 100KΩ resistor, I think we should follow the spec.

KrutavShah commented 3 years ago

So the last commit that I made yesterday was simply to route PCIE. Stitching vias and MXM specific pull up and pull down resistors will come next in the next few days. I have all the MXM design papers except for the MXM System Design Guide which is perhaps the most useful.

The things that I’m not sure about how to implement is actually the PWR_EN and TH_OVERT# signals. There may also be some more signals to consider later on that I’m not entirely sure on. For example, newer cards don’t support TMDS/LVDS which means HDMI needs to be connected to DisplayPort.

chraac commented 3 years ago

I think it will be relative easy if we only implement the PWR_EN, from the spec, we can pull-up the PWR_EN when all 12v/5v/3.3v are ready, and then the module will give us a PWR_GOOD within 90ms to enable the signal input. image

And the TH_OVERT# is for over heat shutdown, IMHO, maybe we can just pull-up to 3.3v, leave it for later implementation since we are not on a budget of cooler.

KrutavShah commented 3 years ago

from the spec, we can pull-up the PWR_EN when all 12v/5v/3.3v are ready

But how would you? The idea I had previously is to branch PWR_EN off +5V with a voltage divider (2 resistors) and the reason being that 5V is created the last, and then using the resistor divider turns the 5V into 3.3V. IIRC, PWR_GOOD is not a required signal and can therefore be omitted.

And the TH_OVERT# is for over heat shutdown, IMHO, maybe we can just pull-up to 3.3v

We actually should keep TH_OVERT# because it's a required signal, and while the adapters are supposed to be cheap, I would not remove this important feature just to save a fraction of a dollar. So how do we implement this? One possible solution is with a transistor. If TH_OVERT# is asserted, the transistor will open and send 3.3V directly to PCIE_RESET#. Let me know if this will work, or if you have any comments on the solution.

chraac commented 3 years ago

from the spec, we can pull-up the PWR_EN when all 12v/5v/3.3v are ready

But how would you? The idea I had previously is to branch PWR_EN off +5V with a voltage divider (2 resistors) and the reason being that 5V is created the last, and then using the resistor divider turns the 5V into 3.3V. IIRC, PWR_GOOD is not a required signal and can therefore be omitted.

And the TH_OVERT# is for over heat shutdown, IMHO, maybe we can just pull-up to 3.3v

We actually should keep TH_OVERT# because it's a required signal, and while the adapters are supposed to be cheap, I would not remove this important feature just to save a fraction of a dollar. So how do we implement this? One possible solution is with a transistor. If TH_OVERT# is asserted, the transistor will open and send 3.3V directly to PCIE_RESET#. Let me know if this will work, or if you have any comments on the solution.

Use 2 resistor as voltage divider should be ok since the resistance of PWR_EN to GND is far more bigger than our resistor's. But I had to go to PCIE spec to find which one of 12/5/3.3 come first.

KrutavShah commented 3 years ago

Use 2 resistor as voltage divider should be ok since the resistance of PWR_EN to GND is far more bigger than our resistor's. But I had to go to PCIR spec to find which one of 12/5/3.3 come first.

This is already in the KiCAD design file and will be added to the Altium file when I have time. What I don't understand is how much 5V current is actually needed. MXM specifications says 2.5 Amps is required, but the AMS1117 can only provide 1 Amp. There are buck converters on the market capable of 3 Amps, but they are from companies like Anpec which don't sell on DigiKey or Mouser. I did find one of them on LCSC for $2 but it will take a long time to ship here.

In addition, I need to know how TH_OVERT# will be implemented because it has to assert a PCIE Reset, but how is not known.

chraac commented 3 years ago

Use 2 resistor as voltage divider should be ok since the resistance of PWR_EN to GND is far more bigger than our resistor's. But I had to go to PCIR spec to find which one of 12/5/3.3 come first.

This is already in the KiCAD design file and will be added to the Altium file when I have time. What I don't understand is how much 5V current is actually needed. MXM specifications says 2.5 Amps is required, but the AMS1117 can only provide 1 Amp. There are buck converters on the market capable of 3 Amps, but they are from companies like Anpec which don't sell on DigiKey or Mouser. I did find one of them on LCSC for $2 but it will take a long time to ship here.

In addition, I need to know how TH_OVERT# will be implemented because it has to assert a PCIE Reset, but how is not known.

I did find a 12v to 5v buck converter from TI website - LM2596 SIMPLE SWITCHER® Power Converter 150-kHz 3-A Step-Down Voltage Regulator - and the example circuit look very simple: image Just 2 capacitor, 1 diode and 1 inductor, no extra MOSFET, it's fully integrated.

KrutavShah commented 3 years ago

The LM2596 is huge, and making space for it on such a small board doesn't make as much sense. There are 3A 5V converters like those from Anpec and uPI Group that fit in a very small SOP-8 package and are designed to be used in these electronics. Though they are not sold on sites like DigiKey, so I have to find a good similar alternative.

chraac commented 3 years ago

The LM2596 is huge, and making space for it on such a small board doesn't make as much sense. There are 3A 5V converters like those from Anpec and uPI Group that fit in a very small SOP-8 package and are designed to be used in these electronics. Though they are not sold on sites like DigiKey, so I have to find a good similar alternative.

I think 1 amp from AMS1117 is not sufficient for recent GPU, I also doubt that the SOP-8 integrated convertor is can provide up to 3 amps output, or it will need extra rooms to install the MOSFETs. I gonna find another solution for 12v to 5v on DigiKey.

KrutavShah commented 3 years ago

Actually, in addition to the 2.5 Amps for the GPU MXM card, you will notice on most normal desktop graphics cards that there is a separate AMS1117-5.0 just for powering the HDMI and DVI ports. Since we are using a 3A buck converter, that may be able to spare some current for the display outputs.

https://fscdn.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd9d321efj-e.pdf Take a look at this one I have found for a reasonable price.

chraac commented 3 years ago

Actually, in addition to the 2.5 Amps for the GPU MXM card, you will notice on most normal desktop graphics cards that there is a separate AMS1117-5.0 just for powering the HDMI and DVI ports. Since we are using a 3A buck converter, that may be able to spare some current for the display outputs.

https://fscdn.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd9d321efj-e.pdf Take a look at this one I have found for a reasonable price.

Good to see a sop8 convertor solution for 12v to 5v in such small package. I know that the recent desktop graphic card rely on 12v far more than 5v for supplying GPU and MEM, but, IMHO, the mobile gpu may different since the battery maybe less than 12v, and the peripherals may using 5v usually than 12v(fan and others).

KrutavShah commented 3 years ago

I know that the recent desktop graphic card rely on 12v far more than 5v for supplying GPU and MEM, but, IMHO, the mobile gpu may different since the battery maybe less than 12v, and the peripherals may using 5v usually than 12v(fan and others).

There's a lot more under the hood when it comes to desktop GPUs, as they usually have multiple 5V sources and possibly even multiple 3.3V sources according to the schematics. As far as MXM is concerned, 2.5A should be enough to drive the GPU power controller, clock, and a couple other components. Each HDMI port needs about 50-60 mA @ 5V, and DisplayPort uses 3.3V@500 mA.

I've worked on the design a fair bit, but I can't push it yet until the schematics are corrected, so I hope to get that done soon.

And one more thing: Please move this discussion to the discussions tab, thanks.

KrutavShah commented 3 years ago

Moved to the discussions tab.