6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Apr 27, 2024 6:26 pm

All times are UTC




Post new topic Reply to topic  [ 39 posts ]  Go to page Previous  1, 2, 3
Author Message
PostPosted: Tue Mar 19, 2024 6:55 pm 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8144
Location: Midwestern USA
Jmstein7 wrote:
Ha! I’m struggling to get past 8mhz! And I’m using 55ns Flash Rom, as the EEPROMs I was using didn’t get below 100ns; but, everything is hand soldered. What RAM and ROM are you using to get to 20mhz? I didn’t know it was possible to get past 14mhz, or so.

My POC V1.2 unit runs at 20 MHz with one wait-state on ROM and I/O accesses.  I am using a 55ns EPROM and 10ns SRAM.  Other I/O devices are the two DUARTs, SCSI host adapter and an RTC, the latter which is the slowest I/O device in the system.

POC V1.1 runs at 12.5 MHz with a 55ns EPROM, 12ns SRAM, one DUART, SCSI host adapter, RTC and no wait-stating.

Quote:
As to autorouter, what does that workflow look like? I HATE routing manually. Hate it. It takes me forever, and I’m always guessing with trace sizes and VIAs and all that. I’ve also only used double layer PCBs.

I have never used autorouting—I don’t even have software that can do it.  All of my POC layouts have been in the range of 6" × 4", four layers, a mix of through-hole and SMT parts and manually routed.  Like other automated design processes, PCB routing is seldom as good as it will be when manually performed.  It just takes some experience to get good at it—I’ve been doing PCB layouts off-and-on for some 40 years.  :D

In computer work, four layers is better, since the inner layers can carry VCC and ground anywhere it is needed on the board without getting in the way of the signal traces.  As a bonus, a four-layer board is quieter.  I estimate a gain of 25 to 30 percent in board density by going with four layers, and some rearranging of devices and other board features.  I’d bet you I could substantially shrink your board by redesigning it in four layers and manually routing it.  Also, there are smaller ZIF sockets available than the one on your unit.  See attached for an example.

Attachment:
File comment: Cam-Action ZIF Socket
socket_dip28_zif_aries526.pdf [536.37 KiB]
Downloaded 15 times

As for PCB cost, ditto on what Gordon noted.  I can recall when getting custom PCBs made ran into four figures (USD).  In the early 1990s, I had some PCBs made for a custom host adapter, in two layers and about the size of a credit card.  Five PCBs cost $450 to produce, plus a one-time setup charge of $150.  Even as recently as 2003, when I was building modules for a large-scale model railroad automatic block signal system, I was paying the equivalent of around 15 USD per PCB, and those were only two-layer boards!  Current prices are a real bargain, even for multiple layers.  It costs more to ship PCBs from JLCPCB to the USA than to have them made.

As an aside, should I need PCBs with Underwriters Laboratories recognition, I deal with a US-based board house.  Although their prices have plummeted in the last 10 years, they are about five times as expensive as JLCPCB, despite substantially lower shipping costs.

Attachment:
File comment: POC V1.2 PCB Layout
poc_v1.2_pcb.gif
poc_v1.2_pcb.gif [ 98.38 KiB | Viewed 983 times ]

Above is what POC V1.2’s PCB layout looks like.  This was the last unit I built with PDIP glue logic parts.  It’s not as dense as it could be, mainly because I habitually leave room for adding bodge wires in case I want to fix or change something in the logic.  However, it’s dense enough to run at 20 MHz with some timing headroom remaining.  Signal traces are 0.006" width, using .026"-diameter via with 0.008" holes. Center-to-center signal trace spacing is 0.025" in the densest areas.

Attachment:
File comment: POC V2.0 PCB Layout
poc_v2_pcb.gif
poc_v2_pcb.gif [ 111.27 KiB | Viewed 983 times ]

Above is the layout for POC V2.0.  Most of the glue logic is in an ATF1504AS CPLD.  Again, I left room for doing some bodge wiring...just in case.  :D

_________________
x86?  We ain't got no x86.  We don't NEED no stinking x86!


Top
 Profile  
Reply with quote  
PostPosted: Tue Mar 19, 2024 7:04 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1076
Location: Albuquerque NM USA
JLCPCB design rules are 6 mil trace and 6 mil space. Your vias can be 30 mil pad/16mil hole. With that kind of design rules, you can pack DIP shoulder to shoulder, even put 300mil under 600 mil DIP and your router still can do it in 2 layers. So if you are doing 4-layer with power/ground planes (why not, it is so cheap) just absolutely packed your components next to each other’s and watch the router does it’s magic. My CAD is 25 years old and never updated (can’t, company was out of business in 2003), even that old router can do everything I said above. The latest router must be able to do it better.

With sufficiently fast RAM, W65C02 can reliably run 25Mhz. Don’t need slow ROM, you can bootstrap out of fast ROM in CPLD or 22V10.
Bill

Edit, just read BDD’s comment. His via is 26 mil pad and 8 mil drill. Very cool. I picked 16 mil because a 30 ga wire wrap wire can insert in the hole making bodge easier.


Top
 Profile  
Reply with quote  
PostPosted: Tue Mar 19, 2024 7:47 pm 
Offline
User avatar

Joined: Fri Aug 03, 2018 8:52 am
Posts: 745
Location: Germany
ok yea, 4 layer board are quite a bit more expensive. while 10x10cm is the cheapo limit for 2 layer, it's 5x5cm for 4 layer. still my 65816 is exactly 10x10cm and a 4 layer board. so it was a bit more expensive.

Jmstein7 wrote:
Ha! I'm struggling to get past 8mhz! And I'm using 55ns Flash Rom, as the EEPROMs I was using didn't get below 100ns; but, everything is hand soldered. What RAM and ROM are you using to get to 20mhz? I didn't know it was possible to get past 14mhz, or so.

the 65xx chips are insanely overclockable, and the datasheets are usually pretty... pessimistic with their limits and timings. i usually just eyeball timings anyways... for my SBC my thought process was: 10ns RAM, 10ns CPLD, 25ns for half a clock cycle at 20MHz, 25 > 10 +10 so it should work. and it did!
for RAM i'm mostly using the IS61C5128AL-10KLI, 512kB and 10ns access time but using a SOJ package (SMT) so you are forced to solder them onto an adapter or directly onto a board. i've also started using the W241024AK and W24512AK, which are old-stock 128kB and 64kB SRAM chips respectively. both in DIP packages and with 15-10ns access times so they're perfect for compact and fast 65C02 or low-end 65816 Systems.
for Flash/ROM i'm probably using the same chips as you. the SST39SF0x0 series but as PLCC because they're smaller than the DIP ones. as for speed i just slow the CPU down whenever it accesses ROM (or IO). so while executing from ROM it basically runs at half the speed, but as soon as it loads a program into RAM and jumps over to it, it goes at full speed (which is currently only 16MHz with an expansion card installed. remember to always put buffers before any external connector when you go at high speeds!)

Jmstein7 wrote:
As to autorouter, what does that workflow look like? I HATE routing manually. Hate it. It takes me forever, and I'm always guessing with trace sizes and VIAs and all that. I've also only used double layer PCBs.

i mean if you want the full pipeline:
  • First lay down the idea of what i want this design to do, what main components (CPU, RAM, ROM, etc) it will use
  • Then make a basic layout of the logic to see if it fits (pin wise) onto a 44/84 pin CPLD
  • Afterwards either start making the logic design (if it's very simple) or start making the schematic
  • Try to work out any issues that arise while making the Schematic (mainly just planning mistakes where i miscounted how many pins i would need on a CPLD or VIA or something)
  • Once the Schematic is done, i start with the PCB. enabling the ratsnest and just start placing things, aiming for compactness while keeping the ratsnest as untangled as possible
  • After i'm happy with the layout, I add some rounded corners and screw holes (round corners look cool and screw holes are useful for standoffs as laying a PCB down can mess up a table with the pointy solder joints and stuff, or you could short something!)
  • Export the whole thing as a spectra file, import to freerouting, let it run while i watch YT or play games. once done re-import it to KiCad and do some minor cleanups and add some copper pours and via stitching (no idea if it helps with performance but i just think it looks neat)
  • Finally if everything looks right and i didn't mess up any connections (that i know of) i add the JLCJLCJLCJLC silkscreen somewhere where i don't see it. export the drill files and gerbers, throw them into a zip file, upload to JLC, make the PCB black because black is cool, and then add it to cart.
tada, a fresh PCB is done!

plasmo wrote:
With sufficiently fast RAM, W65C02 can reliably run 25Mhz. Don’t need slow ROM, you can bootstrap out of fast ROM in CPLD or 22V10.

technically yes, you can put a small botloader program into a CPLD and use it as a high speed ROM, but it depends on the use case i would say.
for example if you pla on having an expansion connector and want to hook up IO stuff that you know are too slow for the CPU at full speed, then you have to implement a wait state/clock stretching circuit anyways and at that point you might as well safe yourself the Macrocells and use a seperate ROM chip.
or maybe space is insanely tight and your ATF1504AS or whatever was just enough macrocells to throw in a 64 Byte bootloader for a CF card or something, then you of course safe yourself a whole extra chip.
or you could have a board with an onboard microcontroller like a ATMega or CH32Vx which is used as IO controller or co-processor. in which case you have it take over the bus after reset and preload the RAM with a program before releasing the CPU. which also saves you a ROM chip.


Top
 Profile  
Reply with quote  
PostPosted: Tue Mar 19, 2024 9:06 pm 
Offline

Joined: Sun May 30, 2021 2:16 am
Posts: 374
BigDumbDinosaur wrote:
My POC V1.2 unit runs at 20 MHz with one wait-state on ROM and I/O accesses.


Yes! This is exactly the kind of "advanced" method I would love to learn to utilize. I've built, either on breadboards, stripboards, or those few ungainly PCBs, some really basic systems with basic IO.

BigDumbDinosaur wrote:
In computer work, four layers is better, since the inner layers can carry VCC and ground anywhere it is needed on the board without getting in the way of the signal traces.  As a bonus, a four-layer board is quieter.  I estimate a gain of 25 to 30 percent in board density by going with four layers, and some rearranging of devices and other board features.  I’d bet you I could substantially shrink your board by redesigning it in four layers and manually routing it.  Also, there are smaller ZIF sockets available than the one on your unit. 


Can you suggest any good tutorials or YouTube videos for learning how to get started with four layer boards? Also, yeah - the ZIF socket. That was a mistake. Going forward, I think I'll just use headers to make the connections - like shield-style connections. That way I can design the spacing myself.

plasmo wrote:
Don’t need slow ROM, you can bootstrap out of fast ROM in CPLD or 22V10.


Yet another advanced technique I'd like to learn. Copy the ROM into "fast" RAM at boot.

Proxy wrote:
for Flash/ROM i'm probably using the same chips as you. the SST39SF0x0 series but as PLCC because they're smaller than the DIP ones.


You are - I'm using the PLCCs now, too. I had to make a few PLCC to DIP adapters to fit them into my existing DIP-based designs.

Proxy wrote:
as for speed i just slow the CPU down whenever it accesses ROM (or IO). so while executing from ROM it basically runs at half the speed, but as soon as it loads a program into RAM and jumps over to it, it goes at full speed (which is currently only 16MHz with an expansion card installed. remember to always put buffers before any external connector when you go at high speeds!)


Yet another thing I must learn to do. As far as buffers, do you mean along the lines of 74AC245s?

Proxy wrote:
you could have a board with an onboard microcontroller like a ATMega or CH32Vx which is used as IO controller or co-processor. in which case you have it take over the bus after reset and preload the RAM with a program before releasing the CPU. which also saves you a ROM chip.


Precisely what I was thinking about doing. Just have to figure that out (as well as using one as a coprocessor).

I also picked up a bunch of cheap 68882 FPUs to mess around with. I figured that I could probably find some way to integrate with them, using one of the CPLDs.

Jonathan


Top
 Profile  
Reply with quote  
PostPosted: Tue Mar 19, 2024 10:18 pm 
Offline
User avatar

Joined: Wed Feb 14, 2018 2:33 pm
Posts: 1399
Location: Scotland
Just to add another data point - my Ruby '816 board is 130x100mm, double sided and runs very well at 16Mhz (no wait states). It ran just as well on stripboard with dozens of flying wires before I made up a PCB for it.

-Gordon

_________________
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/


Top
 Profile  
Reply with quote  
PostPosted: Tue Mar 19, 2024 10:27 pm 
Offline

Joined: Sun May 30, 2021 2:16 am
Posts: 374
drogon wrote:
Just to add another data point - my Ruby '816 board is 130x100mm, double sided and runs very well at 16Mhz (no wait states). It ran just as well on stripboard with dozens of flying wires before I made up a PCB for it.

-Gordon


Gordon,

what are the specs for the RAM and ROM you used (in your ‘816 version of Ruby)?

Jonathan


Top
 Profile  
Reply with quote  
PostPosted: Wed Mar 20, 2024 8:46 am 
Offline
User avatar

Joined: Wed Feb 14, 2018 2:33 pm
Posts: 1399
Location: Scotland
Jmstein7 wrote:
drogon wrote:
Just to add another data point - my Ruby '816 board is 130x100mm, double sided and runs very well at 16Mhz (no wait states). It ran just as well on stripboard with dozens of flying wires before I made up a PCB for it.

-Gordon


Gordon,

what are the specs for the RAM and ROM you used (in your ‘816 version of Ruby)?

Jonathan


No ROM. The Ram is an Alliance 55ns part but it's fairly well known in other (6502) circles that they can work up to 16Mhz and maybe beyond.

-Gordon

_________________
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/


Top
 Profile  
Reply with quote  
PostPosted: Mon Apr 01, 2024 6:54 am 
Offline
User avatar

Joined: Fri Mar 22, 2024 10:49 am
Posts: 8
I'm also starting out with an ATF1508AS, so I'll probably have something to contribute here eventually. I'm aiming to program in SystemVerilog exclusively without paying for the commercial packages, but I'll have to see how I go with that over the next few days. Also, if you haven't seen it, I strongly recommend getting one of these breakout boards for prototyping:
viewtopic.php?f=4&t=7631

As for PCB fabrication, I use https://www.pcbway.com/. They will do a run of 10pcs of a standard two layer board up to 100x100mm for $5USD. Yep, that's the price. Fast turnaround and shipping too.


Top
 Profile  
Reply with quote  
PostPosted: Mon Apr 01, 2024 6:48 pm 
Offline

Joined: Sun May 30, 2021 2:16 am
Posts: 374
Nemesis wrote:
I'm also starting out with an ATF1508AS, so I'll probably have something to contribute here eventually. I'm aiming to program in SystemVerilog exclusively without paying for the commercial packages, but I'll have to see how I go with that over the next few days.


Awesome! Let's keep this thread going and do this thing together!

Jonathan


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 39 posts ]  Go to page Previous  1, 2, 3

All times are UTC


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: