universal2600 Posted January 17, 2018 Share Posted January 17, 2018 (edited) Okay i've gotten the basic pcb layout done (mostly) but i wanted to know how well if at all, using a fifo dual port buffer (aka dual ported 64-bit fifo ram and bits as bits not bytes! CY7C408A is whats used in this design since you write to it like a shift register from what im seeing) so the "arduino" is connected to 2 74xxx595 one is used to drive the TIA address bus and the other to provide inputs to the fifo, the [fifo] outputs are connected to the TIA databus (Note: this is a one way route as its designed with only writing to the TIA @ the moment). With said databus being clocked by TIA Phase 0, and the 328p-side fifo Write is simply done by toggling its corresponding 74hc595 pin 9 (serial out/overflow). the goal of that is simply for your arduino (328p) simply uses like the vcs a sort of "kernel" that would allow you to just write to the buffer, cycle the TIA addresses, and while the TIA is reading from FIFO you'd in theory use the arduino(as if @ 20Mhz you'd should have plenty of cycles) to do anything else until an almost empty flag on the fifo triggers a interrupt (there is an interrupt for half full, and the TIA HALT aswell for syncing the 328), and since the fifo is asynchronous (the TIA always reads its values at Phase 0, and arduino can write as fast as it needs) programming necessarily does not need to be as critical (to an extent) with timing. I've attached pics of the pcb, I haven't made a schematic yet...., the schematic that is attached is used for the clock of the TIA, beware The pcb isn't finished but i would say should work...., the goal is to have something that could produce a display and sound, and with the 328p you could be able to use the TIA to its Fullest(or atleast more than atari's) extent Edited January 17, 2018 by universal2600 1 Quote Link to comment Share on other sites More sharing options...
+xucaen Posted January 17, 2018 Share Posted January 17, 2018 Are you making a 2600 clone or some type of 2600 compatible computer? Quote Link to comment Share on other sites More sharing options...
universal2600 Posted January 17, 2018 Author Share Posted January 17, 2018 Are you making a 2600 clone or some type of 2600 compatible computer? In a sense Yes but using the 328p as the "brain", you simply would shift the data to the fifo for the TIA (how much can 64 bytes do in one tia line? I believe it's a 64byte fifo as the datasheet uses words to define the size...) and while the tia is drawing, simply shift your addresses the you need to modify for said line, since the arduino is much faster youd have alot more time per se for more computing, the fifo is there so that you futher reduce how many times you'd need to constantly "refresh" the tia, lets say you 328 would "draw" the line in fifo so when the tia goes to look the info is always there since the output is clocked with The TIA phase 0 output (iirc 1.79mhz) you don't have to worry about keeping cycle accurate timing with arduino, you simply just have the TIA sync to the 328 with rdy/halt when you have to. 1 Quote Link to comment Share on other sites More sharing options...
universal2600 Posted January 17, 2018 Author Share Posted January 17, 2018 In a sense Yes but using the 328p as the "brain", you simply would shift the data to the fifo for the TIA (how much can 64 bytes do in one tia line? I believe it's a 64byte fifo as the datasheet uses words to define the size...) and while the tia is drawing, simply shift your addresses the you need to modify for said line, since the arduino is much faster youd have alot more time per se for more computing, the fifo is there so that you futher reduce how many times you'd need to constantly "refresh" the tia, lets say you 328 would "draw" the line in fifo so when the tia goes to look the info is always there since the output is clocked with The TIA phase 0 output (iirc 1.79mhz) you don't have to worry about keeping cycle accurate timing with arduino, you simply just have the TIA sync to the 328 with rdy/halt when you have to. And no it would not be compatible with 2600 carts, although I do plan on making a 64k vcs sometime in the future 1 Quote Link to comment Share on other sites More sharing options...
universal2600 Posted January 17, 2018 Author Share Posted January 17, 2018 (edited) okay this so far is the pcb finished (as in that it should "work") and cleaned up somewhat, I added the composite out and audio outputs aswell. Board size is 3 x 4 1/8 inches (7.62cm x 10.4775cm for metric inclined) also btw the CY7C408A is 128 byte dual port buffer ram so in 2 64 x 8 buffered chunks, and for the record I am using the NTSC TIA (Now Thats Some Color, lol), not PAL, iirc a few pins are shuffled around on PAL chips, while it isn't a hard thing to fix, PAL TIA's may not function correctly as this board is: composite Video circuit schematic I used (note: this is using PAL Pinout, on NTSC LUMA0 is pin 8.): PS: I recall somewhere that The Tia needs a Vref for color and i remember for proper color, that you need ~4.2V on color delay? Edited January 17, 2018 by universal2600 Quote Link to comment Share on other sites More sharing options...
universal2600 Posted March 9, 2018 Author Share Posted March 9, 2018 (edited) Okay few questions before i begin actually building this; Using a CY7C408A (128byte (64 word x 8 deep) fifo dual port buffer sram) on the tia data bus can you simply use the phase-2 clock to simply clock the output bus, so that data leaves the fifo at the rate of the (6507) clock @ 1.19MHZ since the CY7C408A input/outputs can be clocked asynchronously, TIA data would be written from a shift register controlled by the avr/arduino to the buffer, and the address bus is shifted out aswell when the screen is drawn, which would use AFE flag from the fifo, TIA (cpu)Halt as interrupts to the arduino. I am also thinking of adding a pic18f4550 as a sort of DMA chip, with built-in USB capability, and some external ram. It would emulate tim64t and some of riot functions in the 2600. Kinda like a DMA and portIO chip, it would replace the shift-register on the tia address bus, so the arduino writes to the buffer, and simply writes the list of addresses to ram that the 4550 would need to properly drive the TIA display/sound for the data written, in a way having vcs display Kernel effectively "emulated" on the pic4550 so that all the arduino needs to do is update the frame, keep everything but changes to the display, since tia bits are latched this would less difficult. So since the pic's max clock is 48MHz which imho should be enough to atleast move video and sound data from the buffer to the tia bus or move it to external ram (I would simply connect a HM62256 32kybte ram to the 4550 and simply to have to arduino be able to write to ram using a serial connection to the pic4550. How many bytes would you need to store one NTSC TIA scan line, same for a 128 x 160 frame drawn by the tia? stiaall.jpg circ429.gif stiatb.jpg stiat.jpg stiab.jpg Edited March 9, 2018 by universal2600 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.