6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sun Nov 24, 2024 4:39 am

All times are UTC




Post new topic Reply to topic  [ 146 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10
Author Message
PostPosted: Wed Feb 02, 2022 4:13 pm 
Offline
User avatar

Joined: Tue Aug 11, 2020 3:45 am
Posts: 311
Location: A magnetic field
Sheep64 on Thu 11 Nov 2021 wrote:
You're probably over-thinking this problem.


No, actually, I'm under-thinking the problem. The shift register solution requires four signal lines: clock, data, set bits live - and then a programming pulse with controlled duration. I considered bodging this into a NES input peripheral extension. However, that would be a horrible exercise. For a more elegant solution, I highly recommend AndersNielsen's scheme to de-couple processor speed and pulse width by using a crystal clocked shift register which deliberately runs dry. AndersNielsen devised this to control WS2812B LEDs from 2MHz 6502 but the principle is widely applicable.

XR2801 is an attempt to implement a shift register design. I'm beginning to understand that circuit board layout is an iterative annealing process where the first attempt is best discarded. Even after several iterations, there may be WTF design decisions which can be optimized; most typically wires to nowhere, curious junctions (which look great on screen) or scenic tours around a board.

My first attempt was entertainingly awful. I "painted myself into a corner" where I required a fly lead to continue the shift register chain. In mention this because experienced designers may be amused by my first encounter with this phenomena. Likewise, I was unhappy with a power, clock and serial data bus which ran around the edge. I was more disappointed by component orientation. In an draft version of the XR2601 main board, I found that inward DIP components allowed ground around the outside and an inner power rail. However, this is only useful is very specific circumstances and is deprecated on all designs. I can almost feel BigEd's stern, tutting disapproval of my willful violation of least surprise. (In this and other matters, I am considerably swayed by BigEd's advice.) However, this was not the most disappointing feature of my design. A design of this triviality should not have 10 vias.

I repeated the design with a more suitable data path. I also ensured that the two most popular EEPROM types can be programmed. Oddly, this didn't make the design wider. It only made the design taller to accommodate 28 pin DIP and 32 pin DIP chips. The discussion about "river routing" aided one tight spot. Overall, I am happy that I got a superior design down to one via.

I am working on a list of design rules and this redundant newbie exercise has been helpful to refine the list. In particular, I specify large (3mm tall, 0.3mm thick) silk-screen component numbers on both sides of the board. Likewise, interface signals are silk-screened on both sides. I am similarly fastidious about fixing holes and rounded corners. I am my primary customer and I am able to describe in vast detail how my primary customer is not only an idiot but an award winning idiot. This is particularly true before a second coffee. Therefore, skimping on safeguards will disproportionately disadvantage myself.

My overall intention is that any module may be soldered, interfaced, affixed and programmed without reference to documentation. Obviously, this is impossible in most cases. However, I believe that it is highly beneficial to streamline the process wherever possible. Unlike software comments which may fall out of step, text on a board must be current otherwise it will be mis-leading or contradictory. Sheep20 is amused by my placement of text typically of the form "SOLDER GOES ON THIS SIDE. COMPONENTS GO ON OTHER SIDE." and is particularly amused by abbreviated versions on smaller boards, such as "CHIPS THIS SIDE" or "CHIP SIDE", and suggested that we might be mistaken for a venture called Chipside Technology or similar. Actually, that could be a plausible Taiwanese name and it wouldn't look out of place among Allwinner, Ainol or Award. Nor would it look out of place among CkeyiN®, Dttrol or Xiomi.

I highly recommend designing your own EEPROM programmer. Although it has been done thousands of times before, it is a good exercise and oddly satisfying. However, if you are in a hurry, an untested example is freely available.


Attachments:
xr2801-0-1.jpg
xr2801-0-1.jpg [ 54.28 KiB | Viewed 1425 times ]
xr2801-1-1.jpg
xr2801-1-1.jpg [ 50.94 KiB | Viewed 1425 times ]

_________________
Modules | Processors | Boards | Boxes | Beep, Beep! I'm a sheep!
Top
 Profile  
Reply with quote  
PostPosted: Wed Feb 02, 2022 4:29 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1120
Location: Albuquerque NM USA
Ah, that reminds me. Prog65 is finished and documented here:
https://www.retrobrewcomputers.org/doku ... og65r2home

I still have 4 extra pc boards. Anyone (in USA) interested, please PM me with your addresses. I'll ship a bare PC board in First Class letter mail free.
Bill
Attachment:
Prog65_rev1_f.jpg
Prog65_rev1_f.jpg [ 440.17 KiB | Viewed 1423 times ]


Top
 Profile  
Reply with quote  
PostPosted: Fri Feb 04, 2022 8:06 am 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8546
Location: Southern California
FWIW, I just started a related topic, "(E)EPROM/flash programming algorithms.

_________________
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: Tue Aug 01, 2023 12:55 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1120
Location: Albuquerque NM USA
I'm reviving this thread because of couple interesting recent topics:

overclocking DIP 6502 with TTL logic, viewtopic.php?f=4&t=7670
locked room challenge, viewtopic.php?f=4&t=7686

Prog65 is based on DIP 6502 using TTL logic so I'm curious whether it can be overclocked into mid-20MHz, specifically 25.175MHz which leads to the "locked room challenge" because at 25.175MHz 6502 can beam race VGA display with the help of a parallel-load 8-bit shift register, 74166, thus serves as a VGA monitor. Prog65 can bootstrap itself through the parallel interface to program a new flash so it may be possible to create dual-6502 standalone computer from scratch as stipulated in the "locked room challenge".

To run at 25.175MHz, I need fast RAM. My existing DIP RAM is 55nS and I need 20nS RAM which I do have but it is in 32pin SOJ package. First modification is to wire in the SOJ32 RAM instead of the DIP RAM. This is done at the back of the board using point-to-point wiring to minimize wire length. Pictures of the modified Prog65.
Attachment:
prog65_fastRAM_top_F.jpg
prog65_fastRAM_top_F.jpg [ 550.81 KiB | Viewed 1087 times ]

Attachment:
Prog65_fastRAM_bottom_F.jpg
Prog65_fastRAM_bottom_F.jpg [ 605.92 KiB | Viewed 1087 times ]


It works at the nominal 7.37MHz but intermittently crashed at 10MHz, so no hope of getting it to run at 25MHz without logic modifications. Prog65 has nice breadboard area for adding logic so the idea is to add one wait state for flash and I/O at $8000-$FFFF but keep RAM access ($0-$7FFF) at zero wait. Prog65 is an auto-routed 2-layer PC board so it is not clear how fast I can overclock it.

To be continued...


Top
 Profile  
Reply with quote  
PostPosted: Tue Aug 01, 2023 7:36 am 
Offline
User avatar

Joined: Wed Feb 13, 2013 1:38 pm
Posts: 589
Location: Michigan, USA
plasmo wrote:
To run at 25.175MHz, I need fast RAM. My existing DIP RAM is 55nS and I need 20nS RAM which I do have but it is in 32pin SOJ package.
Might these relatively inexpensive 10/15/20-nS skinny 64K RAM chips be useful? I suspect they're 'pulls' but they're very clean and I haven't had any problems with them, so far.
Attachment:
W24512AK.jpg
W24512AK.jpg [ 132.9 KiB | Viewed 1067 times ]
The RAM chips are inexpensive enough at ~68¢ each that I don't mind soldering them directly onto a PCB underneath the CPU.
Attachment:
SBC6502 proto zif.png
SBC6502 proto zif.png [ 912.68 KiB | Viewed 931 times ]
BTW, I also made a small 0.8-mm thick PCB with a 64K RAM chip that fits onto the shoulder of the pins on a 40-pin machined pin socket intended for a 6502 CPU that might be used to simplify PCB routing and reduce board space. You could solder the socket with integrated RAM directly onto a PCB or place it in-between a CPU and existing CPU socket (I'd be happy to send you a PCB, if you'd like).


Attachments:
64K SRAM (W24512AK).pdf [201.83 KiB]
Downloaded 70 times
6502 64K Socket.png
6502 64K Socket.png [ 120.68 KiB | Viewed 1067 times ]
6502 Socket.jpg
6502 Socket.jpg [ 290.29 KiB | Viewed 1067 times ]


Last edited by Michael on Fri Aug 04, 2023 5:12 am, edited 1 time in total.
Top
 Profile  
Reply with quote  
PostPosted: Tue Aug 01, 2023 1:52 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1120
Location: Albuquerque NM USA
I think the fast skinny DIP RAM is very nice and cheap. It can be tucked under flash or CPU as you’ve done. I’ve a roll of SMT 128K RAM, that’s why I used it extensively. I’ve made an DIP-SMT adapter (https://www.retrobrewcomputers.org/doku ... rds:no-ps2) but I’m out of the adapter that’s why I manually wired one for this experiment.
Bill


Top
 Profile  
Reply with quote  
PostPosted: Wed Aug 02, 2023 6:21 am 
Offline
User avatar

Joined: Wed Feb 13, 2013 1:38 pm
Posts: 589
Location: Michigan, USA
Just thought I'd mention it as a simple low-profile solution. I thought about using the method for a mini' SBC by stacking sockets (see below).

BTW, that AliExpress vendor also sells 15-nS skinny 128K RAM chips for the same price (about 68¢ each).

Good luck on your project...


Attachments:
1802 Stack.png
1802 Stack.png [ 32.08 KiB | Viewed 1003 times ]
Top
 Profile  
Reply with quote  
PostPosted: Wed Aug 02, 2023 4:28 pm 
Offline

Joined: Mon Jan 19, 2004 12:49 pm
Posts: 988
Location: Potsdam, DE
I still remember the shock we felt back in the early eighties when we discovered that the Ikegami HL-79 [0] portable TV camera had the never-before-seen concepts of ICs on both sides of the boards...

Neil

[0] Handy Looky - really, so of course the tech manual was instantly christened the Handy Looky Cooky Booky


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 04, 2023 2:51 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1120
Location: Albuquerque NM USA
I was hoping to preserve the programmer mode of operation while adding a wait state to $8000-$FFFF, but it didn't work out with the limited TTL logic available on the original Prog65 board. I'm reluctant to add too many gates because it'll only slow down the overall operation. So I only bodge a 74ACT74 to add one wait state for accessing $8000-$FFFF where FT245 console I/O and flash memory are located. This is the old-fashion delay-RDY-by-one-clock approach, not the clock-stretch approach. Flash (SST39SF010) is rated at 70nS so with one wait state, the calculated max clock is 20MHz. With small mods, the flash socket can also accommodate 45nS W27C512 which is good to 33MHz.

My test program is the simple four-function monitor that loads file, execute file, display memory and modify memory. The monitor resides in flash from $F000 to $FFFF.

Good thing about FT245 is its communication is independence of CPU clock, so I can change 6502 clock arbitrarily without worrying about its effect on console communication.

Below is the modified Prog65 and associated schematic. I want to minimize the cut/jumper to existing design so the modification is not as efficient as starting with a brand new design.

The bottom line is the modified Prog65 can run to 24MHz with 70nS SST39SF010. This is because SST39SF040's access time is conservative allowing it to work at about 55nS. In fact, SST39SF010 partly worked at 25MHz, successfully display/modify memory and execute program at specified location, but the file load operation failed checksum check. Further investigation showed flash was not the bottle neck; using faster W27C512 I can run to 28.8MHz as verified by scope but I/O communication were gibberish. The bottle neck turned out to be FT245. The FT245 interface has several cascaded gates thus introducing significant timing skew. Perhaps 74AS27 may help; or perhaps I should have 2 wait states for flash and I/O.

At this point 25.175MHz operation is tantalizingly close. DIP 6502 and 2-layer PCB have not being limiting factors.
Bill


Attachments:
Prog65_Overclock.pdf [27.83 KiB]
Downloaded 63 times
prog65_overclock_experiment_bottom.jpg
prog65_overclock_experiment_bottom.jpg [ 1.23 MiB | Viewed 938 times ]
prog65_overclock_experiment_top.jpg
prog65_overclock_experiment_top.jpg [ 1.24 MiB | Viewed 938 times ]
Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 04, 2023 3:37 am 
Offline

Joined: Fri Jul 09, 2021 10:12 pm
Posts: 741
Bill your point to point soldering is very impressive to me, it's a skill I've pretty much given up on learning, as my attempts so far have been so bad and frustrating. I can do through hole and SMT, but I just don't seem to have the coordination to hold tiny springy wires in place while I solder them!


Top
 Profile  
Reply with quote  
PostPosted: Fri Aug 04, 2023 11:18 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1120
Location: Albuquerque NM USA
I use medium tip tweezers to bend 30-ga wire to a hook then reflow the solder while pulling the hook into reflowed solder. Once one end of a wire is soldered, the other end is easier to manipulate and solder. It is not as fast as wire wrapping, but fast enough to do small prototype. I have good set of wire wrap tools including an electric wire wrapper, but have not use them for last 10+ years.
Bill


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 146 posts ]  Go to page Previous  1 ... 6, 7, 8, 9, 10

All times are UTC


Who is online

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