From simple AZERTY Falcon project to custom ARM bus master - advice needed please
Posted: 28 Mar 2022 19:43
Hi,
I'm new to Exxos. I posted a quick intro here: https://exxosforum.co.uk/forum/viewtopic.php?f=14&t=5280
I bought myself a project Falcon a few months ago on ebay. I knew it was broken and thought I'd have a go at fixing it. So far progress is middling. I have had a number of breakthroughs but I could use more experienced opinions and info from electronically minded users who can test on a real Falcon.
So, firstly a summary of what happened so far:
* Case smashed in shipping. Fixed, reasonably well, with Acetone.
* Opened up, clearly contains an upgrade - CenTurbo 1 Evolution 3b. Changes all the clocks.
* PSU tested ok on scope with load resistors from Exxos store.
* PSU recapped using kit from Exxos store (Which was perfect, except it was missing one resistor!). PSU still tests ok after!
* RAM module was installed off by one, so moved that to the right place!
* Replaced a broken switch on the CenTurbo 1
* 4 pins were missing on VIDEL. 3 appear NC. The 4th is Ext clock in. I soldered this on to the remaining metal stub.
* Powered on. No CPU clock. I was pleased, since this should be an easy fix! I traced it to a bad GAL16V8 on CenTurbo 1 evolution 3b, clock goes in, does not come out.
* Reprogrammed/replaced GAL. Clock now present and switching works. Was confused at it being 8MHz for a while until I realised the Falcon powers on like that! Machine does not boot though or output anything with diagnostic cart.
* Got CPU on logic analyser using EXT pins. Did not do anything after coming out of reset. No attempted start to a bus cycle (I think, now I wonder - read on).
* Tried to reflow the CPU in case it was a connection issue. Did a TERRIBLE job. I thought it was simple, go round it and heat each pin. I had the iron by accident on lead free temps and lifted some pads. I think just unused ones fortunately.
* Bought equipment to replace CPU (not arrived yet). New 68030FE33, replacement copper pads, uv curable solder mask and uv lamp. Oh and fitted my USB microscope to a boom arm so I can see chips away from the edge of the PCB!
* Desoldered CPU with preheater and hot air at 280degrees. No further damage.
So, given that I had a non-functional falcon with no CPU, that set of expansion pins kept staring at me. I happened to have a bunch of FPGA equipment and boards from my previous projects. So I decided to wire up the SOCkit as a bus master. The SOCkit is a development board that has a Cyclone V SOC chip on it. This is an FPGA with a hard dual core ARM cpu which allows easy mapping of custom logic in the arm memory map. It also has ~100 io pins broken out. So I wired it up to the Falcon expansion, via some 3.3v quickswitch boards.
I then wrote some glue logic to convert from the arm (well really avalon slave) to 68k. This works now (I had to replace GAL U63 first - to fix DTACK!), I can read the ROM and it matches vs one I downloaded. However I can't read/write to ram. If I write then RXW is low, but WE never goes low. When reading the bus is not driven by the ram. I need to check if CAS is low or not.
Anyway I then thought that perhaps the memory needs to be enabled, as of course there are these half moon wait state settings and 2 bits on the ram expansion board. These are all mapped into a register FF8006, which has its own enable signal from COMBEL. However I'm not sure how COMBEL knows the settings! Does the CPU read it and COMBEL snoops? Or does the CPU read it then write it to somewhere in COMBEL? I've failed to find any decent documentation on this. ff8001 appears unused on the falcon. ff8006 is as far as I can tell read only. I can't find any registers to set to store the wait states etc, except in the non-existent falcon 040. I believe the 030 is more like the Sparrow than that.
So I tried to read from FF8006 and do not see the chip select for FF8006 go low at all (pin 43 COMBEL or pin1 on the 74244). Then it reads 0xffff. Now I'm wondering ... is COMBEL most likely broken?
I could try to replace COMBEL with my hot air/preheater. Though I'd like to do some more checks that this is actually what is broken first. Also perhaps I can try addressing some other devices on the board - PSG, DSP, VIDEL etc.
So... looking for advice really on where would be a good place to go next with this one.
Also while posting is there a trick used to easily attach a logic analyser to these fine pitch SMD chips? Working on the 8-bits I'm spoilt with these large through hole chips. I even got a clip so I just get nice pin headers for them all.
I'm new to Exxos. I posted a quick intro here: https://exxosforum.co.uk/forum/viewtopic.php?f=14&t=5280
I bought myself a project Falcon a few months ago on ebay. I knew it was broken and thought I'd have a go at fixing it. So far progress is middling. I have had a number of breakthroughs but I could use more experienced opinions and info from electronically minded users who can test on a real Falcon.
So, firstly a summary of what happened so far:
* Case smashed in shipping. Fixed, reasonably well, with Acetone.
* Opened up, clearly contains an upgrade - CenTurbo 1 Evolution 3b. Changes all the clocks.
* PSU tested ok on scope with load resistors from Exxos store.
* PSU recapped using kit from Exxos store (Which was perfect, except it was missing one resistor!). PSU still tests ok after!
* RAM module was installed off by one, so moved that to the right place!
* Replaced a broken switch on the CenTurbo 1
* 4 pins were missing on VIDEL. 3 appear NC. The 4th is Ext clock in. I soldered this on to the remaining metal stub.
* Powered on. No CPU clock. I was pleased, since this should be an easy fix! I traced it to a bad GAL16V8 on CenTurbo 1 evolution 3b, clock goes in, does not come out.
* Reprogrammed/replaced GAL. Clock now present and switching works. Was confused at it being 8MHz for a while until I realised the Falcon powers on like that! Machine does not boot though or output anything with diagnostic cart.
* Got CPU on logic analyser using EXT pins. Did not do anything after coming out of reset. No attempted start to a bus cycle (I think, now I wonder - read on).
* Tried to reflow the CPU in case it was a connection issue. Did a TERRIBLE job. I thought it was simple, go round it and heat each pin. I had the iron by accident on lead free temps and lifted some pads. I think just unused ones fortunately.
* Bought equipment to replace CPU (not arrived yet). New 68030FE33, replacement copper pads, uv curable solder mask and uv lamp. Oh and fitted my USB microscope to a boom arm so I can see chips away from the edge of the PCB!
* Desoldered CPU with preheater and hot air at 280degrees. No further damage.
So, given that I had a non-functional falcon with no CPU, that set of expansion pins kept staring at me. I happened to have a bunch of FPGA equipment and boards from my previous projects. So I decided to wire up the SOCkit as a bus master. The SOCkit is a development board that has a Cyclone V SOC chip on it. This is an FPGA with a hard dual core ARM cpu which allows easy mapping of custom logic in the arm memory map. It also has ~100 io pins broken out. So I wired it up to the Falcon expansion, via some 3.3v quickswitch boards.
I then wrote some glue logic to convert from the arm (well really avalon slave) to 68k. This works now (I had to replace GAL U63 first - to fix DTACK!), I can read the ROM and it matches vs one I downloaded. However I can't read/write to ram. If I write then RXW is low, but WE never goes low. When reading the bus is not driven by the ram. I need to check if CAS is low or not.
Anyway I then thought that perhaps the memory needs to be enabled, as of course there are these half moon wait state settings and 2 bits on the ram expansion board. These are all mapped into a register FF8006, which has its own enable signal from COMBEL. However I'm not sure how COMBEL knows the settings! Does the CPU read it and COMBEL snoops? Or does the CPU read it then write it to somewhere in COMBEL? I've failed to find any decent documentation on this. ff8001 appears unused on the falcon. ff8006 is as far as I can tell read only. I can't find any registers to set to store the wait states etc, except in the non-existent falcon 040. I believe the 030 is more like the Sparrow than that.
So I tried to read from FF8006 and do not see the chip select for FF8006 go low at all (pin 43 COMBEL or pin1 on the 74244). Then it reads 0xffff. Now I'm wondering ... is COMBEL most likely broken?
I could try to replace COMBEL with my hot air/preheater. Though I'd like to do some more checks that this is actually what is broken first. Also perhaps I can try addressing some other devices on the board - PSG, DSP, VIDEL etc.
So... looking for advice really on where would be a good place to go next with this one.
Also while posting is there a trick used to easily attach a logic analyser to these fine pitch SMD chips? Working on the 8-bits I'm spoilt with these large through hole chips. I even got a clip so I just get nice pin headers for them all.