>On Apr 20, 6:20�am, Mike Harrison <m...@whitewing.co.uk> wrote:
>> On Sun, 19 Apr 2009 22:33:00 +0200, Frank Buss <f...@frank-buss.de> wrote:
>> >Darcio Prestes wrote:
>>
>> >> Hey programmable logic seniors! I'm planning to build an Atari VCS
>> >> 2600 game cartridge in order to play with my "brand new" console
>> >> acquired from ebay. I would like to replace the old fashioned 27C
>> >> series EPROM by a programmable device thus cutting board space and
>> >> (main reason) merging the bankswitching logic and rom file in a single
>> >> device. My requirements are 32k x 8 (64k is a plus) of non volatile
>> >> memory and some space to house a couple of FFs and logic gates (simple
>> >> equations). My question is: which manufacturer, family and/or device
>> >> should I look for? Thanks for sharing your valuable experience with my
>> >> hobby project.
>>
>> >Wikipedia says that the VCS 2600 has a 6507 with 1.19 MHz. So if the bus is
>> >not faster, the easiest solution would be just a microcontroller with
>> >sufficient flash storage, like the STM32 series or the LPC21xx series.
>> >Should be fast enough in a small assembler loop to decode an address
>> >requests, read the flash location and change the data pins to output.
>>
>> With ARM MCUs with fast IO like the NXP LPC series, you can use FIQs on the chip select to give very
>> fast response to external signals - I've read data from an image sensor at 4MHz like this in the
>> past.
>> The only problem is that to get enough on-chip RAM you end up paying for a lot of flash you don't
>> need - and external SRAM usually works out cheaper.
>>
>> However a CPLD plus SRAM may end up being the cheapest overall solution.
>
>To Frank:
>It's true. A fast enough uC can do the job of handling bankswitching
>of games that don't use extra hardware like extra RAM. "Weird"
>cartridge emulation has yet to be tested but in theory it's feasible.
>We just need speed. To given RC reset constant we have ~50 ms to set
>the uC up and running. Yes, it should be enough time.
>
>To Nico:
>The 6507 processor used in VCS2600 can address up to 8 kb. The ROM
>(games) is mapped into the higher 4 kb and console's internal RAM and
>peripherals are at lower 4 kb. This is controled by A12 address pin.
>The cartridge just house the ROM chip. All control and timming is done
>by the console itself.
>The LPC family is fine because the address bus can be applied direct
>to its pins due the 5V tolerance. Level translators would be used only
>in data bus. In this case we can use the device suggested by Yann.
>
>To Gregory:
>What we need to consider is the 6507 processor read timming. The
>datasheet in my hands was scanned in low-res and thus hard to read it.
>As far as I can interpret it, we have ~600 ns to put data on bus after
>an address change and keep it valid for ~100 ns.
That should be just about doable on the LPC ARM - the fast IO modes on the NXP parts can make a big
difference, but would carefully crafted assembler FIQ code ( running in RAM for max speed) , and
make good use of dedicated FIQ register bank to minimise context switch. Fortunately ARM is a very
good target for writing assembler, and you can often do a lot in one instruction.
>To Mike:
>If we decide to use a uC, I would go for a LPC2142 (ARM7 - 64 kb FLASH
>- 16 kb RAM - 60 MHz). At digikey we get micro_controller +
>level_translator + voltage_regulator for ~$ 10.00 USD.
LPC213x is slightly cheaper - only difference is it doesn't have USB. LPC series is 5V tolerant so
may not need level translation. If the input side of the VCS uses TTL levels, then you can probably
get away with driving with 3.3v. CMOS is marginal.
>Can we get a cheaper CPLD solution?
Probably in chip-count terms, if you can keep it under 72 macrocells the xilinx xc9572 is very cheap
- above this things get more expensive.
However a MCU will give a lot more flexibility, and doesn't need any special hardware to program -
LPCs can be programmed via the UART with the on-chip bootloader. .
Reply by Darcio Prestes●April 21, 20092009-04-21
On Apr 20, 6:20=A0am, Mike Harrison <m...@whitewing.co.uk> wrote:
> On Sun, 19 Apr 2009 22:33:00 +0200, Frank Buss <f...@frank-buss.de> wrote=
:
> >Darcio Prestes wrote:
>
> >> Hey programmable logic seniors! I'm planning to build an Atari VCS
> >> 2600 game cartridge in order to play with my "brand new" console
> >> acquired from ebay. I would like to replace the old fashioned 27C
> >> series EPROM by a programmable device thus cutting board space and
> >> (main reason) merging the bankswitching logic and rom file in a single
> >> device. My requirements are 32k x 8 (64k is a plus) of non volatile
> >> memory and some space to house a couple of FFs and logic gates (simple
> >> equations). My question is: which manufacturer, family and/or device
> >> should I look for? Thanks for sharing your valuable experience with my
> >> hobby project.
>
> >Wikipedia says that the VCS 2600 has a 6507 with 1.19 MHz. So if the bus=
is
> >not faster, the easiest solution would be just a microcontroller with
> >sufficient flash storage, like the STM32 series or the LPC21xx series.
> >Should be fast enough in a small assembler loop to decode an address
> >requests, read the flash location and change the data pins to output.
>
> With ARM MCUs with fast IO like the NXP LPC series, you can use FIQs on t=
he chip select to give very
> fast response to external signals - I've read data from an image sensor a=
t 4MHz like this in the
> past.
> The only problem is that to get enough on-chip RAM you end up paying for =
a lot of flash you don't
> need - and external SRAM usually works out cheaper.
>
> However a CPLD plus SRAM may end up being the cheapest overall solution.
To Frank:
It's true. A fast enough uC can do the job of handling bankswitching
of games that don't use extra hardware like extra RAM. "Weird"
cartridge emulation has yet to be tested but in theory it's feasible.
We just need speed. To given RC reset constant we have ~50 ms to set
the uC up and running. Yes, it should be enough time.
To Nico:
The 6507 processor used in VCS2600 can address up to 8 kb. The ROM
(games) is mapped into the higher 4 kb and console's internal RAM and
peripherals are at lower 4 kb. This is controled by A12 address pin.
The cartridge just house the ROM chip. All control and timming is done
by the console itself.
The LPC family is fine because the address bus can be applied direct
to its pins due the 5V tolerance. Level translators would be used only
in data bus. In this case we can use the device suggested by Yann.
To Gregory:
What we need to consider is the 6507 processor read timming. The
datasheet in my hands was scanned in low-res and thus hard to read it.
As far as I can interpret it, we have ~600 ns to put data on bus after
an address change and keep it valid for ~100 ns.
To Mike:
If we decide to use a uC, I would go for a LPC2142 (ARM7 - 64 kb FLASH
- 16 kb RAM - 60 MHz). At digikey we get micro_controller +
level_translator + voltage_regulator for ~$ 10.00 USD.
Can we get a cheaper CPLD solution?
Reply by Mike Harrison●April 20, 20092009-04-20
On Sun, 19 Apr 2009 22:33:00 +0200, Frank Buss <fb@frank-buss.de> wrote:
>Darcio Prestes wrote:
>
>> Hey programmable logic seniors! I'm planning to build an Atari VCS
>> 2600 game cartridge in order to play with my "brand new" console
>> acquired from ebay. I would like to replace the old fashioned 27C
>> series EPROM by a programmable device thus cutting board space and
>> (main reason) merging the bankswitching logic and rom file in a single
>> device. My requirements are 32k x 8 (64k is a plus) of non volatile
>> memory and some space to house a couple of FFs and logic gates (simple
>> equations). My question is: which manufacturer, family and/or device
>> should I look for? Thanks for sharing your valuable experience with my
>> hobby project.
>
>Wikipedia says that the VCS 2600 has a 6507 with 1.19 MHz. So if the bus is
>not faster, the easiest solution would be just a microcontroller with
>sufficient flash storage, like the STM32 series or the LPC21xx series.
>Should be fast enough in a small assembler loop to decode an address
>requests, read the flash location and change the data pins to output.
With ARM MCUs with fast IO like the NXP LPC series, you can use FIQs on the chip select to give very
fast response to external signals - I've read data from an image sensor at 4MHz like this in the
past.
The only problem is that to get enough on-chip RAM you end up paying for a lot of flash you don't
need - and external SRAM usually works out cheaper.
However a CPLD plus SRAM may end up being the cheapest overall solution.
Reply by Frank Buss●April 20, 20092009-04-20
Gregory Estrade wrote:
> IMO, there are some issues that prevent from doing that :
> - Some cartridges have werid bankswitching schemes, some others
> contain additional RAM, so even at 50Mhz or so, your assembler loop
> may not fit in a VCS clock cycle. And for the LPC2xxx series, even the
> ones with "fast I/O" can't switch over 15-16Mhz, IIRC.
You are right, this could be interesting. The bankswitching I've found
doesn't look complicated:
http://www.scribd.com/doc/5439358
It is just a read from a magic address to switch banks. Simulating 256
bytes RAM works by providing write access from 0x1000 to 0x10ff and read
access for the same memory by accessing 0x1100 to 0x11ff. But the E7 method
might be a bit more complicated.
So I think the standard catridge with a 4k eprom simulation should be no
problem. If there are problems with the 3.3V output of the microcontroller
(might be not enough voltage for the data out), you'll need additional
level translation chips. A PIC might be better, e.g. the PIC18F2420, which
works with 5V power supply and up to 40MHz.
But you have to carefully read the timing diagrams of the Atari system and
the PIC and check if it is possible to implement the more complex bank
switching concepts. Each port write and read of the PIC needs already 8
clocks, so might be too slow.
> - VCS2600 has not reset switch (the reset switch on the front panel
> doesn't perform a reset of the machine), and the power-on reset delay
> is very small. Your MCU might not have the time to perform its own
> initialization code. Well, in this case you could still use a separate
> power supply.
On 19 avr, 22:33, Frank Buss <f...@frank-buss.de> wrote:
> Darcio Prestes wrote:
> > Hey programmable logic seniors! I'm planning to build an Atari VCS
> > 2600 game cartridge in order to play with my "brand new" console
> > acquired from ebay. I would like to replace the old fashioned 27C
> > series EPROM by a programmable device thus cutting board space and
> > (main reason) merging the bankswitching logic and rom file in a single
> > device. My requirements are 32k x 8 (64k is a plus) of non volatile
> > memory and some space to house a couple of FFs and logic gates (simple
> > equations). My question is: which manufacturer, family and/or device
> > should I look for? Thanks for sharing your valuable experience with my
> > hobby project.
>
> Wikipedia says that the VCS 2600 has a 6507 with 1.19 MHz. So if the bus is
> not faster, the easiest solution would be just a microcontroller with
> sufficient flash storage, like the STM32 series or the LPC21xx series.
> Should be fast enough in a small assembler loop to decode an address
> requests, read the flash location and change the data pins to output.
>
> --
> Frank Buss, f...@frank-buss.dehttp://www.frank-buss.de,http://www.it4-systems.de
IMO, there are some issues that prevent from doing that :
- Some cartridges have werid bankswitching schemes, some others
contain additional RAM, so even at 50Mhz or so, your assembler loop
may not fit in a VCS clock cycle. And for the LPC2xxx series, even the
ones with "fast I/O" can't switch over 15-16Mhz, IIRC.
- VCS2600 has not reset switch (the reset switch on the front panel
doesn't perform a reset of the machine), and the power-on reset delay
is very small. Your MCU might not have the time to perform its own
initialization code. Well, in this case you could still use a separate
power supply.
Reply by Nico Coesel●April 19, 20092009-04-19
Frank Buss <fb@frank-buss.de> wrote:
>Darcio Prestes wrote:
>
>> Hey programmable logic seniors! I'm planning to build an Atari VCS
>> 2600 game cartridge in order to play with my "brand new" console
>> acquired from ebay. I would like to replace the old fashioned 27C
>> series EPROM by a programmable device thus cutting board space and
>> (main reason) merging the bankswitching logic and rom file in a single
>> device. My requirements are 32k x 8 (64k is a plus) of non volatile
>> memory and some space to house a couple of FFs and logic gates (simple
>> equations). My question is: which manufacturer, family and/or device
>> should I look for? Thanks for sharing your valuable experience with my
>> hobby project.
>
>Wikipedia says that the VCS 2600 has a 6507 with 1.19 MHz. So if the bus is
>not faster, the easiest solution would be just a microcontroller with
>sufficient flash storage, like the STM32 series or the LPC21xx series.
>Should be fast enough in a small assembler loop to decode an address
>requests, read the flash location and change the data pins to output.
I think that will actually work. IIRC the old Motorola controllers use
an extra E signal to distingiush between the address selection and
data cycle. But you'll need the LPC2000 series with fast I/O and they
are fully 5V tolerant. The ST peripherals are crap.
--
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
"If it doesn't fit, use a bigger hammer!"
--------------------------------------------------------------
Reply by Frank Buss●April 19, 20092009-04-19
Darcio Prestes wrote:
> Hey programmable logic seniors! I'm planning to build an Atari VCS
> 2600 game cartridge in order to play with my "brand new" console
> acquired from ebay. I would like to replace the old fashioned 27C
> series EPROM by a programmable device thus cutting board space and
> (main reason) merging the bankswitching logic and rom file in a single
> device. My requirements are 32k x 8 (64k is a plus) of non volatile
> memory and some space to house a couple of FFs and logic gates (simple
> equations). My question is: which manufacturer, family and/or device
> should I look for? Thanks for sharing your valuable experience with my
> hobby project.
Wikipedia says that the VCS 2600 has a 6507 with 1.19 MHz. So if the bus is
not faster, the easiest solution would be just a microcontroller with
sufficient flash storage, like the STM32 series or the LPC21xx series.
Should be fast enough in a small assembler loop to decode an address
requests, read the flash location and change the data pins to output.
--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de,http://www.it4-systems.de
Reply by Darcio Prestes●April 19, 20092009-04-19
On 19 abr, 15:39, whygee <why...@yg.yg> wrote:
> Antti.Luk...@googlemail.com wrote:
> > The ONLY part that satisfies ALL requirements is: ice65L16 from SiliconBlue
>
> A SBt employee told me that it is not available very soon (end of year ?).
> On top of that, is it 5V-tolerant on enough pins ?
>
> > Antti
>
> yg
> --http://ygdes.com/http://yasep.org
YG brought an important question. The data bus is 8 bit wide and
address bus is 12 bit wide. I want to add 4 switches so the count is
24 pins or higher.
Reply by whygee●April 19, 20092009-04-19
whygee wrote:
> I think that the ice65L16 is going to take too much time to appear on
> the market and mature, for such a "little project".
However, when it becomes ready, and if a suitable package
(like QFP100, not BGA or QFN) is available, this would be
perfect : one could store 4 different games without effort,
because the chip can read 4 off-chip images (including SRAM contents)
depending on the state of 2 inputs pins. But how much will it cost ?
yg
--
http://ygdes.com / http://yasep.org
Reply by Darcio Prestes●April 19, 20092009-04-19
On 19 abr, 15:39, whygee <why...@yg.yg> wrote:
> Antti.Luk...@googlemail.com wrote:
> > The ONLY part that satisfies ALL requirements is: ice65L16 from SiliconBlue
>
> A SBt employee told me that it is not available very soon (end of year ?).
> On top of that, is it 5V-tolerant on enough pins ?
>
> > Antti
>
> yg
> --http://ygdes.com/http://yasep.org
YG brought an important question. Data bus is 8 bit wide and address
bus is 12 bit wide. I want to add 4 switches so the count is 24 pins
or higher.