Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Low voltage SPI bus compatability #10

Closed
osresearch opened this issue Jun 26, 2019 · 14 comments
Closed

Low voltage SPI bus compatability #10

osresearch opened this issue Jun 26, 2019 · 14 comments
Labels
enhancement New feature or request question Further information is requested

Comments

@osresearch
Copy link
Owner

The GPIO pins are set at the 3.3v signalling right now. Can the bitstream select 2.5v or 1.8v at runtime?

@osresearch osresearch added enhancement New feature or request question Further information is requested labels Jun 26, 2019
@goran-mahovlic
Copy link

If you remove RV3, and put 3 pin jumper on J5 - you can easy switch left side Voltage from 3.3V to 2.5V

I need to ask emard if 1.8V can be used ...

@goran-mahovlic
Copy link

You can connect 1.8V on middle pin if J5 that will give you 1.8V on left side of the board.
We did not try if LEDS will be visible on 1.8V but you can check that...

Or you can use 1N914 diode on RV2 position (you would need to remove resistor from RV1)
That would give you 2.5V - 0.7V (diode) = 1.8V on left side ....

@emard
Copy link

emard commented Jun 26, 2019

Remove RV3 jumper first! Connecting both RV2 and RV3 will overvoltage the FPGA.

Solder 2.54 mm 90 deg 3-pin angled headers
On this header at 2.5V jumper position (RV2)
connect small general purpose silicon diode with 0.7V drop
like 1N914 for 100mA or higher current rated if you need more current.
2.5V-0.7V = 1.8V
Drawback would be that LEDs will be too dim or not lit at all but left
GPIO banks (pin pairs GP,GN 0-13) should be operating at 1.8V

It is probably not possible to switch GPIO bitstream voltage setting
at runtime but I guess you can leave that fixed set to 2.5V or 3.3V
and just apply 1.8V supply.

some hi speed signal timings should be not optimal in such case,
but for the slow SPI flash emulation it should be good enough.

@osresearch
Copy link
Owner Author

There might be an even easier hack to get the right voltage on the SPI bus outputs - if I remove RV3 and solder a header to connect to the mainboard's SPI Vcc, then the left IO bank will be correctly powered for whatever the board expects. Are there any problems if the J5 center pin is floating or grounded some of the time?

@osresearch
Copy link
Owner Author

This hardware mod seems to work. The lack of LEDs is a minor problem, although once the mainboard comes online they are fine. I've only tested on a 3.3v mainboard; the 1.8v one went away while I was soldering.

@emard
Copy link

emard commented Aug 29, 2019

HI

I was testing boards with voltage selection pin floating (no RV2 no RV3).
Boards are working except of course related hardware LEDs DIPSW that's
not powered, so temporary not working. I can hotplug RVx jumper at any time
and LEDs and everything starts working. Of course external power can be applied
and this is just fine for ULX3S but it will draw current.

external power can be weak or current limited. To save few mA
don't use LEDs or any other related bank pin that's not really neccessary.

ULX3S has some C at this RV2/RV3 I think around 30uF, so at powerup
it will also draw current initially until C is charged.

@osresearch
Copy link
Owner Author

osresearch commented Aug 30, 2019

Re-opening since this seems to be problematic with starting the user bitstream.

With no voltage on the bank, the user bitstream resets to the bootloader almost instantly. Perhaps the pullup for BTN0 is wired to this rail, so the bitstream thinks that the user is pressing the reset button.

@osresearch osresearch reopened this Aug 30, 2019
@emard
Copy link

emard commented Aug 30, 2019 via email

@emard
Copy link

emard commented Aug 30, 2019 via email

@osresearch
Copy link
Owner Author

As of yesterday I added a power button to user_program connection... 851c737

It looks like the other buttons are wired to 3.3v on a different bank, so I can move the "reboot" function to those instead.

@emard
Copy link

emard commented Aug 30, 2019 via email

@osresearch
Copy link
Owner Author

Thanks for the advice! Remapped to button RIGHT and it seems to work fine 64f41b6...37beda0

@osresearch
Copy link
Owner Author

osresearch commented Sep 3, 2019

IMG_20190902_094739

This modification worked on an ASUS x370-pro board with AMD CPU running the flash at 1.8v via the programming header.
Three caveats, however:

  • the board had no flash chip installed so TOCTOU/override mode was not tested
  • the x86 flash speed was not selectable, so we were only able to emulate the PSP boot and legacy reset vector
  • the LEDs do not light up.

@emard
Copy link

emard commented Sep 3, 2019 via email

osresearch added a commit that referenced this issue Oct 1, 2019
With the pullups enabled the AST2400 won't make it past DRAM
training, likely due to bad reads.  The I/O pins were moved as
part of the variable voltage support (#10), but the LPF was not
updated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants