Jump to content
IGNORED

To infinity and beyond... (new hardware)


Spaced Cowboy

Recommended Posts

The project that's been soaking up all my spare time recently has now come to its natural end, the party is over, and everyone had a great time. With that done, time to turn to the next one on the list...

 

For some time now I've been toying with the idea of expanding the XL I have in the attic - then the 1088XEL came along, and MacRorie was good enough to build me one [in fact 2, but that's a different story] while I was otherwise engaged (see above link [grin]). In my "copious free time"[tm], I've been throwing ideas back and forth in my head, culminating in what is described here - the PBIO. Most of the details for what I've worked out so far are at that link, but...

 

System Summary:

 

The basic idea is:

  • To provide easy hardware expansion, and to make that hardware (to the extent that it is possible) platform-neutral.
  • To make it plug-and-play
  • That it should be transparent to the system unless in active use
  • That it should be elegant, or at least as elegant as an expansion chassis can physically be
  • That it ought to be not-too-expensive
  • That it ought to exploit the possibilities it offers as best it can
  • That it ought to integrate well with the hardware available, including such things as the 1088XEL.

So, the totally enclosed system would see the use of a Cooler Master Elite 110 enclosure, which also contains the 1088XEL and provides 8 slots + 2 full-height PCIe slots, one of which might be useful as a cartridge slot.

 

Alternatively, the 800XL or 130XE user can plug into the Parallel bus or 'ECI port' on the back of the stock machine, and get identical features, even if its a little bulkier. As mentioned on the website, if there's sufficient demand, it'd be possible to get a custom case engineered - I'd prefer a mini-ITX footprint to match the H60/H80 cases that 1088XEL users have been generally going for, but options are open.

 

What is also worth mentioning is that the host-interface (the part that plugs into the host machine via parallel bus or ECI port) will contain an XMOS CPU with 16 hardware threads, only 5 or so of which will be required for the PBIO itself. This PCB will also supply 32MBytes of SDRAM, mappable into the host computers address space using an enormously flexible register-descriptor approach, although it would also be possible to emulate the Pokey port-B interface since the XMOS chip will be monitoring all bus traffic.

 

The host interface will also provide an SD-card interface with async I/o to the SDRAM. The SD card and SDRAM in and of themselves will provide huge benefits to the 8-bit computer, even if the user never uses or buys the parallel bus expansion unit. One example might be to place screen RAM into the SDRAM-mapped area, and have the XMOS blit data around within the 8k of screen during vblank, effectively getting a GPU by manipulating a few registers in a VBI.

 

Another use might be to massively speed up floating point ops - effectively getting an FPU. Another use might be to provide timing interrupts at a very high granularity - it ought to be possible to do interrupts on a position along the horizontal scan-line basis, for example - there are built-in high-resolution timers on XMOS chips, and they are completely predictable in terms of response time.

 

As far as using the parallel bus expansion hoes, data transport will be via an 'xlink' - basically a 100 Mbit/sec link between any XMOS core and any other XMOS core. In this case we'll be using transceivers to push the signal over cat-6 ethernet from host to expansion box and back. Once the XMOS in the expansion chassis has received a message asking/telling it something, it can interact with the plug-in devices, get any required data, package it up and send it back over the wire to the host interface, which in turn relays it to the 8-bit host.

 

This means the plug-in card is isolated from any particular host interface, and only needs to understand the message protocol between XMOS and plug-in card (a simple eSPI-like protocol). This allows for a level of portability (you'd still have to port the software that makes use of the device) between different computer systems, thus allowing for a standard hardware interface across different platforms.

 

 

Where are we at:

 

I've designed the PCB for the host interface for an XE (actually for the [second, sigh] 1088XEL that'll be winging its way towards me RSN :) and I've got some of the components soldered in on that board already - the XMOS is in and I'm working on the power circuitry so I can bring things up in a piece-meal fashion to try and keep the magic smoke inside the chips as long as possible.

 

I've also designed an ECI PCB I can connect a logic analyser to, which I can then use to capture and record timings of a real XE bus, which will be useful for:

 

The PCB that sits on the back of the STM Nucleo board and provides an ECI port. I can then use the STM to produce bus stimulations that mimic the XE but within a controlled environment that will make it much easier to debug.

 

There's a long way to go, its early-days yet and things might not go as I forsee, but even though the goal is grandiose, I think it's attainable and it'll be pretty cool once it's up and running.

 

Some pre-answers:

 

How much will it cost ? As with all electronics projects, that depends on volume. A good goal price for the parts would be between $100 and $150 including enclosure. This, however, is not set in stone, its a seat-of-the-pants guesstimate. It might be possible just to make available just the host interface, in which case you might be looking at about half that. Note that this doesn't include assembly, which is again a highly volume-sensitive cost.

 

Will you be providing this as a complete package ? If there is sufficient interest, because it's so volume-sensitive, I might be persuaded. I'll only be acting as a distributor though, all the fabrication and assembly will be done by other companies - I have zero interest in soldering hundreds of 0.4mm chips :)
Are you aware of the 1090XLR from dropcheck ? Well, yes, or this question wouldn't be here [grin]. I think this project is aimed slightly differently - the goal is to be cross-platform - and I've not heard/seen much from dropcheck about it for a year or so. Certainly the design here is quite different with the serialization of the parallel bus, and the messaging protocol between devices and host. Besides, I might be the only person with an interest in easily interfacing hardware to the micro :)
What's with the custom case(s) ? I think it's much nicer to have a plastic case around electronics than have bare PCBs anywhere. My day job has bare PCBs everywhere... There's generally some NRE and then it's a reasonable ($20 or so) per case if you can get to quantity-100. It's 50% more if you order in quantity-50. We'd need 2 cases in general, one for the back of the 8-bit host, and one for the expansion cards themselves, so $40 in base cost once the NRE has been paid (assuming quantity-100). This is still cheaper than the CoolerMaster Mini-ITX case, and you get the custom design and printing, but you do need the quantity...
That's enough typing, my fingers are tired. Over to y'all :)
  • Like 11
Link to comment
Share on other sites

Spaced Cowboy nice project :thumbsup: :) .

 

As I was reading through your website I couldn't help but notice your desire to be able to power up the whole system in the case of integrating a 1088XEL with your expansion system. Just so you know, there is provision for doing so already built-in to the 1088XEL, allowing a momentary switch to activate it and something akin to an ATX, mini-ATX, or Pico PSU. Check out this link to see what I'm talking about: http://atariage.com/forums/topic/261147-1088xel-alternative-mother-board-project/page-25?do=findComment&comment=3764348

 

The information presented in the link is a bit dated, but the concept and connection remains the same in the present V1.1 boards. Go here for more info about that: http://ataribits.weebly.com/1088xel.html

 

To better facilitate this, Dropcheck made an adapter for the normal ATX (ect.) PSU connector that makes it 1088XEL friendly.

 

ATX12V 1088XEL Power Board Adapter

 

And if you wish to have more flexibility in cartridge placement, there's also this...

 

XL/XE/1088XEL Cartridge Slot Extender Set

 

I wish you the best on this very ambitious endeavor :)

 

- Michael

  • Like 2
Link to comment
Share on other sites

Spaced Cowboy nice project :thumbsup: :) .

 

As I was reading through your website I couldn't help but notice your desire to be able to power up the whole system in the case of integrating a 1088XEL with your expansion system. Just so you know, there is provision for doing so already built-in to the 1088XEL, allowing a momentary switch to activate it and something akin to an ATX, mini-ATX, or Pico PSU. Check out this link to see what I'm talking about: http://atariage.com/forums/topic/261147-1088xel-alternative-mother-board-project/page-25?do=findComment&comment=3764348

 

The information presented in the link is a bit dated, but the concept and connection remains the same in the present V1.1 boards. Go here for more info about that: http://ataribits.weebly.com/1088xel.html

 

 

 

 

That's even better Michael - I'd thought I'd have to put the latching circuit into the expansion box, but if you've already got it, well ... :)

 

 

And if you wish to have more flexibility in cartridge placement, there's also this...

 

XL/XE/1088XEL Cartridge Slot Extender Set

 

I wish you the best on this very ambitious endeavor :)

 

- Michael

 

Yes, I'd seen Dropcheck's extender set. The idea would be to make it such that plugging that in should just work, and then it becomes a matter of finding/making a standard-sized PCIe slot bracket with the appropriate hole for a cartridge connector to poke through

 

I'm well aware the project is ambitious, and to be honest I'd normally have tried to get a lot further with it before announcing it - at least passing its first smoke-test and having the interface card interact with the host... But I'm seeing people (rightfully) going bananas over the 1088XEL, making custom case designs etc, and I thought it was a good idea to at least plant the seeds for thought about how they might like to use an expansion box :)

 

The cartridge slot will join the list of things that became immediately apparent that I ought to have included as soon as the PCB came back from the fab... To whit:

  • Screw holes for mounting into a plastic case
  • Test points - I'm generally using resistors/capacitors for test points but it'd be nice to have some real ones :)
  • Power isolation for bringup. Solder bridges between power-source and power-sink modules would have been nice. That way I could have characterised the power supplies without risking the chips...
  • GPIO inputs/outputs, just headers for the logic analyser to either trigger or be triggered by
  • The cartridge slot, as you point out
  • PBI device selection pins - probably just headers to jumper but maybe a rotary switch would be nicer
  • Default memory-mapping interface selection (130XE, PBIO-native, more ?)

That last one is something I really ought to have thought of. Given access to /EXTSEL and /MPD, I have control over where the 6502 sees memory coming from, assuming the MMU is still in charge of any internal expansion. That means I can monitor access to Pokey's PORTB register and map memory just like an internal expansion would.

 

[quick aside about the XMOS chip]

The XMOS chip will be continually monitoring the bus, not just looking for $D1xx. The design of the XMOS chip is such that I can dedicate a 'core' on one of the tiles to doing this, and it is guaranteed the clock-cycles to respond in time independent of anything else it is doing. The chip doesn't come with SPI, I2C, UART etc. peripherals on-board like most embedded micros, the idea is that you write them in software and dedicate a core, then use internal message-passing to get the data into your app, running on a different core. It has hardware port-change monitoring, so the core can go to sleep most of the time, and wake up within a single clock-cycle when the bit-pattern on the port changes, send off a message, and go back to sleep. This is pretty much ideal for my purposes.

[/aside]

 

... however, I don't want to be limited to 130XE style banking, and in fact it may be necessary to specifically *not* do 130XE-style banking, if there's already an internal expansion (eg: the U1MB) that expects to be able to control its own memory banks. On the other hand (I lose track, is this the other hand, or the other other hand...) if you only have the PBIO attached to an otherwise stock XE/XL, you would probably want to be able to take advantage of games/apps that could use the 130XE's banked memory capabilities on booting the machine.

 

So I need a way to provide the default memory management scheme that can still be used if you reboot the machine. I could read/write the last configuration to the QSPI flash, but it seems easier to have a jumpable header. This'll only be for booting purposes, the XMOS will basically read the pins on boot, configure a register based on that, and use that register from then on. Writing to the register will change the operation of the device. I'm assuming that the main use of this will be to configure PBIO to suit the hardware that the user has, not something that will be regularly changed.

 

In my defence, I was actually more concerned with the PCB layout, length and impedance-matching the traces of the high-speed bus between the two XMOS chips, which runs at ~60MHz, for a bandwidth of about 100 MBit/sec after overheads. There are actually two such busses on the PCB, one for XTAG (the Xmos version of JTAG) and one for the connection to the expansion box. Both of these busses are length-matched such that the trace lengths are matched within better than 99% of each other. If you look closely at the PCB, you can see the wiggles in some of the traces that make up the high-speed busses to get the length matching correct.

 

I was also thinking of firmware updates for the XMOS, which I'm planning on doing by putting a file on the SD card, and detecting a button-press on boot (one of the two buttons is /RESET, the other is user-input after boot and load-firmware-from-card at boot). This means it ought to be possible to update the firmware by simply copying a file onto the SD card from a PC/Mac/Linux box, inserting into the slot, and holding down both buttons then releasing /RESET. It'd even be possible to do it without connection to a host CPU because there's a mini-USB connector that can supply power.

 

Also, I was pretty sure there'd be things I wanted that would make a rev-2 necessary, and getting started was important. Sometimes you can't see the forest for the trees so I figured it was better to get *something* up and running, and iterate it to make it better :)

 

Simon.

  • Like 2
Link to comment
Share on other sites

Simon my 1088XEL project probably was also considered to be ambitious by some, and it certainly was to me as well. So when I say your project appears to be ambitious, in this context that is a good thing :).

 

I also started off knowing that there would be at least two revs (which there were), since anything of this magnitude would be near impossible to get absolutely right on the first pass. Luckily the cost of doing business in the PCB fab arena has dropped considerably over the years to the point that it's not worth the effort to first bread board a design.

 

I look forward to seeing how your project progresses.

 

- Michael

Link to comment
Share on other sites

keep the latching on your project please spaced cowboy, if we are to use this on more than just the 1088, unless your just looking to be a 1088 only add on or upgrade...

 

 

Can you think of a use for that ? Or is it a "just in case" thing ? It's not actually difficult to put a latching circuit in place, but I'm curious as to why you'd want it (outside of the 1088XEL instance).

 

I'm not planning on providing power in general (at least not yet, and only if forced to by the startup times of box and host. Even then I'd prefer to find a different solution). The only real use I can see is for a front-panel switch on a box that houses both expansion slots and motherboard, and the only one of those (at the moment, I guess) is the 1088XEL. In that case power could be supplied in general, and the box would only turn on the computer when the /ON line is momentarily activated.

 

The only connection between a stock computer (XL/XE currently) and the expansion box (which would be where the PSU would be housed) is the single cat-6 cable, I'm using all 8 wires for data, there's none left over for power, and I'd be very hesitant to put any significant power through that cable anyway... Cat-6 can be 24 AWG, which ought to only carry a max of ~0.5A, and I thought the XL/XE PSUs delivered ~2A.

 

FWIW, I'd really like to keep the single, flexible, thin cat-6 cable as the only connection between the two sides.

 

If it turns out that the Xmos pair (one at each end of the cat-6) can boot faster than the 6502 (which I think they will, to be honest), then all we're talking about is a convenience thing..

 

  • Stock (XL/XE) systems will have their switch on the back, and a cable to the expansion box, which will also have to be switched on - probably. You could make an argument that this could just be *left* switched on as well, since it's a passive box that only has use when the computer is on. There's an energy-use argument against that, of course.
  • 1088XEL owners in small (H60/H80 boxes) are in the same boat as the stock systems.
  • 1088XEL owners who use a mini-ITX case that provides a PSU housing would only have to switch on using one switch.

 

Having said all of that, I do still have some 1-bit ports available on the XMOS chip, so I'm fine with one of those being an output of "we're good to go" and putting it through a buffer so it can drive a load which ought to accomplish the same thing, so I'll add it to the list... At least unless something more useful for that pin comes up :)

 

Simon.

Link to comment
Share on other sites

Ok, so a quick update because I'm not sure I'll get much further this weekend.

 

  • There's an issue with the board I got back from the fab, which turned out to be a design problem - the XMOS requires a scheduled bring-up of all the power rails in sequence, and the power-management chip was monitoring the wrong voltage rail to determine whether to bring up the 1v cpu-core voltage rail as the last thing before the CPU boots, so my CPU wasn't booting. I think I can fix this by desoldering the chip, and lifting one of the legs, patching the pin to monitor VCCIO not VCCINT and re-placing the supervisor chip back on the motherboard. Unfortunately the chances of getting that done this weekend are ... slim.

 

  • The other thing was to address the various points made in post #5 above. I think that's pretty much done now, producing:

 

XMOSiov2.0.png

 

 

This version:

  • Fixes the voltage-rail monitoring problem, obviously :)
  • Keeps the 4-layer stack-up, with uninterrupted GND and VCCIO power planes. That's why it's mostly purple above, it's the red and blue hash-style drawing of the power planes showing the complete coverage of the board (modulo a small number of very-tiny areas where one plane or another is out off).
  • Moves all the ports to the back (top, when inserted into a 1088XEL)
  • Isolates the power-generation areas using solder-bridges, so I can easily place and bring up the voltage rails before risking a chip. Also both power rails now drive an LED.
  • Provides screw-holes for when the board is mounted in an external case
  • Provides a cartridge slot (and ECI as well, for that matter) as a pass-thru. The XMOS will become completely passive if it detects a cartridge is inserted
  • Provides a DIP switch to allow the user to specify which parallel bus device id we ought to take
  • Provides a DIP switch that allows the user to specify how memory-management and paging ought to work by default
  • Provides 2 general-purpose input/outputs, individually addressable, which can be used for things like 'the expansion bus is good to go'.
  • Uses exclusively 1206 (rather than 0603) components, which are really easy to solder. They're pretty much the same size as thru-hole!

 

The dimensions have increased a bit, to accommodate the new layout. I can probably shrink the board later, if I decide to get assembly done for me, down to something pretty similar to before. Another good thing about this version is that it fits into SeeedStudio's 10x10cm bin, so even a 4-layer board is only ~$5 at quantity-10. To be honest, I'll probably make use of their assembly offering as well, for all the chips and maybe the SD card, then it's just "large parts" soldering for the final assembly. If I get 5 boards done, the price isn't too eye-watering.

 

I'm not going to send this off immediately to the fab, I'm going to work through all the issues with the current board, and make sure there aren't *too* many revisions overall. The capacitors could do with moving a bit closer to their decoupling sites as well, although they're all within ~1.5cm and only 8 or so signals are >50MHz.

 

Simon

Edited by Spaced Cowboy
  • Like 5
Link to comment
Share on other sites

  • 2 weeks later...

So, given that I'm creating a parallel bus extender, it sort of behoves me to understand just how the signals on the bus propagate. I'd designed a trivial little circuit that let me interface the XE bus to a set of 0.1" headers, which is what my logic analyser plugs into ...

 

bus-prober.png

 

 

I have a Saleae logic analyser which can do 16 channels at once, and I'd previously persuaded my boss at work that these things were just brilliant, so he went and ordered a bunch of them (20 or so I think) so everyone had one on their desk. That gives me 2, so I can sample 32 channels at once - that's not *quite* enough for the entire bus, but it's a good start. A minor complication is that you can only run one instance of 'Logic' (their sampler application) at once on any given Mac, so I had to set up the portable and the desktop machine in the shed... Then we get:

 

probing-the-bus.jpgprobing-the-bus-2.jpg

 

 

Which of course results in 2 capture-files, each with 16 traces. I captured the clock on both devices, so I now have to write some code that will merge the files, based on syncing one clock's timings to the other. The analysers aren't well synced, in fact, with the clock (I sampled at 50 MHz) drifting back and forward a bit, but that's to be expected). The plan will be to use the CLK signal on one device to normalise the timings of the all the signals on the other by calculating time offsets and correcting for the drift. That's not a trivial job, but hopefully it's something I can bash out in a few days. To give some context, I sampled the first 10 seconds after turn-on and each capture file is about 6 GBytes.

 

What it means, though, is that I can go from the only record I could find for the bus timings ...

 

bus-timings-orig.png

 

To something a bit more precise and exact...

 

bus-samples.png

 

 

... which of course is all zoom-able and examinable. This is only one of the capture files (still have to write the merge) but it already had some surprises for me:

 

  • The clock starts off really dirty. There's a whole ramp-up time, where $deity-alone knows what's going on
  • /EXSEL is active a *lot* more than I'd initially expected
  • IRQs are pretty frequent, too...
  • D[n] lines change their state at different times in the clock period (up to 60ns difference, you can see this when you're zoomed in)

 

When I've combined everything together, the goal is to put it into VCD (value change dump) format, which GTKwave can read I'll also plan on merging the D[n] lines into a single signal and the same for the A[n] lines, assuming that's possible. At that point I'll put it on the website as a blog post for people to access. I'm sure I'm not the only one for whom detailed timings like this of a real bus might be useful.

  • Like 2
Link to comment
Share on other sites

In your first post you mentioned the Cooler Master case and said that it offered upto 8 slots as well as 2 half slots with the capacity to hold the 1088XEL. Not sure how you came up with that as the link you posted shows at max 2 rear slots. :? And the 1088XEL seems to extend partway into the first slot space, leaving no room to put a daughter board there. :(

 

Because the case is not designed for a slot only configuration, it does not have standard slot openings or bracing for more than the two already there. If you add more than 2 card slots to the mix, I expect you'll need something like a ATX power supply for power. Losing the space right above the rear connector panel. It's very doubtful that the 1088XEL will be able to power more than 2 slots or power a separate secondary expansion case on it's own.

 

I'm not trying to rain on your parade. I am interested in the project and your approach to offering an expansion option to the original Atari XL/XE line. :) Just trying to point out areas of concern based purely on what I can see from the pictures and the case link.

 

Casing an expansion board with the ability to handle upto 8 slots is where I think you are going to come to a screeching halt. :( It's not that you can't design one, but I haven't found a ready made one. That's where my project hit a snag. I have a working 1090XLR prototype, but casing the board was the problem. Huge sums of money to design and fabricate an aluminum/steel case. 3D printing the case was an idea, but I doubted it would hold up to any abuse and injection molding was almost as expensive as metal. Not something that was going to go mass market to bring down the costs either.

 

The Cooler Master is a really nice mini-ITX case. :) One option might be to redesign the 1088XEL for the Cooler Master dimensions to take advantage of the slots. That would at least give you two slots.

 

I've been working on redesigning the 1088XEL to a micro ATX format with at least four builtin card slots myself. That way the industry standard micro-ATX case could be used for both motherboard and expansion slots. My design relies heavily on the original 1090 XL expansion box design and is definitely not as sophisticated as yours. The final design is about done and I hope to be able to send prototype gerber files to the board house soon.

 

I've had projects that changed specs wildly before the final version was done. Hopefully yours will be smoother. Good luck and keep working. :)

  • Like 2
Link to comment
Share on other sites

Dropcheck brings up some good points for things to watch out for, and I can attest that a custom metal case of the dimensions you would be looking at would easily tip the scale at around $300. However on the plus side, the 1088XEL board and power control circuit can handle a lot of current. The NDP6020p P-Channel MosFet is rated for 20+ amps, so it's more than good enough to handle much more than the measly 3/4 amps that the 1088XEL requires. And since we are not running it in a linear mode, you could likely draw up to 50% of it's rating without a heat sink since it's ON resistance is very tiny. The power jack is only rated for 2 amps, but I'm sure that's being very conservative and could probably be pushed up to twice that rating, or simply connect through the PSU header instead. As for the power traces, you're probably limited to 5 amps, but once you get past the MosFet switch and into the power planes, the power rating jumps up tremendously (remember the 1088XEL is a 4-layer board with 1 layer dedicated to ground, and another to +5VDC.

 

So bottom line if you can find a higher rated external wall wart, having to provide room for an ATX PSU is a non-issue, thus leaving that area open for whatever :) .

 

Of course if you want to provide other voltages for the expansion slots, then you might need to re-think the PSU approach, but there are some very nice mini switchers that can provide 12 volts out at a decent amount of current, while only requiring 5 volts in.

  • Like 1
Link to comment
Share on other sites

In your first post you mentioned the Cooler Master case and said that it offered upto 8 slots as well as 2 half slots with the capacity to hold the 1088XEL. Not sure how you came up with that as the link you posted shows at max 2 rear slots. :? And the 1088XEL seems to extend partway into the first slot space, leaving no room to put a daughter board there. :(

The website has a bit more detail on the plans for the enclosure. I'm not really planning on using the normal expansion slots at all for their intended purpose. All of the expansion-slots will be housed in the extended ATX PSU enclosure space. If I can fit a cartridge slot into one of the PCI bracket spaces, I'll use that for the external cartridge slot.

 

Because the case is not designed for a slot only configuration, it does not have standard slot openings or bracing for more than the two already there. If you add more than 2 card slots to the mix, I expect you'll need something like a ATX power supply for power. Losing the space right above the rear connector panel. It's very doubtful that the 1088XEL will be able to power more than 2 slots or power a separate secondary expansion case on it's own.

 

Again, there's more on this on the website - this time on the 'device interface' page. To summarize: before I read Michael's comments above, the plan was one of:

  • Use an internal PSU like this one - which is 3" by 2", and could be located at the top-front-side of the case on the same side as the PCI slots. There are ample binding points for screws etc. on the side of the case. The linked one is 3.3v, but I'd be looking for a 5v one of similar size.
  • Use an external wall-wart - something like this but sourced somewhere cheaper than Amazon... In that case, the expansion board would also have the power-in socket.

Under both the above, in the case where we're putting the expansion slots into the case, I'd be planning on providing power to the 1088XEL via its power-in header, so there's not two psu's to plug in. It seems it might be possible to reverse that idea though, in which case there's no need for the PSU at all...

 

I'm not trying to rain on your parade. I am interested in the project and your approach to offering an expansion option to the original Atari XL/XE line. :) Just trying to point out areas of concern based purely on what I can see from the pictures and the case link.

 

Casing an expansion board with the ability to handle upto 8 slots is where I think you are going to come to a screeching halt. :( It's not that you can't design one, but I haven't found a ready made one. That's where my project hit a snag. I have a working 1090XLR prototype, but casing the board was the problem. Huge sums of money to design and fabricate an aluminum/steel case. 3D printing the case was an idea, but I doubted it would hold up to any abuse and injection molding was almost as expensive as metal. Not something that was going to go mass market to bring down the costs either.

 

I showed a picture of the original 1090XL to Dan and asked him how much he thought it would be to duplicate. He estimated that a box like the 1090XL would break down as

  • $500 for the prototype CAM design
  • Printing is a one-off fee of $96
  • A run of 100 would come to ~$25/box. A run of 50 would be 20% higher.

This gets you a printed box with things like the cooling slots, mounting bosses, cut-outs, and structural supports in case someone wants to put a monitor on it. I don't think it's necessary to have a metal case as long as the plastic can support the desired weight. I'm not trying to get CE-compliance or anything like that.

 

I think those prices are well within the "reasonable" range (~$42/case for 50 of them). This all assumes I can get 50 people interested though. Given that this thread isn't exactly setting the place on fire, that might be optimistic...

 

The Cooler Master is a really nice mini-ITX case. :) One option might be to redesign the 1088XEL for the Cooler Master dimensions to take advantage of the slots. That would at least give you two slots.

 

It is, and it's the best one I could find. Notably:

  • The case is thumb-screws-to-open, which I've always preferred.
  • The slots will be at the top, which means once the cover is off, they're very easy to access.
  • There's actually more than an ATX PSU's width of space for the expansion-slots, because CoolerMaster wanted to extend the PSU out the back and provided a cage which also widened the hole at the back.
  • For a case that has an internal PSU capability, it's actually pretty small.
  • And yet there's still a good bit of space between the top of the 1088XEL motherboard and where the baseplate for the expansion slots will be. Not only that but it has cooling slots there too!

I've been working on redesigning the 1088XEL to a micro ATX format with at least four builtin card slots myself. That way the industry standard micro-ATX case could be used for both motherboard and expansion slots. My design relies heavily on the original 1090 XL expansion box design and is definitely not as sophisticated as yours. The final design is about done and I hope to be able to send prototype gerber files to the board house soon.

 

I've had projects that changed specs wildly before the final version was done. Hopefully yours will be smoother. Good luck and keep working. :)

 

Oh, me too :)

 

It's good to set out a vision at the start, it gives you something to work towards, but I've never felt that the initial ideas are cast in stone :)

 

Cheers

 

Simon.

  • Like 3
Link to comment
Share on other sites

It's active low, is it not?

It is, but the solid bar means it's toggling; only transitions are drawn, look at /RST to see what a constant value looks like. After some thought, I'm assuming that this is due to one of two things:

 

1. This is the boot sequence of the 1088XEL and code may be coming from somewhere in the U1MB, which may be using /EXSEL to turn off the internal RAM to avoid a bus conflict.

 

2. /EXSEL has a broader meaning than I thought, and perhaps any ROM access that is shadowed by RAM needs to have /EXSEL asserted to prevent conflict on the bus. In this case, /EXSEL really means "turn off the RAM", and is nothing to do with anything external. This also might be pointed to because there's a separate /MPD, which is used to turn off the ROM by a PBI device.

 

Or maybe a combination :)

Link to comment
Share on other sites

I showed a picture of the original 1090XL to Dan and asked him how much he thought it would be to duplicate. He estimated that a box like the 1090XL would break down as

  • $500 for the prototype CAM design
  • Printing is a one-off fee of $96
  • A run of 100 would come to ~$25/box. A run of 50 would be 20% higher.
This gets you a printed box with things like the cooling slots, mounting bosses, cut-outs, and structural supports in case someone wants to put a monitor on it. I don't think it's necessary to have a metal case as long as the plastic can support the desired weight. I'm not trying to get CE-compliance or anything like that.

 

I think those prices are well within the "reasonable" range (~$42/case for 50 of them). This all assumes I can get 50 people interested though. Given that this thread isn't exactly setting the place on fire, that might be optimistic...

 

 

The 1090 XL case measures ~ 12in W X 10in L X 10in H

So if I understand this right.

 

It's $500.00 for the design.

 

A flat fee of $96.00

 

Then for a run of 100, it would be ~$25.00 per case.

 

So

 

500 + 96 + (100 x 25) = $3096.00

 

For ABS injection molded plastic?

Link to comment
Share on other sites

The 1090 XL case measures ~ 12in W X 10in L X 10in H

 

So if I understand this right.

 

It's $500.00 for the design.

 

A flat fee of $96.00

 

Then for a run of 100, it would be ~$25.00 per case.

 

So

 

500 + 96 + (100 x 25) = $3096.00

 

For ABS injection molded plastic?

 

Well, you have the figures right (the $96 is only if you want printing on the outside of the case, and the $25 includes about $4 for the printing on each box), but no, it's not injection moulded plastic. If you follow the link above, there's an 'about the company' page which talks about how they do it. My understanding is that the primary expense in injection moulding is the aluminium mould, and then the parts are trivially cheap to churn out on an individual basis.

 

These guys are positioning themselves at the lower-volume end of the market - there's no mould, which is why they call themselves "tool-less". They work with plastic sheets, bend and form them, and use CNC on the result. Each part is more expensive than the equivalent on an injection moulded run, but there's no up-front cost of the mould, so for the sort of volumes we're talking about, it works out well.

 

Another point: I didn't give him dimensions, and *I* wouldn't have guessed the ones you quoted from the picture I sent. I suspect he is more thinking a cube 6" long by 6" high by 6" deep, which is perfectly fine for my design. I did mention the possibility of making it match a mini-itx box so it was stackable, which implies about 6-8" square on the base.

 

Each of my slots takes 0.8" horizontally (this is the same as PCI cards in a PC), and there will be 7 for a total of 5.6", so a 6" wide case works for me. I might even reduce the height down to 5" or so to make it look less "boxy". Even allowing 1" per dimension for overhead, that would give 5" by 4" for each card's PCB, which IMHO ought to be plenty in this day and age. That's 40 square inches of PCB assuming you use both sides.

 

Cheers,

Simon

Link to comment
Share on other sites

So while I wait for the new boards to come back from the fab, I've been turning to other things. Since the plan-of-record is to use the Mini-ITX case and embed the slots within, at least until there's sufficient interest to warrant a custom case, one of the obvious things to do is to get the logistics of that sorted out. Here's how we're doing on that front:

 

The back of the case looks like this:

 

case-from-back.jpg

 

 

... with the space on the back being approximately (to within a tenth of an inch) 6" by 3.5". The standard separation of a PCI slot is 0.8", leaving me with the possibility of 7 slots plus some change at the side. That actually sits pretty well, because I'd allocated 3 bits for signaling on the bus, and it means I can use a value of 0 for 'bus idle', with all other values being the slot-ids.

 

Going about filling this space... well basically it's going to be the same as a standard PCI-style backplane. The design (not yet finished) currently looks like:

 

slots-design-v2.png

 

... in Easel, with a close-up of the second work-piece looking like:

 

slots-design-2-v2.png

 

The plan is to make the back panel and sides out of 0.032" (20-gauge) thick Aluminium, and the base plate that the circuit-board will sit on to be made out of 0.125" thick Aluminium. At least that's the current plan. The outlines in the CNC-control software are set to run the end-mill around the outside of the designated area (thus not losing 1/8" to the milling bit's width) and the holes are set to be "filled" areas, so they will be the size represented (4mm x 6mm with a 1mm rounding at the corners). In the second diagram, the edge tabs will fold-over (and I need to actually make a slight correction to the side-tab so it goes straight across, rather than tapering to a point) and will be used to join the various pieces together.

 

Both the back panel and the side-panel's vertical tabs will mate with the existing screw-holes in the case, and on the screw-holes on the side-panel's horizontal edges will mate with the 0.125" plate that supports the circuit board. The whole thing should have sufficient slack in the screw-holes that it just slots in and becomes self-supporting.

 

The eagle-eyed amongst you will have noticed two things about the case:

 

  • The case has a lip on the outside of the right-hand-side of the gaping hole we are going to fill. This means I'll either be using spacers, or machining some bracket to fill the gap, so the back panel sits flush.
  • There is a lip on the inside of the bottom edge of the gaping hole. If I can, I intend to use this to brace against when everything is in place. I think it ought to be possible to screw the slots-cage base-plate onto the sides loosely, then screw the sides onto the back of the case, keeping the base plate under the lip. On tightening everything up, I think it ought to be possible to use the tension of the screws on the base-plate, pressing against the lip, coupled with tightening the screws holding the side-plates in place to make something really solid.

Of course, no project is a real project without the purchase of a new toy^W necessary tool. In this case, I've not worked with bending Aluminium since metalwork in school, so this is winging its way towards me as I type. The only Aluminium I'm bending is well within the capabilities of the brake, and I'm hoping to get really nice sharp corners from it.

 

There's also the matter that ordering pre-cut-to-work-area-size Aluminium sheet is expensive, and it's far cheaper to order a 48" by 24" sheet. ($30 for the sheet, $9 for each 8" x 7" pre-cut piece. You can fit a lot of 8x7" pieces into 48x24!) So in this case, another toy (darn it) ​necessary tool has in fact just arrived. Allegedly this goes through sheet Aluminium like a hot knife through butter...

 

Above the back panel you can see the brace that will attach to the top two screws and go across 1cm, bend at 90° inwards into the hole for 1cm, then bend 90° down, then bend 90° up so it can go horizontally across slots, and we can use the holes in it to secure the tops of the PCI brackets I've just bought. Once bent correctly, it'll look something like the below (but with more holes :)

 

bracket-in-3d.png

 

Left to do:

  • The base-plate for the circuit-board to sit on. The base plate will need to have slots machined into it for the base of the PCI-bracket to slot into. This isn't rocket-science though, it's just a matter of aligning everything. The base plate is actually fairly simple: 4 holes for screws to attach to the side-plates, some holes for screws to attach the circuit board, and 7 slots for the PCI brackets to slot into. Apart from that it's a simple plate of Aluminium. What I'll probably do is wait for everything else to be done, then measure offsets with the micrometer for where the slots need to go.

 

Cheers

Simon.

  • Like 4
Link to comment
Share on other sites

Bus signals, redux

Having not managed to get the two Saleae traces to line up well, I decided the best way to do this was to use the larger signal analyser at work, having gained permission from the lab manager :) This machine can measure up to 192 signals simultaneously, and outputs a CSV file which I can use to generate my VCD for GtkWave.

I set up the system to record the data as busses wherever I could, since that makes parsing the data a lot easier later on. The configuration and wiring is all shown below. Each wire-harness can take 16 signals (and there can be up to 12 wire-harnesses), I'm using 3 in total, address on one, data on another, and all the other signals on the third.





logic-work-connections.jpglogic-work-connections-2.jpglogic-work-setup.jpglogic-work-config.jpg


Once I had the data in a CSV file, I needed to convert it to VCD (Value Change Dump) which is the language used by GtkWave. I wrote a little utility to do that and the results are what you can see below

logic-work-results.png


The data files are available for download, currently two samples, one from power-on, and one at a random time during operation. Each is in a zip file together with the a8.gtkw setup file that describes the above signal layout. These are sampled at 10MHz, at some point I do intend to do a high-resolution (but necessarily shorter timespan) sample to get the bus timings down. This'll have to wait until I bring in the 1088XEL to work again …

In the mean-time, GtkWave is available cross-platform IIRC, so download and enjoy :)

Back

  • Like 3
Link to comment
Share on other sites

So the brake turned up and it was very well packed...

brake-unwrapped.jpg

 

brake-packaging.jpg

I'm just waiting on a replacement PCB for the Carvey (the self-homing isn't quite right for the tight tolerances of metal), but that's in the post. What I did do is do a quick test-bend of a piece of Aluminum of the same thickness I'll be using, just to see how it would go. It was trivially easy to make this bend - there was virtually no resistance while bending it at all...

 

brake-test-bend.jpg

That's a nice clean bend in the metal.

 

What I need to do now is mark a line to bend at, and get the CNC to make a hole in the metal that is X away from the line, then after the metal is bent, I can measure the distance from bend corner to hole and see how far away it is from X, and in which direction. That'll inform where I put the holes in the brackets I want to make in order to account for any extension/compression due to bending.

 

Progress :)

  • Like 6
Link to comment
Share on other sites

Slotting into place

 

It's been a busy weekend (seems we're getting a dog) so I didn't get too much done this weekend, but I did manage to get the Aluminium for the rear panel cut and carved into shape

 

 

 

First up I had to cut out an 8" by 7.5" section from the Aluminium sheet (which is 24" by 48"). The sheet showed up in a cardboard box, but didn't have any other protection around it, which would turn out to be an issue later. The sheet-metal cutter lived up to its name, and cut through the Aluminium without any problems. I seriously have had more problems putting a knife through butter before

 

aluminium-sheet.jpg

 

sheet-shearing.jpg

 

cutting-the-back-panel.jpg

Once the CNC machine had worked it's magic, I could detach the part from the metal, and (before doing any filing for sharp edges and burrs) it looks like the below. The screw-holes all line up, but there's a bit of overlap on the lower-left corner where the CoolerMaster case protrudes a little. I'll take that into account the next time I do a cut.

 

I also need to de-burr the edges - particularly where I had to cut off the tabs holding the inner pieces to the main body of the part. Next, though, I'll do the sides of the internal cage, and get a feel for how to make sure the bends are properly accounted for.

 

back-panel.jpg

I guess I've been spoilt by the Inventables material that I've been practicing with, because it's all been perfectly level. The Aluminium sheet I cut out had several (invisible to the eye, but there nonetheless) bumps and hollows in it. This manifested by the CNC machine not cutting "evenly" throughout the piece, and I ended up telling the machine that the sheet was thicker than it really was. That fixed the problem, at the expense of cutting into the waste-board in places, and a longer cut-time.

 

Still, given the relative difference in cost, I'll probably keep using the larger sheet :)

 

If you're into CNC-porn, here's a link to a short section of the panel being carved. The entire piece took about 3 hours to carve, mainly because I only have a 1/8" collet for my CNC spindle (I've ordered a 1/4" collet) and I was scared to drive the machine too fast with such a small bit. I only had the one (1/16" at the tip) end-mill suitable for machining Aluminium, and I was paranoid about breaking it.

 

Once I have the 1/4" collet, I ought to be able to halve that time and use a thicker (1/8" at the tip) bit to chew through the Aluminium much faster.

  • Like 3
Link to comment
Share on other sites

I believe in "warts and all" progress reports - it's good practice at work, and I can't see why it's not a good idea on my own projects either. Progress comes in leaps and bounds, and sometimes it's a case of one-step-forward, two-steps back... with that in mind....

 

"Oops!"

 

Since the design for the side-cages was already done, it was a matter of cutting some more Aluminium from the sheet, locking it into the CNC machine, and clicking on 'Carve'. Of course, life is never that simple…

 

The CNC machine cut both brackets out perfectly. The holes matched up, and the parts were ready to bend. This is where "oops!" comes into play. The brake needs to have sufficient room to bring up the hinged part that forms the bend in the metal. Once I'd done one side, there wasn't room to position the part in such a way as to be able to form the second bend. It wasn't an ordering issue either - it wouldn't matter which side I bent first since the design is symmetrical.

So I ended up with:

 

side-bracket-one-bend.jpg

... and couldn't bend the second tab. After a bit of head-scratching, and mental gymnastics rotating the thing in my head to see what could be done, I came up with a slight modification to the design. I can't change the length of the side-bracket, since it has to mate with the screw-holes in the case, but I do have design control over the holes that will mate with the base-board that the PCB will attach to. So the new design looks like:

 

slots-design-3.png

 

The new design still gives me the two side-pieces in a single carve, but the additional cut-out on the horizontal tab gives the space required to allow bending both tabs in different directions on the brake without impinging on the brake's construction.

 

So, onwards and upwards, or something like that. I'll try the above as soon as is feasible, and we'll see how well it works out. At least when you are prototyping at home, there's no long lead-time before you realize you screwed up [grin].

  • Like 4
Link to comment
Share on other sites

The beginnings of a card-cage

 

Having changed the design along the lines of the previous post, I cut out a new 8"x7.5" blank piece of Aluminum, and ran the new design through the CNC machine to produce the below results

 

 

 

 

carved-side-design3.jpg

And after snipping the tabs (used to keep the workpiece still while the CNC machine carves out the metal), and filing them off, then bending the side-tabs in the appropriate ways, you get the below. The only part missing from this to make it a complete card-cage is the base-panel to which the PCB will attach.

 

 

cage-initial-front.jpg

 

cage-initial-back.jpg

The only problem now is that the current design for the top-bar (that secures the PCI cards with screws) is flawed in the same fashion as the side-panels were. The problem here is that the adjacent bends in all these panels are in opposite directions. The brake is a box/panel brake and could cope if they were in the same direction, but bending in opposite directions is an issue.

 

The way I'm going to solve this is to take a leaf out of CoolerMaster's book. They have 2 standard PCIe slots on the right-hand side of the box, and to provide the holding plate for the screw at the top of the PCI bracket, they just bend out the back-panel of the case; so that's what I'll do as well. This'll remove the need for a separate top-bar entirely.

 

Since this means re-doing the back-panel, I'll also take the opportunity to chamfer the left-hand side of the back panel to better fit the contours of the rear of the case. There's nothing I can do about the protruding right-hand-side, that's built into the case, but I can make the left side fit a bit better.

 

 

Simon.

  • Like 5
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...