6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Nov 23, 2024 8:27 am

All times are UTC




Post new topic Reply to topic  [ 842 posts ]  Go to page Previous  1 ... 24, 25, 26, 27, 28, 29, 30 ... 57  Next
Author Message
PostPosted: Sun Feb 14, 2016 4:40 pm 
Offline
User avatar

Joined: Mon May 25, 2015 2:25 pm
Posts: 690
Location: Gillies, Ontario, Canada
Basement renovations have eaten all of my free Sunday afternoon time, so there have been no wires placed yet!
I do have a solid plan though, and have managed to keep the Vulcan CPU down to single cycle operation.
The most difficult part so far was the Pre-Inc and Post-Dec of the 64k Call / Return Stack.
Here is how I managed to keep to single cycle operation without bending the "rules" too far...

To start, I intend to have the CPU run at 4 MHz, and crank it up once it's working. 10Mhz would be a nice result.
To handle the Pre and Post requirements of the 16 bit Call / Return counter, I need 2 positive edges (2 cycles).
So, I have doubled the Main Clock to 8Mhz, and split it into 2 phases, with phase 2 only for the Call stack.
Since every other part of the CPU still runs on a single 4MHz cycle, I will still consider it single cycle at 4Mhz.
I could have done the same with a 245 delay chain, but this can lead to issues of someone copies the design.

So far the longest path is the Conditional Branch Controller, which should work up to 10Mhz, possibly 16Mhz.
A 10 MIPs DIY CPU that can do single cycle 16 bit math will be just fine.... yes just fine indeed!

For those reading this from the bottom up, here is where my project is at right now (Video Section only)...

Image
400x300 VGA with 256 Colors. 100% Pure Common 7400 Logic.

Image
https://www.youtube.com/watch?v=XuzK2BwvmKQ

Image
https://www.youtube.com/watch?v=3fXuFCxMHVI

Image
https://www.youtube.com/watch?v=CxonyIrZhDc

Image
https://youtu.be/HqSYwKYwtOo

Will report back when the real World allows.

Cheers!
Radical Brad


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 15, 2016 9:02 am 
Offline

Joined: Fri Nov 27, 2015 10:09 am
Posts: 67
Random question, do you buy pre-cut and stripped wire or do you do it by hand, and if so how?


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 15, 2016 3:43 pm 
Offline
User avatar

Joined: Mon May 25, 2015 2:25 pm
Posts: 690
Location: Gillies, Ontario, Canada
It's a good question, when you consider the need for thousands of cut to length wires on a project like this!
I always take the path that includes as little outside help as possible, so yes, I roll my own wires. Here is how...

Tools Required
- Side Cutters
- Knife
- Free time


Image
A box of Cat-5 wiring. 500 feet will last you a while!

I use Cat-5 wiring for all of my breadboard work, as it is economical, easy to shape, and solid core.
Cat-5 has 8 wires; 4 white, and 1 red, 1, green 1 blue, 1 brown. A good selection for bread boarding.
This size and type of wire is absolutely perfect for a breadboard. Much better than the fat wire kits.
You don't have to buy an entire box, but I wired 2 floors of my house and still have a lifetime supply.


Image
Cutting the segments to the required length.

When I do final breadboard wiring, I like all bus wiring to be the same length and color. I am fussy that way.
To plan the wiring, I measure the distance, including the bends along the way, and than add 1 inch to that.
Wires are cut from the box of Cat-5 into the required lengths, remembering that there are 8 wires per cut.


Image
Trim the outside shield back about half an inch to pull the wires.

To extract the 4 twisted pairs, I cut back on the outer shield to about half an inch using side cutters.


Image
Exposing the 8 wires. There are 4 twisted pairs.

You can then hold the end of the wire and pull the twisted pairs from the outer shield.
On a very long wire (over 12 inches), you may need to grasp the pairs with pliers when pulling them free.


Image
The 4 twisted pairs pulled form the outer shield.

You now have 4 sets of twisted pairs, each color includes a white wire.
These colors (red, green, blue & brown) are a good selection for bread boarding actually.
I typically use red and green for GND and VCC, blue for data, brown for control, and white for addresses.


Image
Untwisting of the wiring pairs.

To untwist the wiring pairs, hold the wire lightly with your thumb and finger, and then spin the wire.
This takes a bit of finesse, but once you have it down, you can untwist a long wire in seconds.
One odd thing I have noticed after doing computer wiring for many decades is that the twist differs for colors.
The brown and red pair always have a lesser twist than the blue and green pairs. Must be a reason!


Image
Drag the wire over a round surface to make it straight.

Ok, now you have a bunch of individual wires, but they are all wavy from being twisted together.
To make the wires straight again, drag them over a round surface like a pen, holding them tight as you pull.
This operation may take a few pulls, and if you bend the wire about 90 degrees around the pen, it helps.

Image
Exposing the bare copper for the breadboard.

To expose the bare copper wire for insertion into the breadboard, I just use a small pocket knife.
Roll the fire along the blade edge so that you are cutting about 1/4" of shielding away.
A knife that is somewhat dull is probably better until you get the finesse of not pushing too hard!
A quick roll of the wire to make a cut line will be enough to then pull the shield away with the blade edge.
After hundreds of feet of wire cut and stripped, I have yet to cut my thumb.
You could also try a wire stripping tool, but that would certainly take a lot more time.

Image
1/4" is the perfect length of bare wire for the breadboard.

Most breadboards are held to an aluminum backing plate with some double sided tape.
Some ultra cheapo boards may only have a sticker on the back and no grounding plane at all.
The 1/4" length of wire prevents "over reaching" beyond the wire clip and into the base of the board.
If you push the wire too far into the board, then you may actually poke through into the ground plane.
A wire too short will on the other hand, pop out of the board easily.
After stripping a few hundred ends, you get used to knowing what 1/4" looks like.


Image
The perfect breadboard wire resting in its new home!

Now you have an endless supply of wire that is absolutely perfect for bread boarding purposes.
This wire is thin, can be bent into shape, has a decent color spread, and is very cost effective.
The worst possible wire is stranded, hard to shape, and comes in an expensive pre-cut kit!

I also use this same wire for point-to-point perforated board circuit designs.
For neatly wrapping bus bundles, just use a 2 inch section of white wire and coil it around the bundle.
Sorry for the long winded answer, I though a few photos would be better than... "just cut up network wires"!

Cheers!
Radical Brad


Last edited by Oneironaut on Mon Feb 15, 2016 5:25 pm, edited 3 times in total.

Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 15, 2016 3:54 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10986
Location: England
Oneironaut wrote:
One odd thing I have noticed after doing computer wiring for many decades is that the twist differs for colors.
The brown and red pair always have a lesser twist than the blue and green pairs. Must be a reason!

I looked it up:
"The Phone Company has been using twisted pairs for a very long time. They discovered that if the twist of all the pairs in a cable have a slightly different twist the cross talk is reduced compared to a cable made up with all pairs using the same twist."
- http://www.prc68.com/I/Zo.shtml#Wm
See also https://en.wikipedia.org/wiki/Category_ ... st_lengths


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 15, 2016 4:36 pm 
Offline

Joined: Fri Nov 27, 2015 10:09 am
Posts: 67
Oneironaut wrote:
Sorry for the long winded answer, I though a few photos would be better than... "just cut up network wires"!



Not at all, that's amazing, much more than I expected with the photos. I didn't think to bother with CAT 5, but I have a reel lying around so I'm going to give it a shot.


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 15, 2016 4:48 pm 
Offline

Joined: Sun Apr 10, 2011 8:29 am
Posts: 597
Location: Norway/Japan
Thanks for the detailed description, it'll be cat5 for me in the future - no more dedicated "breadboard wire" (particularly as I can get cat5 for free from work, as it's considered obsolete).
And thanks to BigEd for looking up that little issue about the twist - there's always something new to learn!


Top
 Profile  
Reply with quote  
PostPosted: Mon Feb 15, 2016 5:32 pm 
Offline
User avatar

Joined: Tue Nov 16, 2010 8:00 am
Posts: 2353
Location: Gouda, The Netherlands
Note that Cat5 cable comes in two different types: solid core and stranded. Make sure you get the solid core stuff if you want to use it for breadboarding.


Top
 Profile  
Reply with quote  
PostPosted: Fri Feb 19, 2016 11:50 pm 
Offline

Joined: Fri Feb 19, 2016 10:11 pm
Posts: 1
A very long, but also a very interesting read. What an exceptionally cool project!

I thought the 'outset goals' were pretty tight - using only components available in 1980, and still available today, and from multiple suppliers! A tough one, and mostly achieved too. I am very impressed you got 40MHz out of a breadboard so large.

The only exception to the "1980" rule that has been present from the very start, and is still present, is the use of 512K (x8) SRAM chips. They weren't available in 1980, and I can remember when 1 mega-BIT DRAM became available (in Australia anyway) in 1983-84, the company boss used to keep them at home in his safe because the damn things were so expensive!! SRAM was only up to 8K (x8) at the time and if you really wanted to splash-the-cash, you could sometimes get 32K (x8). And they were slow too.

The demos are very impressive, but they should truthfully say 'VGA GPU using only 7400 logic and modern SRAM'. Yeah, I'm being picky I know!

If "you" ever do a PCB for Vulcan-74, a SOIC layout would be just as easy for most people as a DIP layout. But like you say, a layout for both is easily achievable. I've seen a very few of your projects, and they all seem to be generating quite a large amount of interest - considering the size of the target audience anyway. Perhaps PCB design/layout would be something someone else would do, as you seem to be much more interested in 'experimenting' and doing rather than polishing anyway. Have you thought about asking (on the forum) if someone is interesting in doing just that?

The 6502 was a bit of a niggle, being the other exception (ie: a single supplier component), and it is very impressive indeed that you have decided to ditch it and roll your own CPU. Sad to see the sound engine go though.

I don't quite understand (like you) how a company can thumb hobbyists for a product that is priced for hobbyists! 'Big' companies like Solidworks & Altium are getting in at the university level these days with a cheap, sometimes free, version... the student/s leave and when they get a job, they instantly prefer that tool, the employer gets more productive work, the software supplier sells the professional version... and the upgrades, the add-ons, the maintenance... Microchip (and others too) have been doing a very similar thing with hobbyists (and high school kids) for years. I dislike PIC, but they are very popular, and I think that is why.

I agree with you about device toolchains... it is so frustrating to spend more time installing, re-installing, registering, configuring, finding drivers, finding the version you have is not-quite-right, and generally fighting the tool rather than doing good work. Any they just seem to be getting worse rather than better!... oh, you have to download java... oh, and then you have to download .net (make sure it is the right version), and you got the x64 version and not the x86 version, silly boy. It turns what would otherwise be an immensely enjoyable project into a nightmare of frustration - it has certainly had a negative effect on my electronics design experiences.

One idea I read a few posts back, but it never got an answer, was I did think it was interesting if the GPU could flag a collision... for example when a bullet sprite hits an enemy sprite, or a bomb sprite hits your gun outpost sprite. It may not be worthwhile because in a normal game you have to check for so many collisions anyway, so setting a flag would then mean you then have to check which collision it was...

I like your work, and I like that you share it with the community, with photos and videos, and the 'tried this, but then did that' stories. I have really enjoyed this thread. My enthusiasm for getting back to core electronics has taken a real boost thanks to Vulcan-74 and Quark-85. Thanks!!
MM


Top
 Profile  
Reply with quote  
PostPosted: Thu Mar 10, 2016 1:48 am 
Offline
User avatar

Joined: Mon May 25, 2015 2:25 pm
Posts: 690
Location: Gillies, Ontario, Canada
It's been a while!

My project is still a work in progress, but lately I have been dedicating my weekends to a chicken coop that needs to be ready in a month.
To fill my odd few hours of time, I have been doing a VGA project in MIPs assembly. Need to keep the mind working!

Having had time to think about Vulcan-74, I have decided to complete the unit with the 6502 as originally planned.
It was really out of frustration with the WDC compiler (no go for hobby use) that made me step back, but I am over it now.
6502 assembly is fun, and there are plenty of free tool chains that work just fine.
When I get this one completed, I will just build a second Vulcan Video System for my DIY CPU.

So the 6502 is back in the captain's seat.
The World's most powerful 6502 based game system shall soon come to life!

Radical Brad


Top
 Profile  
Reply with quote  
PostPosted: Thu Mar 10, 2016 3:25 am 
Offline
User avatar

Joined: Sun Jun 30, 2013 10:26 pm
Posts: 1949
Location: Sacramento, CA, USA
Bitchin'. When you get your custom processor fully spec'd out, please consider opening a thread on the forum at anycpu.org/forum/ ... it could use a boost of fresh, juicy material, and my poor little 65m32 is still floundering in spec doc limbo.

Mike B.


Top
 Profile  
Reply with quote  
PostPosted: Thu Mar 10, 2016 12:21 pm 
Offline

Joined: Wed Nov 04, 2015 12:18 pm
Posts: 2
Oneironaut wrote:
So the 6502 is back in the captain's seat.


Cool!


Top
 Profile  
Reply with quote  
PostPosted: Sat Mar 12, 2016 12:34 am 
Offline
User avatar

Joined: Mon May 25, 2015 2:25 pm
Posts: 690
Location: Gillies, Ontario, Canada
Ok, back to the grindstone!

One of the issues with building a ROMless 6502 system is the requirement to share the Program Memory with both the 6502 as well as the mechanism that loads the memory. Reading the datasheet, it shows that BE will put the address bus, data bus, and RW line into the high impedance state, which makes things easier. The problem will be the clock signal, which will keep on truckin' regardless of what the 6502 is doing. This causes a problem due to the typical RW qualifying logic that syncs the 6502 read and write functions with the clock.

In order to get around this with the absolute minimum number of gates, I whipped this messy wire test up...

Image

The clock is now "switchable", and when BE is low, RW is also pulled low (Boot Mode) by the pulldown resistor, and the 6502 is held in reset.
There is another NAND controlling the main Clock signal as well, which can be manually pulsed when in Boot Mode.
When BE is high (Run Mode), the 6502 is taken from reset, and all of the lines are back on the bus. The master clock is also reconnected.

If have tested this, and so far it seems to work fine.
I am using the AVR to load the SRAM.

As I continue to test the 6502, I will post details on my decode system, which now has 256 individual IO lines mapped to Address Location 512.
It feels good to put the 6502 back on the board!

Cheers!
Radical Brad


Top
 Profile  
Reply with quote  
PostPosted: Sat Mar 12, 2016 7:26 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8507
Location: Midwestern USA
Oneironaut wrote:
Reading the datasheet, it shows that BE will put the address bus, data bus, and RW line into the high impedance state, which makes things easier. The problem will be the clock signal, which will keep on truckin' regardless of what the 6502 is doing. This causes a problem due to the typical RW qualifying logic that syncs the 6502 read and write functions with the clock.

That's why RDY exists.

Quote:
The clock is now "switchable", and when BE is low, RW is also pulled low (Boot Mode) by the pulldown resistor, and the 6502 is held in reset.

I seem to recall that the NMOS 6502 family can be damaged if the reset input is held low for too long.

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


Top
 Profile  
Reply with quote  
PostPosted: Sat Mar 12, 2016 7:53 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8544
Location: Southern California
BigDumbDinosaur wrote:
Oneironaut wrote:
The clock is now "switchable", and when BE is low, RW is also pulled low (Boot Mode) by the pulldown resistor, and the 6502 is held in reset.

I seem to recall that the NMOS 6502 family can be damaged if the reset input is held low for too long.

The discussion about the NMOS having a heating problem requiring that the RST\-low pulse be kept very short is at viewtopic.php?f=4&t=1927 . NMOS 6502 didn't have BE, so I'm sure Oneironaut is talking about WDC's CMOS.

_________________
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  
PostPosted: Sat Mar 12, 2016 3:29 pm 
Offline
User avatar

Joined: Mon May 25, 2015 2:25 pm
Posts: 690
Location: Gillies, Ontario, Canada
Yes, WDC65C02. No halt and catch fire issues there!
Not sure how RDY would help me put my master clock into high impedance state though.
My Boot loader logic needs to take over the clock for control over the WE / OE lines on the SRAM.
In other words, the clock oscillator has to go invisible while the logic fills the Program Memory.
CLK is currently a 10MHz can oscillator. Some have an Enable pin, and I may try to exploit that as well.

What I have works, and has only the propagation of 2 NAND gates between 6502 and SRAM, so I am happy with it so far.

Brad


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 842 posts ]  Go to page Previous  1 ... 24, 25, 26, 27, 28, 29, 30 ... 57  Next

All times are UTC


Who is online

Users browsing this forum: Google [Bot] and 12 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: