6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Fri Nov 22, 2024 2:42 pm

All times are UTC




Post new topic Reply to topic  [ 7 posts ] 
Author Message
PostPosted: Wed Jun 10, 2020 11:37 pm 
Offline

Joined: Wed Jun 10, 2020 11:29 pm
Posts: 3
After many months of lurking on this forum, now seems like a good time to introduce myself. I'm close to finishing the first permanent iteration my first 6502 project, the f1 computer.

Some of you may have seen my posts at anycpu.org (https://anycpu.org/forum/viewtopic.php?f=13&t=569). I talked about my first
homebrew computer project there. I was working on that project while on hiatus from employment and had a lot of time to dedicate to it. I got a full-time job and decided to scale back my aspirations (for now). I'd done just a little 6502 programming in vice and found these forums and Garth's primer, so I chose the 6502 over Z80 for the f1.

I slowly built the machine on solderless breadboards, starting with CPU, ROM, and LCD display. Then I added RAM and a VIA. Then I added a UART and wrote a ROM that loads assembled machine code from my desktop computer into the f1's RAM over serial line. This made it much faster to experiment with programs than writing and swapping ROMs with every code change.

After spending a couple weeks writing code for the machine and testing some sound generation ICs, I realized the hardware configuration was stable enough that I should move it off the breadboards. I've never made a PCB before and spent some time experimenting with board layouts in KiCad. I ultimately decided I wasn't ready to move to PCB, and decided to wire wrap a board instead.

Attached photos show my result. All components are down and most of the connections are wrapped. There is a main board with header for expansion boards. The first expansion board has an AY-3-8910 sound IC and an LCD display. The jumper wires between the boards are an unfortunate mistake. My DIY ribbon cables worked well enough in breadboard holes, but don't securely fit the wire wrap pin header I used. One of my short term priorities is to replace all that with nice ribbon cable connectors, like these: https://www.digikey.com/product-detail/ ... 4G-ND/9709

I want to thank Garth for the primer and this forum for all the valuable posts. You've all been very helpful in making my project successful so far.

I would welcome any suggestions or corrections on my board construction practices. I do know of a couple things I should go back and improve, like adding bypass caps where they're missing and debouncing the reset button. In my next posts in this thread, I'll talk about my future plans for the f1 and raise a few questions that came to mind as I built this machine.


Attachments:
IMG_20200610_161229.jpg
IMG_20200610_161229.jpg [ 5.29 MiB | Viewed 1970 times ]
IMG_20200610_161219.jpg
IMG_20200610_161219.jpg [ 5.1 MiB | Viewed 1970 times ]
IMG_20200610_161124.png
IMG_20200610_161124.png [ 11.52 MiB | Viewed 1970 times ]
IMG_20200610_161003.jpg
IMG_20200610_161003.jpg [ 4.08 MiB | Viewed 1970 times ]
IMG_20200610_161132.png
IMG_20200610_161132.png [ 12.27 MiB | Viewed 1970 times ]
Top
 Profile  
Reply with quote  
PostPosted: Thu Jun 11, 2020 6:43 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10985
Location: England
Welcome! Looks like you've already come a long way - well done. I look forward to seeing further developments...


Top
 Profile  
Reply with quote  
PostPosted: Sat Jun 13, 2020 12:35 am 
Offline

Joined: Wed Jun 10, 2020 11:29 pm
Posts: 3
This is the major parts list for the main board of my computer:

CPU: WDC W65C02S
ROM: Atmel AT28C16 2K EEPROM
RAM: Alliance AS6C62256 32K SRAM
Parallel I/O VIA: 2x WDC W65C22S VIA
Main system clock: ECS-2100A-010
RS-232 serial: WDC W65C51N + MAX232EIN driver

Additionally, a CD74HCT08 quad NAND IC is used for address decoding, and an SN74HCT08 quadAND IC is used to handle multiple interrupt sources.

I've written a number of test programs for the machine. Things appear stable at the current 1 MHz clock speed, but maybe I'll find some issues when I start working on software again.

Here are a few of my short term priorities, in no particular order:

  • Replace the pin header that currently breaks out VIA I/O, power, and phi2 with nice
    ribbon cable connectors.
  • Debounce reset circuit.
  • Finish adding bypass caps across all active devices.
  • Write a music tracker program to make music with the AY-3. I wrote a rough one for the SN76489,
    and I'm in the process of rewriting a second one with AY support.

Longer term ideas:

  • Increase serial port speed past the current 19,200 bps.
  • Character cell or bitmap graphics. This could be in the form of graphics commands sent
  • over the serial line to be rendered by my desktop computer, or a standalone VGA
    subsystem to attach directly.
  • Support for playing low rate digital sampled audio. I would need to implement this in software, find a suitable IC, or design a circuit for it.
  • Write an RPG game.
  • Make a Forth environment.

I think I'll spend a lot of time with the AY-3 sound chip over the next few months. Does anyone here have some experience programming it?


Top
 Profile  
Reply with quote  
PostPosted: Sat Jun 13, 2020 2:29 am 
Offline
User avatar

Joined: Fri Dec 11, 2009 3:50 pm
Posts: 3367
Location: Ontario, Canada
Welcome, fmahnke :)

Nice photos -- thanks for sharing your project with us.

With the goals you're contemplating I think you'll have plenty to keep you busy! Regarding low rate digital audio, you might be interested in the 9-level PWM that Garth talks about, since it's VIA-based and your project has VIAs. Hmm, and there's more about VIAs here.

I like the idea of getting some Forth working. If you do that sooner rather than later then it would become a means to an end, assisting you with the other goals such as the graphics commands and of course the RPG!

Cheers,
Jeff

_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 19, 2020 10:38 pm 
Offline

Joined: Wed Jun 10, 2020 11:29 pm
Posts: 3
I'd like to ask a few questions about wire wrap construction.

First, I've noticed some people use two breakable headers to socket ICs instead of proper wire wrap IC sockets. This has the advantages of lower cost and the potential to more easily get discrete components on the board under the IC, component side. Wondering if anyone's used this technique for a variety of IC sizes and can comment on the resulting construction quality compared to using true WW sockets?

Secondly, from the AC performance construction section of the 6502 primer:

Quote:
If you don't have a ground plane, it's good to put a power-and-ground hub in the middle, with a star-type arrangement connecting all the ICs' power and ground pins to the distribution area in the center, then in addition, also daisy-chain them to get short power and ground connections between the various ICs, not just to the center.


Could someone explain the reasons behind connecting the ICs to power and ground both between each other and also to the power-and-ground hub, rather than either connecting them all to the hub or connecting the closer ones to the hub, then the farther ones to the closer ones? I did as the primer directed on the f1 wire wrap board and found it used most of my available wraps on the vcc and gnd pins, leaving little space to connect other IC pins. This leads me to my next question.

What is your preferred method to tie IC pins to vcc or ground when the IC power posts are already close to full? I had several pins on the 6502 and 6551 to tie high or low, enough that the power posts for each IC didn't have near enough space to bring in its respective signals. One solution is to make a bigger central power-and-ground hub and run pins to that area as necessary. This makes for a cleaner board layout, but makes wires longer than they need to be. Another solution is to break out an IC's power pins to a mini power distribution header next to it, and then run each signal there. This makes for shorter wires, but uses more board space and makes the board less organized.

Thank you for your suggestions.


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 19, 2020 11:37 pm 
Offline
User avatar

Joined: Fri Dec 11, 2009 3:50 pm
Posts: 3367
Location: Ontario, Canada
fmahnke wrote:
What is your preferred method to tie IC pins to vcc or ground when the IC power posts are already close to full?
This advice comes a little late, as I see you already have the signal wiring in place. :| But I always begin by doing the power and ground wires, and rather than wrapping them I solder them, using fairly fine gauge wire (similar to WW wire).

There are various advantages. Soldered connections hardly consume any height on the wire-wrap post. Also you're going to need lots and lots of connections to bypass caps, and those can't be wire-wrapped anyway. So just solder as much stuff as possible before the signal wiring (using wire-wrap) begins. (BTW, it's sometimes preferable to use a SMD cap and run wires to it, rather than trying to get the leads of a through-hole cap to reach where you want them to.)

Re AC performance: it's important to realize that whenever current (a signal) is sent from Chip A to Chip B, to complete the circuit the current also needs a return path from B back to A. Superficially that may seem like a non-issue. Ground and Vcc connections extend to every chip on the board, so there's bound to be a return path somewhere. But it makes a difference what route that return path takes. No one path is ideal, so we try to provide many return paths. (After all, there are many signal paths.) For each signal, the return current will automatically favor whichever return path it "likes" best.

Ideally you want there to be a return path that's immediately adjacent to every signal path. The more nearly adjacent the two paths are, the less inductance you'll get. That's because inductance results from creation of a magnetic field, and the fields of two nearby conductors tend to cancel if (as in this case) the two current flows are in opposite directions.

One advantage (not the only advantage) of a ground plane is that any conceivable signal path always has an identical return path nearby (ie, the ground plane).

When there's no plane, the next-best way to make lots of return paths available is to implement a grid. Personally I prefer a simple rectangular grid, and see no advantage to the radial arrangement shown in the Primer. But it's the same idea: make lots of return paths available and thus keep inductance reasonably low.

-- Jeff

_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html


Last edited by Dr Jefyll on Sat Jun 20, 2020 1:59 pm, edited 1 time in total.

Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 19, 2020 11:54 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8543
Location: Southern California
Jeff posted an excellent response while I was typing, but I'll add this anyway:
fmahnke wrote:
I'd like to ask a few questions about wire wrap construction.

First, I've noticed some people use two breakable headers to socket ICs instead of proper wire wrap IC sockets. This has the advantages of lower cost and the potential to more easily get discrete components on the board under the IC, component side. Wondering if anyone's used this technique for a variety of IC sizes and can comment on the resulting construction quality compared to using true WW sockets?

Are you talking about breakable socket strips with WW pins? They are nice, but open-frame IC sockets also allow putting parts under the larger ICs, and they keep the pins perpendicular to the board so they don't rotate over to touch another socket's pins. If the perfboard has solder pads, you can solder the pins so they stay straight, but make sure you put only a tiny bit of solder right where the pin goes through the pad, and keep the solder and the flux off the rest of the pin. The integrity of the WW connection depends on clean, sharp edges of the pin biting into clean wire, to make a chemical weld.

Quote:
Secondly, from the AC performance construction section of the 6502 primer:
Quote:
If you don't have a ground plane, it's good to put a power-and-ground hub in the middle, with a star-type arrangement connecting all the ICs' power and ground pins to the distribution area in the center, then in addition, also daisy-chain them to get short power and ground connections between the various ICs, not just to the center.

Could someone explain the reasons behind connecting the ICs to power and ground both between each other and also to the power-and-ground hub, rather than either connecting them all to the hub or connecting the closer ones to the hub, then the farther ones to the closer ones? I did as the primer directed on the f1 wire wrap board and found it used most of my available wraps on the vcc and gnd pins, leaving little space to connect other IC pins. This leads me to my next question.

With CMOS which takes very little power, wire resistance is not the enemy. The enemy is inductance especially in ground (and power) connections, and the main way to minimize it, if you don't have a true ground plane (and no, copper pours and fills don't qualify, nor does nearby sheet metal that's grounded at one point), is to minimize the connection length. If you can't have a true ground plane (and better yet, a power plane too), the next-best thing is a mesh. The wire size is not as important. 30AWG wire-wrap wire has 27nH of inductance per inch, and going up to 24AWG (twice the diameter, four times the cross-sectional area) only cuts it to 23nH, so not much difference! See also our sticky topic, "Techniques for reliable high-speed digital circuits."

Quote:
What is your preferred method to tie IC pins to Vcc or ground when the IC power posts are already close to full? I had several pins on the 6502 and 6551 to tie high or low, enough that the power posts for each IC didn't have near enough space to bring in its respective signals. One solution is to make a bigger central power-and-ground hub and run pins to that area as necessary. This makes for a cleaner board layout, but makes wires longer than they need to be. Another solution is to break out an IC's power pins to a mini power distribution header next to it, and then run each signal there. This makes for shorter wires, but uses more board space and makes the board less organized.

As the WW page of the 6502 primer says, you can always get three wraps on a 2-level pin, and five on a 3-level pin, by making the first part of each wrap, the insulated part, go over a previous wrap, and making the bare wire start right where the previous level stopped. There's no need to put the insulated part over bare post area.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 9 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:  
cron