CountChocula wrote:
You can find it on Aliexpress for ~2-3 USD per—of course, with the usual caveat of buying things from Aliexpress (though I will say I haven't had much trouble with them at all).
The 3.3V supply does present a bit of a problem, but I suspect that would apply to most CPLDs/FPGAs of decent capabilities; I'm going to try interfacing to my SBC through a TX0608e, but I'm also noodling with switching over my design to 3.3V just to see what the tradeoffs are in practice.
hmm, i have never used Aliexpress before, and seeing all the horror stories of the quality of products i'm rather hesitant to try it, plus since it's an SMT package you can only really test the ICs after you soldered them onto a board, which does make it more risky.
running a whole SBC at 3.3V shouldn't be much of an issue, the 65C02/816 can likely run at 16MHz at 3.3V, and 3.3V SRAM/FLASH is insanely cheap.
for example you can get 10ns 32kB SRAM for like 1.30 EUR/USD on Mouser, and 70ns 128kB FLASH for 1.20 EUR/USD.
downside is that you'll have to solder SMT when dealing with 3.3V Systems as not everything is aviaible in socket-able packages like PLCC or DIP.
CountChocula wrote:
Very cool! I really wanted to implement a tilemap, but I just couldn't figure out how to fit it in the available space, so I made a different set of compromises. That's definitely in the to-do list for my next design, though… when I eventually get to it
honestly when i made my version i did kinda cheat.
I'm using a Logic Simulator called
Digital to design and test the VGA circuit (it has a very accurate built-in VGA component) and when i'm done i just go to file -> export to Verilog, and then import that into Quartus II.
it has worked perfectly so far, but it also means i'm probably wasting some performance/logic compared to just writing Verilog myself.
CountChocula wrote:
Yes, that is an intriguing thought, though I wonder whether having to serialize everything would end up affecting performance too much. My design also only needs unidirectional level shifting, which does simplify things a little bit.
specifically i've been thinking of using
these IO Expanders to connect any kind of 8-bit Parallel peripheral via SPI, though something like a sound chip seems like a better idea as that doesn't need a lot of bandwidth compared to a video circuit that could require updating the whole screen 60 times per second or more.
it would still be an interesting idea because then you could also hook it up to a Microcontroller, just imagine an Arduino with good video output that doesn't stress the MCU!
CountChocula wrote:
Thanks for the font! I will give it a go. I'm still a bit unsure about what to do for sound, TBH—I've been putting that off till the end while I was trying to figure out the rest, and video seemed like a harder nut to crack (and it was… I've been trying to build a video interface using discrete logic for months!). My current thinking is to use some kind of MCU; there are some from Microchip that come with dual DACs and enough memory to make a synthesizer possible. With a CPLD, I would be worried about having enough room to store wavetables, though the MAX II does come with 1kiB of flash RAM, so it might work in the end.
Another thing I want to play with is replacing the 50MHz oscillator on that board with a 100MHz one to see if it still works reliably. That would double the number of memory accesses that can be performed in between pixels, thus opening up some interesting possibilities.
Cheers!
you only need a wavetable for sine (or other complex waves). Square, Triangle, Sawtooth, and Noise can all be made using binary counters (and an LFSR for noise).
the main problem is just timing, dividing the input clock down enough that you can make audiable noises. even at 1MHz you need a 16-bit counter to reach the bottom of human hearing (15.25Hz).
anyways this is about video and i don't want to derail the thread.
100MHz for 640x480 would give you 4 Memory cycles for each pixel. in theory that allows for 32-bit color per pixel. seems a bit overkill though.
my VGA controllers both run at 25MHz and access Memory at 12.5MHz. the bitmap one needs 1 memory cycle every 8 pixels (or 16 cycles), the tilemap one needs 3 memory cycles per 8 pixels (or 16 cycles).
if you want to you can check out my Tile based VGA Circuit:
Attachment:
ATF1508-VGA-40Tx30T.zip [29.06 KiB]
Downloaded 253 times
but be warned that even i barely know what is happening in there, so it might not be that useful.
but if you want to try out Digital for yourself maybe you can make use of it (the SNYC circuit is pretty solid and can be used for something else)