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

All times are UTC




Post new topic Reply to topic  [ 82 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Author Message
PostPosted: Tue May 05, 2020 10:16 am 
Offline

Joined: Tue Sep 03, 2002 12:58 pm
Posts: 336
cbscpe wrote:
Shawn Odekirk wrote:
I have replaced my 1 MHz oscillator with a 10 MHz oscillator and everything seems to be working fine, which is a little surprising since the RAM and ROM are 150 ns parts and I have not implemented wait-states. I have written a small RAM test program and it seems to work correctly.
What kind of stress testing can I do to see how close to the edge I am?

Use a strong aka hot hairdryer and heat your setup or if you have an oven that supports low temperatures like 60 celsius put the setup in the oven


Stick it in the fridge or freezer as well. And you can hook it up to a variable power supply and see how it runs at lower or higher (but still in-spec) voltages. If you're feeling enthusiastic, try the extremes of voltage in combination with extremes of temperature.


Top
 Profile  
Reply with quote  
PostPosted: Tue May 05, 2020 2:08 pm 
Offline
User avatar

Joined: Fri Dec 11, 2009 3:50 pm
Posts: 3367
Location: Ontario, Canada
Shawn Odekirk wrote:
I have replaced my 1 MHz oscillator with a 10 MHz oscillator and everything seems to be working fine
Congratulations on this encouraging result! But you're certainly prudent to ask, how close to the edge I am?

When it comes to stress testing, we need to be cautious about what we consider a successful test. As timing margins get pushed tighter and tighter, the first failures to appear may be VERY subtle indeed. "Corner cases," yes, and some of the corners can be VERY obscure (though still potentially fatal).


Have a look at this thread, for example. :o :shock: :!:
Quote:
What's extremely unexpected is the failure mode: sometimes bad N or C flags from an SBC immediate, and no other addressing mode or instruction. The result is OK, but the flag not.


-- 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: Sat Jun 27, 2020 3:45 am 
Offline
User avatar

Joined: Mon Mar 23, 2020 4:02 pm
Posts: 52
Location: Parker, CO
Thanks to those who gave stress test suggestions.
Recently I've been struggling to add an SC28L92 DUART to my computer. I've read and re-read the datasheet and BigDumbDinosaur's guides, but I can't seem to get it to work consistently. I keep getting occasional corrupted data. I think it may be a timing issue.
To troubleshoot, I decided to try repeatedly writing to and reading from the general purpose register (1100 / $C) to see if I always read the same value I wrote. Here is the program I wrote to do that.
Code:
$1000  A2  00        LDX  #$00
$1002  8A            TXA
$1003  9D  00  05    STA  $0500,X
$1006  8D  1C  80    STA  $801C
$1009  AD  1C  80    LDA  $801C
$100C  9D  00  06    STA  $0600,X
$100F  E8            INX
$1010  D0  F0        BNE  $1002

Here is what was written to the memory block at $500.
Code:
    $0500  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  ................
    $0510  10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F  ................
    $0520  20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F   !"#$%&'()*+,-./
    $0530  30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F  0123456789:;<=>?
    $0540  40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F  @ABCDEFGHIJKLMNO
    $0550  50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F  PQRSTUVWXYZ[\]^_
    $0560  60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F  `abcdefghijklmno
    $0570  70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F  pqrstuvwxyz{|}~.
    $0580  80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F  ................
    $0590  90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F  ................
    $05A0  A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF  ................
    $05B0  B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF  ................
    $05C0  C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF  ................
    $05D0  D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF  ................
    $05E0  E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF  ................
    $05F0  F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF  ................

And here is what was written to the memory block at $600.
Code:
    $0600  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  ................
    $0610  10 11 12 13 14 15 06 07 18 19 1A 1B 1C 0D 0E 0F  ................
    $0620  20 21 22 23 24 25 26 07 28 29 2A 0B 2C 0D 0E 0F   !"#$%&.()*.,...
    $0630  30 31 32 03 34 05 06 07 38 09 1A 0B 3C 3D 3E 3F  012.4...8...<=>?
    $0640  40 41 42 03 44 05 06 07 48 49 4A 0B 0C 0D 0E 0F  @AB.D...HIJ.....
    $0650  50 51 52 13 54 15 16 07 58 19 1A 0B 1C 0D 0E 0F  PQR.T...X.......
    $0660  60 61 02 23 64 05 26 07 68 29 2A 0B 2C 0D 0E 0F  `a.#d.&.h)*.,...
    $0670  70 31 32 03 34 75 36 77 38 09 7A 7B 7C 7D 7E 7F  p12.4u6w8.z{|}~.
    $0680  80 81 82 03 84 05 06 07 88 89 8A 0B 0C 0D 0E 0F  ................
    $0690  90 91 92 13 94 05 16 07 98 19 1A 0B 1C 0D 1E 0F  ................
    $06A0  A0 A1 A2 23 A4 25 26 07 A8 29 2A 0B 2C 0D 0E 0F  ...#.%&..)*.,...
    $06B0  B0 31 B2 03 34 35 B6 B7 38 09 3A BB BC BD BE 0F  .1..45..8.:.....
    $06C0  C0 C1 C2 03 C4 05 06 07 C8 09 0A 0B 0C 0D 0E 0F  ................
    $06D0  D0 D1 D2 13 D4 15 16 07 D8 19 1A DB 1C DD DE DF  ................
    $06E0  E0 21 22 03 24 05 26 07 E8 29 2A EB 2C ED EE EF  .!".$.&..)*.,...
    $06F0  B0 31 32 F3 34 F5 F6 F7 38 F9 FA FB FC FD FE 0F  .12.4...8.......

It looks like D0-D3 are consistently correct, but D4-D7 are not. I'm not sure what that means and if it is significant.
I have double checked my wiring and it looks correct, and I didn't find any shorts when I checked with an ohm meter.
I am currently clocking my computer using an 8 MHz crystal, but I get similar results when I use a 1 MHz crystal.
I have tied I/M to VCC to ensure the SC28L92 is in 80xxx mode.
Currently, both WRN and RDN are qualified with PHI2, but I had the same results when only WRN was qualified.
CEN is not qualified with PHI2.
I'm not sure what to try next. Does anyone have any suggestions?

Thanks,
Shawn


Top
 Profile  
Reply with quote  
PostPosted: Sat Jun 27, 2020 6:03 am 
Offline
User avatar

Joined: Fri Dec 11, 2009 3:50 pm
Posts: 3367
Location: Ontario, Canada
Shawn Odekirk wrote:
I decided to try repeatedly writing to and reading from the general purpose register (1100 / $C) to see if I always read the same value I wrote.

[...]
It looks like D0-D3 are consistently correct, but D4-D7 are not. I'm not sure what that means and if it is significant.

This makes me suspect you are inadvertently accessing some other register, not the general purpose register (1100 / $C). Is there some other register in the chip for which you'd expect D0-D3 to read back the same, but the other bits not? If so, what is the address of that register? Similar to 1100 except for one bit, perhaps?

In case it helps anyone to ponder, here (below) is an animation to compare the good data (green) with the bad (red).

Despite all your checking, I suspect there's a wiring error or perhaps an error in the doc that guided the wiring. Just a hunch. It's the best I can offer so close to bedtime. :) Good luck!

ps- any surprises if you change your test program to write then read RAM instead of I/O at $801C?

-- Jeff


Attachments:
File comment: click on this preview to view the ANIMATION
Animation1.gif
Animation1.gif [ 104.1 KiB | Viewed 5181 times ]

_________________
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: Sun Jun 28, 2020 12:32 am 
Offline
User avatar

Joined: Mon Mar 23, 2020 4:02 pm
Posts: 52
Location: Parker, CO
Dr Jefyll wrote:
ps- any surprises if you change your test program to write then read RAM instead of I/O at $801C?

Surprises? That depends on our expectations.
Writing to and reading from RAM doesn't exhibit this problem.


Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 28, 2020 12:49 am 
Offline
User avatar

Joined: Mon Mar 23, 2020 4:02 pm
Posts: 52
Location: Parker, CO
Dr Jefyll wrote:
Shawn Odekirk wrote:
I decided to try repeatedly writing to and reading from the general purpose register (1100 / $C) to see if I always read the same value I wrote.

[...]
It looks like D0-D3 are consistently correct, but D4-D7 are not. I'm not sure what that means and if it is significant.

This makes me suspect you are inadvertently accessing some other register, not the general purpose register (1100 / $C). Is there some other register in the chip for which you'd expect D0-D3 to read back the same, but the other bits not? If so, what is the address of that register? Similar to 1100 except for one bit, perhaps?

I believe only the Mode and General Purpose registers are R/W. I think the other registers would return something completely different when read than what was written. I had the same problem writing to and reading from the Mode register before I tried the General Purpose register.
Dr Jefyll wrote:
Despite all your checking, I suspect there's a wiring error or perhaps an error in the doc that guided the wiring. Just a hunch. It's the best I can offer so close to bedtime. :) Good luck!

You are probably right. I'll probably rewire it and see if that helps.
I would have already ordered another chip to rule out a bad chip, but it's hard to justify paying as much for shipping as the part itself.
Thanks for your comments.


Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 28, 2020 1:59 am 
Offline
User avatar

Joined: Mon Mar 23, 2020 4:02 pm
Posts: 52
Location: Parker, CO
Oops! I lied. I don't get similar results when I use a 1 MHz oscillator. Here are the results I get for each of the oscillators I have.

1 MHz
Code:
    $0600  0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F  ................
    $0610  0F 0F 0F 0F 07 07 0F 07 0F 0F 0F 0F 0F 0D 0F 0F  ................
    $0620  0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F  ................
    $0630  0F 0F 0F 0F 07 35 06 37 0F 0F 3A 3B 3C 3D 3E 3F  .....5.7..:;<=>?
    $0640  0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F  ................
    $0650  0F 0F 0F 0F 07 07 07 57 0F 0F 0F 0B 0F 5D 5E 5F  .......W.....]^_
    $0660  0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0B 0F 6D 6E 6F  .............mno
    $0670  0F 0F 0F 73 74 75 76 77 78 79 7A 0F 0F 7D 7E 7F  ...stuvwxyz..}~.
    $0680  0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F  ................
    $0690  0F 0F 0F 0F 07 07 07 07 0F 0F 0F 0B 9C 9D 9E 9F  ................
    $06A0  0F 0F 0F 0F 0F 0F 07 0F 0F 0F 0F 0F AC AD AE AF  ................
    $06B0  0F 0F 0F B3 07 B5 B6 B7 0F B9 BA BB BC BD BE BF  ................
    $06C0  0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0B 0F CD 0F CF  ................
    $06D0  0F 07 0F 03 07 D5 D6 D7 0F D9 DA DB DC DD DE DF  ................
    $06E0  0F 0F 0F E3 E4 E5 E6 E7 0F E9 EA 0F EC ED EE EF  ................
    $06F0  0F F1 F2 0F 0F F5 F6 F7 F8 F9 FA FB FC 0F 0F 0F  ................

2 MHz
Code:
    $0600  00 01 02 03 04 05 06 0F 08 09 0A 0F 0C 0D 0E 0F  ................
    $0610  00 01 02 03 04 05 06 07 08 09 0F 0B 0C 1D 0F 0F  ................
    $0620  00 0F 02 03 04 05 06 07 08 09 0A 0B 0C 0D 2E 0F  ................
    $0630  00 07 02 03 04 05 36 37 08 09 0A 3B 3C 3D 0E 3F  ......67...;<=.?
    $0640  00 01 02 03 0F 05 06 07 08 09 0A 0B 0C 0D 0E 0F  ................
    $0650  00 01 02 03 04 05 06 07 08 09 0F 0B 0C 0D 0E 0F  ................
    $0660  00 01 02 03 04 05 06 67 08 09 0F 6B 0F 6D 6E 6F  .......g...k.mno
    $0670  00 01 02 73 74 75 76 07 08 79 7A 0F 0F 0D 0E 7F  ...stuv..yz.....
    $0680  00 01 02 03 0F 05 06 07 08 09 0A 0B 0C 0D 0F 0F  ................
    $0690  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 9E 9F  ................
    $06A0  00 07 02 03 04 05 06 A7 08 09 0A 0B 0C AD 0E 0F  ................
    $06B0  00 01 02 B3 04 B5 B6 07 08 B9 BA 0B BC 0D BE BF  ................
    $06C0  00 01 02 03 04 05 06 07 08 0F 0A CB 0C 0D 0E 0F  ................
    $06D0  00 01 02 03 04 D5 D6 D7 0F 09 0F DB DC DD DE DF  ................
    $06E0  00 01 02 E3 04 05 06 07 08 E9 EA 0F 0F ED 0E EF  ................
    $06F0  00 F1 F2 03 04 05 F6 F7 08 09 FA FB FC FD 0F 0F  ................

8 MHz
Code:
    $0600  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  ................
    $0610  10 11 12 13 14 15 16 07 18 19 1A 0B 1C 0D 0E 0F  ................
    $0620  20 21 22 23 24 25 26 27 28 29 2A 2B 2C 0D 0E 0F   !"#$%&'()*+,...
    $0630  30 31 32 03 34 05 06 07 38 09 3A 0B 3C 3D 3E 2F  012.4...8.:.<=>/
    $0640  40 41 42 03 44 05 06 07 48 49 4A 0B 4C 0D 0E 0F  @AB.D...HIJ.L...
    $0650  50 51 52 13 54 15 16 07 58 19 1A 0B 1C 0D 1E 0F  PQR.T...X.......
    $0660  60 61 62 23 64 25 26 07 68 29 2A 0B 2C 0D 0E 0F  `ab#d%&.h)*.,...
    $0670  70 31 32 03 34 75 76 77 38 19 3A 7B 7C 7D 7E 7F  p12.4uvw8.:{|}~.
    $0680  80 81 82 03 84 05 06 07 88 89 8A 0B 0C 0D 0E 0F  ................
    $0690  90 91 92 13 94 15 16 07 98 19 1A 0B 1C 0D 9E 0F  ................
    $06A0  A0 A1 A2 23 A4 25 26 07 A8 A9 AA 0B 2C 0D 2E 0F  ...#.%&.....,...
    $06B0  B0 31 32 03 34 B5 36 B7 38 39 3A BB BC BD BE BF  .12.4.6.89:.....
    $06C0  C0 C1 C2 03 C4 05 06 07 C8 09 0A 0B 0C 0D 0E 0F  ................
    $06D0  D0 D1 D2 13 D4 15 16 07 98 19 1A DB 1C DD DE DF  ................
    $06E0  E0 21 22 03 24 25 26 07 E8 29 2A EB 2C ED EE EF  .!".$%&..)*.,...
    $06F0  F0 31 32 F3 34 F5 F6 F7 38 F9 FA FB FC FD FE 0F  .12.4...8.......

10 MHz
Code:
    $0600  00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  ................
    $0610  10 01 12 13 14 05 16 17 08 19 1A 1B 1C 1D 1E 1F  ................
    $0620  20 21 22 23 24 05 26 27 08 29 0A 2B 2C 2D 2E 0F   !"#$.&'.).+,-..
    $0630  30 31 32 33 34 35 36 37 38 09 3A 3B 0C 3D 3E 3F  012345678.:;.=>?
    $0640  40 41 42 43 44 05 46 07 48 49 4A 4B 4C 4D 0E 4F  @ABCD.F.HIJKLM.O
    $0650  50 51 52 53 54 55 56 57 58 09 5A 5B 5C 0D 5E 5F  PQRSTUVWX.Z[\.^_
    $0660  00 61 62 63 64 05 66 67 68 69 6A 0B 6C 6D 6E 6F  .abcd.fghij.lmno
    $0670  00 71 72 73 74 75 76 07 78 79 7A 7B 2C 0D 7E 7F  .qrstuv.xyz{,.~.
    $0680  80 01 82 83 04 85 06 87 88 09 8A 8B 8C 8D 8E 8F  ................
    $0690  90 91 92 03 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F  ................
    $06A0  A0 A1 A2 A3 A4 A5 A6 A7 08 A9 0A AB AC 0D AE AF  ................
    $06B0  B0 B1 02 B3 B4 B5 B6 07 08 B9 BA BB BC BD BE 0F  ................
    $06C0  C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB 0C CD 0E CF  ................
    $06D0  D0 01 D2 D3 D4 05 06 D7 D8 D9 DA DB 0C DD DE DF  ................
    $06E0  E0 E1 E2 03 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF  ................
    $06F0  00 F1 F2 03 F4 05 F6 F7 F8 09 0A FB FC FD FE FF  ................

There are fewer errors the faster it goes.
Time to study the timing diagrams some more!

Shawn


Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 28, 2020 2:53 am 
Offline
User avatar

Joined: Fri Dec 11, 2009 3:50 pm
Posts: 3367
Location: Ontario, Canada
Shawn Odekirk wrote:
I'll probably rewire it and see if that helps.
Before doing that, maybe you should directly observe the highs and lows on the various pins of the device during a write and a read. If the values are not as expected then a wiring error probably exists. If the values are as expected then the doc (or your understanding of it) may be faulty.

A logic analyzer is one way to make that direct observation, but instead you could use an analog 'scope, or even stop the clock and measure with a voltmeter. The key point is to measure right on the pins of the IO device, not elsewhere on the board.

In all cases you'd want just a very short loop, such as only three instructions: STA with a value you expect will fail, a LDY to read the value back, and a BRA or JMP so the loop repeats forever.

I suggest using a 2-channel scope and triggering from a channel that's displaying the CPU SYNC signal. When you get that display stable you'll know which instruction is which because only the BRA instruction is 3 cycles. And you'll know the 4th cycles of the other two instructions are the cycles during which the IO device is written and read. Having identified the cycles of interest, now with the other channel you can see what's going on with all the device pins -- address and data, of course, and whatever else you'd like to see.

Stopping the clock could be a question of single-stepping through the loop; on Garth's site he describes how to single-step the clock (halfway down this page). Maybe another option is to somehow tie the device's /CS to the RDY pin, via a flipflop, probably -- one you can manually reset with a pushbutton to advance to the next stopping point (the next device access).

-- Jeff

Edit: I see you posted further info while I was typing this. Now I think scoping the system running at speed would reveal more than single-stepping would. In particular it would be good to see if the actual logic levels need attention.

_________________
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: Sat Oct 10, 2020 7:30 pm 
Offline
User avatar

Joined: Mon Mar 23, 2020 4:02 pm
Posts: 52
Location: Parker, CO
I've been away from the forum for a while, but in that time I have been working on my computer and have made some progress.
I think I previously mentioned that the Ben Eater 6502 breadboard computer re-ignited my interest in building a computer. I started with one of his kits, and then started adding to it. I first added a 6551, and then tried to add a SC28L92. However, since the additions were pretty simple, I never updated Ben's schematic or created one of my own. So, I took some time, started learning KiCad, and created my own schematic.
After I created a schematic I went back and rebuilt my breadboard version following the schematic. While rebuilding the breadboard version I think I figured out that the problem I was having with the SC28L92 was due to noise on the RESET line. I updated the schematic to address the noise, updated the breadboard and everything seems to be working correctly, including the SC28L92.
After that, I completely rebuilt my wire-wrap version. It is currently running at 10 MHz and appears to be stable.
I'm attaching the schematic and some photos if anyone is interested.
I really appreciate all of the help I have received to get me to this point.

Shawn


Attachments:
File comment: Breadboard
SO6502_BB.JPG
SO6502_BB.JPG [ 1.43 MiB | Viewed 5034 times ]
File comment: Wire-wrap
SO6502_WW.JPG
SO6502_WW.JPG [ 1003.8 KiB | Viewed 5034 times ]
File comment: Schematic
S06502_Schematic.pdf [252.63 KiB]
Downloaded 55 times
Top
 Profile  
Reply with quote  
PostPosted: Sat Oct 10, 2020 7:36 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10986
Location: England
> After that, I completely rebuilt my wire-wrap version. It is currently running at 10 MHz and appears to be stable.

Oh, that's a victory! Well done!


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 11, 2020 2:45 am 
Offline
User avatar

Joined: Mon Mar 23, 2020 4:02 pm
Posts: 52
Location: Parker, CO
While I was at it, since I had created a schematic in KiCad, I also created a PCB layout.
Originally I had the ICs oriented vertically with the DB-9 connectors on the right edge of the board, but I thought having them on the back edge of the board would be more conventional, so I moved them to the back edge and re-oriented the ICs horizontally.
I am attaching a photo of the mock-up I used to ensure everything fits.
When I received the DB-9 connectors I found that I had used the incorrect footprint and the physical connectors were several millimeters deeper. I was worried at first, but I was able to move things enough to free up enough room for the connectors. I'm glad I ordered and received the parts before I ordered the PCBs!
The PCB dimensions are 100mm x 100mm to take advantage of the low price from the PCB manufacturer.
By the way, the routing is 100% auto-routed using freerouting v1.4.4. I'm not an expert, so I don't know what could be improved, but I am happy with the results. If anyone sees any glaring problems, please let me know. I'm attaching print outs of the front and back copper layers. I included just the front and back copper layers to keep the clutter down, but if anyone wants to see the ground or power planes, or if the footprints or silkscreen would help let me know and I'll include those.
I plan to double check the layout and routing a few more times before ordering PCBs early this coming week.

Thanks,
Shawn


Attachments:
File comment: Mock Up
mockup.JPG
mockup.JPG [ 770.1 KiB | Viewed 5014 times ]
File comment: Front Copper
front.pdf [14.7 KiB]
Downloaded 53 times
File comment: Back Copper
back.pdf [15.5 KiB]
Downloaded 45 times
Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 11, 2020 3:58 am 
Offline

Joined: Mon May 21, 2018 8:09 pm
Posts: 1462
It strikes me that the signals from the 22V10 all go a long way across the board. It might be a better idea to move it nearer to the devices it connects to. Displacing the 7400 and the UART crystal would be a relatively minor and inconsequential sacrifice.

Conversely, keeping the two memory devices side by side, as they are now, is a good idea since they essentially connect pin to pin. The signals from there to the CPU and other devices are the ones that get tangled up, because the JEDEC memory pinout is a complete shambles. Consider rotating the pair of them together, in 90° increments, to see which way routes the address and data lines least messily.


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 11, 2020 6:38 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8506
Location: Midwestern USA
Shawn Odekirk wrote:
I've been away from the forum for a while...I went back and rebuilt my breadboard version following the schematic. While rebuilding the breadboard version I think I figured out that the problem I was having with the SC28L92 was due to noise on the RESET line.

What is controlling the 28L92's reset line that would generate noise?

Quote:
It is currently running at 10 MHz and appears to be stable.

10 MHz is nothing to sneeze at, especially with 74HC logic. Good job.

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


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 11, 2020 6:49 am 
Offline
User avatar

Joined: Thu May 28, 2009 9:46 pm
Posts: 8506
Location: Midwestern USA
Shawn Odekirk wrote:
While I was at it, since I had created a schematic in KiCad, I also created a PCB layout.

I'm not seeing anything in your layout that takes care of power and ground. Is this a four-layer board?

Also, there are some places where traces are needlessly being "wound around" pins. Some massaging should produce shorter and more direct paths. Pay attention to the board house's design rules with regard to spacing of different board features. It looks as though you're pretty tight in a couple of locations—it's hard to estimate anything with the layouts in PDFs.

Pay heed to what Chromatix said about the positioning of the chips.

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


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 11, 2020 10:26 am 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
First, congrats on getting your system up and running, that always feels good... having success!

A few comments on your design and some possible changes. Again, everyone has their own view on this stuff, but...

- Look at the TI7705B as a reset chip. It will give you positive and negative reset lines. You can use the DS1813 for a NMI trigger (panic button).
- WDC also make a W65C22 with an open collector IRQ output. Using this version, you could eliminate the 74HC00 entirely. You can also use a shottky diode for the IRQ line with the existing W65C22.
- I'm guessing you're using one of the serial lines for a console. In most cases, a Serial-to-USB adapter is used, as most current systems don't have serial ports anymore. If this is the case, you could swap out one of the DB-9 connectors with a FTDI adapter... mounts in the DB-9 format and can connect directly to the SC28L92 without any level changes.
- I also tend to hide the bypass caps for socketed DIP devices underneath the chip itself. You can usually get the leads even shorter/closer to the VCC pins that way.

Attachment:
Reset Circuit.jpeg
Reset Circuit.jpeg [ 69.79 KiB | Viewed 4995 times ]

Attachment:
DS_DB9-USB-15654(1).pdf [561.67 KiB]
Downloaded 51 times

Attachment:
Pocket-SBC-built.jpg
Pocket-SBC-built.jpg [ 225.98 KiB | Viewed 4995 times ]

_________________
Regards, KM
https://github.com/floobydust


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

All times are UTC


Who is online

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