


--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/9d73a81a-6b57-4517-ac8c-3883cde610c8n%40googlegroups.com.
Hi Jesús! I really love this project — it has great potential for implementing a bunch of different systems very easy.
I’m throwing out a few ideas that overlap with things I’m working on and that I think could fit in somehow — but as always, just disregard them if they don’t make sense.
On one hand, since you’re already including the PS/2 connector, maybe you could add a USB connector in parallel (so you could use either USB or PS/2), for example to connect a USB joystick. I published the joystick controller some time ago along with the USB mouse one — maybe it’s trying to squeeze too much in and doesn’t really make sense, but I’ll throw it out there in case you see any potential in it.
On the other hand, what I do see as more interesting would be adding a PSRAM. I’m using this model:
https://w.electrodragon.com/w/images/0/04/LY68L6400_0.3.pdf
I’ll share some blocks with you soon. The results seem excellent considering how inexpensive they are (I still need to test with other PSRAM chips that theoretically use the same protocol — I already have them but haven’t soldered them yet).
The idea would be to literally place it in parallel with the microSD, with the CS inverted, so we can select either the microSD or the PSRAM. It’s not a huge memory, but 64 Mbit is already enough for many things, and the read speed comfortably doubles that of the Alhambra’s flash, while the write speed is literally the same as the read speed (which would be a big improvement).
The only pity is not having two extra lines available to use it in QSPI mode, which makes a big difference (we’d get very interesting speeds from the memory there, but oh well — it is what it is). Although the I²C pins from the ADC are still free, with their pull-ups and the risk of the ADC recognizing a command by accident, contention would be guaranteed.
To make everything fit, what comes to mind is using vertical connectors for the microSD and for the USB (or only for the PSRAM, or only for the USB).
I used this one not long ago and the result was excellent — it’s easy to solder by hand and insertion and removal are super convenient:
https://www.digikey.es/es/products/detail/aces-connectors/MSDV-2108-BK33T/22208760?gad_source=1&gad_campaignid=20199916455&gbraid=0AAAAADrbLli-krHhKF9oRUCs5n11i2zR6&gclid=CjwKCAjw6vHHBhBwEiwAq4zvA5SFw1x14raSUUmMCzUaXamZVd8pWAU29zEOVTLHj6kSHs4aANStoxoCi7sQAvD_BwE&gclsrc=aw.ds
By placing it vertically, I think the PSRAM could fit perfectly in parallel within the same footprint where you currently have the microSD lying flat.
These are just a few simple ideas in case you find them interesting.




--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.




--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.




English. :
Hello everyone!
I wanted to let you know that Jesús and I are going to donate a prototype of Jesús’s shield to some people on the list. We’ve made them by hand with great care, hoping this will be a truly enriching experience for everyone and something we can enjoy together as a community. I hope it turns out to be a great experience and the first of many more like this :)
We won’t be able to send boards to everyone we would like to. Each board requires a significant personal and financial effort, and some people unfortunately fall outside of what we can manage right now.
If there is general interest in the shield, you can count on me to organize a production batch at a fair price to cover minimal costs. We’ll leave that possibility open for the coming months.
This little board is going to give the Alhambra superpowers—it will turn it into a true learning platform where you can work at the highest level, comfortably using Verilog or Icestudio.
I’m sharing a link so as not to overload this message with photos of the assembly and a video inspecting the soldering. In the first prototype I took the opportunity to experiment with some new materials, so the board can still be improved, but I’m leaving it here in case it’s of interest to anyone:
If there is general interest in the shield, you can count on me to organize a production batch at a fair price to cover minimal costs. We’ll leave that possibility open for the coming months.
This little board is going to give the Alhambra superpowers—it will turn it into a true learning platform where you can work at the highest level, comfortably using Verilog or Icestudio.
I’m sharing a link so as not to overload this message with photos of the assembly and a video inspecting the soldering. In the first prototype I took the opportunity to experiment with some new materials, so the board can still be improved, but I’m leaving it here in case it’s of interest to anyone:
https://drive.google.com/drive/folders/1axAZUAIw__CJzvaYTYQvh0KHISqWaLon?usp=sharing



*pd++=*ps++; ->Debbugger to PSRAM (0x10000000).
then
f(); -> Junmp to PSRAM.
If this works i don't understand why the test fails XD
i'm reviewing all in deep, thanks again for this awesome system, this is a great base to make great things.

ENGLISH.
Hello everyone! I’d like to share some progress. I’ve put my PSRAM modules on hold because I think it’s very interesting to give some attention to Jesús’s microcomputer — we can learn a lot from it.
I got down to work and fixed Jesús’s PSRAM module. I found several timing and protocol errors; now it works in quad mode with complete stability as long as the SD card is not connected (I’ll explain this adventure in a moment).
I’ve also stabilized the SD module and its interaction with the PSRAM and the system. The result is that now all my SD cards work. I’ve tested six of them, two of which were newly bought just for testing (cheap ones from a Chinese shop that you’d normally think “this will definitely fail”… well, they don’t — they work perfectly, including the ones that initially didn’t work).
What I haven’t managed to do is use the SD card and the PSRAM at the same time. Still, I’ve learned a huge amount this week and it’s been a very interesting journey. In fact, I’m planning to document it and share it with you, because there are some really cool oscilloscope captures.
The point is that we basically have two problems, and I’ll explain them in case ideas come up for future board revisions.
Hardware problem. With the resistors we currently have in place, the signal arrives very distorted, and at 25 MHz we are right at the limit of stable PSRAM operation. If there’s no SD card, the signal works fine. In fact, on my modules with only PSRAM, it works perfectly at 100 MHz with CDC. But when the SD card is added, the line impedance increases and that’s basically instant death: as soon as the PSRAM performs operations with long data cycles, a lot of corrupted data appears. In the code I’m sharing, with the SD inserted it can correctly read the PSRAM size, but the validation then fails.
I’ve tried things like changing the resistor on the shared line, reinforcing the pull-up by changing it to 2 kΩ and then to 1 kΩ. Although this didn’t fully solve it, long write tests became super stable. In fact, I now have the board tuned with the 1 kΩ resistor; I hope this works just as stably for you as it does for me. I’m planning to build another one with 10 kΩ so I can compare.
Another issue is that the design doesn’t go beyond 25 MHz. If, in the PNR in the Makefile, we change the target frequency from 8 to 25, it never manages to synthesize the circuit (at least my version with fixes; while writing this I realized I haven’t tested the original version). This is possibly because, in the PSRAM module, the combinational logic creates a very long path and the PNR tool is not able to guarantee timing. Coincidentally, we are right at the limit of one of the ranges specified in the chip’s own datasheet for 25 MHz. So, if we are already right at the edge for the PSRAM to work and our circuit doesn’t always guarantee that minimum speed, once the SD card is inserted everything falls apart.
My theory is that by lowering the system speed we could get SD and PSRAM working together with the same code, but I haven’t tested it because VGA is fundamental and we would lose it. Still, it’s something to keep in mind for future tests.
For now, I think the system is more than functional and interesting, being able to use either SD or PSRAM.
I hope this code is useful to you. If anyone is interested in digging deeper into any part of this, just say so.
I’ve put my PSRAM modules on hold for now because I want to rethink the interface to avoid using inout. I’ve learned quite a bit in the process, and although they work very well on their own, if we want to interact with the SD (or be able to switch between SD and PSRAM in the same system), Yosys is not able to synthesize it correctly, even if the Verilog itself is correct. As soon as I add a mux with the SD, Yosys gets confused and breaks the inout. I’ve tried many alternatives without success, but with everything I’ve learned I have in mind a refactor and a new module that will act as an inout proxy, which I think will be very interesting and will solve this problem. That will come later though — for now I want to move forward with things around this little machine.
A hug!
--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.