6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Nov 16, 2024 2:03 pm

All times are UTC




Post new topic Reply to topic  [ 138 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 10  Next
Author Message
PostPosted: Thu Jan 07, 2021 7:34 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
Finished wiring between RAM, CPLD, and 6502. This should allow me to power up and serially load program into RAM and execute. First I'm going to walk away for few hours to screw up enough courage to power it up.

Attached are schematic of the prototype board as well as the schematic of the CPLD.


Attachments:
CRC65_CPLD_top.pdf [42.24 KiB]
Downloaded 72 times
CRC65_prototype_schematic.pdf [25.47 KiB]
Downloaded 75 times
DSC_62630107.jpg
DSC_62630107.jpg [ 1.25 MiB | Viewed 12717 times ]
DSC_62620107.jpg
DSC_62620107.jpg [ 1.18 MiB | Viewed 12717 times ]
Top
 Profile  
Reply with quote  
PostPosted: Fri Jan 08, 2021 1:08 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
After a nice lunch followed by a nap and puttering around in the garden, I decided to start out with a very simple program in ROM that just write an incrementing value to the transmit bit-bang register. Because data bit0 goes to the transmit output, I should see the output toggle every loop. This is just between CPLD and 6502, nobody else is involved.

Code:
000000r 1                  .ORG $ff80
00FF80  1               bitbang:
00FF80  1  8E 09 F0        STX SerData   ;data bit 0 is transmit out
00FF83  1  E8              INX
00FF84  1  4C 80 FF        JMP bitbang


And it works! With 7.37MHz clock I see a 409KHz square wave, 1.22uS high and 1.22 us low. 1.22uS is 9 7.37MHz clocks which is how long it takes to execute a loop. Current consumption is about 80mA.

Now a more complicated ROM program that reads a serial input, use it as the seed to run RAM diagnostic and toggles the serial transmit output when RAM diagnostic is completed correctly.

Code:
000000r 1                  .ORG $ff80
00FF80  1               start:
00FF80  1  AD 08 F0        LDA SerStat
00FF83  1  29 01           AND #1      ;receive ready is bit 0
00FF85  1  F0 F9           BEQ start
00FF87  1  AE 09 F0        LDX SerData   ;read clear status
00FF8A  1  A0 00           LDY #0
00FF8C  1               wrRAM:
00FF8C  1  8A              TXA
00FF8D  1  99 00 B0        STA $b000,y   ;test RAM location $b000-$b0ff
00FF90  1  E8              INX
00FF91  1  C8              INY
00FF92  1  D0 F8           BNE wrRAM
00FF94  1               ckRAM:
00FF94  1  8A              TXA      ;X is back to original value
00FF95  1  D9 00 B0        CMP $b000,y   ;verify against RAM location
00FF98  1  D0 0E           BNE err
00FF9A  1  E8              INX
00FF9B  1  C8              INY
00FF9C  1  D0 F6           BNE ckRAM
00FF9E  1  8E 09 F0        STX SerData   ;toggle serial transmit output
00FFA1  1  E8              INX
00FFA2  1  8E 09 F0        STX SerData
00FFA5  1  4C 80 FF        JMP start
00FFA8  1  4C A8 FF     err:   JMP err      ;stop


That works, too. So that means the wirings between 6502, CPLD, and RAM are correct.

This is also a good time to check the design margin. 14.7MHz clock works; 18.432MHz works; 20.28MHz works; but 22MHz failed, so the results are very similar to Proto65. I will now run the CRC65 at 14.7MHz

Now I need to go back to the bench and finish wiring up the compact flash interface and work on the bit-bang transmitter software. A good day!


Top
 Profile  
Reply with quote  
PostPosted: Sat Jan 09, 2021 2:56 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
Wiring on the CRC65 prototype is now completed. The attached photos show the component and solder sides of the completed CRC65 prototype. Now testings begin.

The first order of business is to write the bit-bang transmitter. The CPU clock is 14.7456MHz; each bit of 115200 is 128 clocks. Here is my attempt at creating 128 clocks delay for each bit of the data transmitted.

Code:
cout:
;output char in A
   STX saveX      ;save X & Y
   STY saveY
   CLC      ;use carry bit as start bit
   ROL      ;move carry into bit 0
   LDY #9      ;shift 9 bits
   JMP bB1
bitBang:
;assert a bit for 8.6uS for 14.7MHz clock
   ROR      ;next bit  (2)
bB1:   
   STA SerData   ;bit bang with D(0) (4)
   LDX #23      ;(2)
bitTime:   
   DEX      ;burn 23x5 clocks (2)n
   BNE bitTime   ;(3)n
   DEY      ;(2)
   BNE bitBang   ;(3)
   INY
   STY SerData   ;stop bit
   LDX #23      ;wait 1 bit time before exiting
bitTime1:
   DEX
   BNE bitTime1
   LDY saveY      ;restore X & Y
   LDX saveX
   RTS

saveX:
   .byte $0
   
saveY:
   .byte $0


When writing to the bit-bang address, data bit 0 goes to the transmitter output. So the basic idea is putting value to be transmitted in the accumulator and write to the bit-bang address; the least significant bit will go out (serial transmit is least significant bit first, most significant bit last), rotate right, wait the appropriate time and write to the bit-bang address again. Do this 8 times to transmit the serial data. But wait, I also need to do the start bit and stop bit. Start bit is always 0, so I clear the carry flag and rotate left so carry is now data bit 0 (bit 7 is now in the carry flag). I can do the above algorithm 9 times to transmit start bit and 8 data bit. I then finish off by transmitting the stop bit and wait 1 bit time before exiting. I measured the serial transmit with a scope and it looks right. I do have to make sure the branch instruction does not cross page boundary.

With the bit-bang transmitter working, I wrote a little program to examine the Master Boot Record of the compact flash. Below is what it read. It looks right; bootstrap loader in first 14 lines; partition entry at 0x1BE and boot signiture of 0x55AA at the end.


Another good day.

Code:
this is read CF test

FA 33 C0 8E D0 BC 00 7C 8B F4 50 07 50 1F FB FC
BF 00 06 B9 00 01 F2 A5 EA 1D 06 00 00 BE BE 07
B3 04 80 3C 80 74 0E 80 3C 00 75 1C 83 C6 10 FE
CB 75 EF CD 18 8B 14 8B 4C 02 8B EE 83 C6 10 FE
CB 74 1A 80 3C 00 74 F4 BE 8B 06 AC 3C 00 74 0B
56 BB 07 00 B4 0E CD 10 5E EB F0 EB FE BF 05 00
BB 00 7C B8 01 02 57 CD 13 5F 73 0C 33 C0 CD 13
4F 75 ED BE A3 06 EB D3 BE C2 06 BF FE 7D 81 3D
55 AA 75 C7 8B F5 EA 00 7C 00 00 49 6E 76 61 6C
69 64 20 70 61 72 74 69 74 69 6F 6E 20 74 61 62
6C 65 00 45 72 72 6F 72 20 6C 6F 61 64 69 6E 67
20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65
6D 00 4D 69 73 73 69 6E 67 20 6F 70 65 72 61 74
69 6E 67 20 73 79 73 74 65 6D 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01
01 00 06 03 E0 D0 20 00 00 00 60 E8 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA


Attachments:
DSC_62630108.jpg
DSC_62630108.jpg [ 1.31 MiB | Viewed 12661 times ]
DSC_62620108.jpg
DSC_62620108.jpg [ 1.34 MiB | Viewed 12661 times ]
Top
 Profile  
Reply with quote  
PostPosted: Sat Jan 09, 2021 5:04 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
Once the CF interface and bit-bang transmitter are working, the rest fall in place quickly.

EhBASIC is updated with bit-bang transmit algorithm so is the 256-byte Intel Hex file loader. So now EhBASIC can be loaded and run. An utility to write bootstrap program to CF's master boot record is also updated so now it can save EhBASIC in CF disk and retrieve it on next power cycle. The first picture shows that after a reset EhBASIC is copied from CF to memory (each dot represents a 512-byte sector copied), and EhBASIC running. I copy-paste the mandelbrot program and it ran in 77 seconds.

I measured the CF file transfer rate: EhBASIC resides on 21 sectors (10.5KB) and it took 17.3mS to transfer it from CF to memory. So that's about 600KB/sec. This is CF operating in PIO mode.

Last but not least is the I2C interface. It is working.

There are more testings to do, but I'm ready for pc board layout.
Bill


Attachments:
CRC65_boots_EhBASIC_after_reset.jpg
CRC65_boots_EhBASIC_after_reset.jpg [ 246.23 KiB | Viewed 12644 times ]
File comment: ASCII table displayed on 128x64 OLED LED display
DSC_62640109.jpg
DSC_62640109.jpg [ 1.44 MiB | Viewed 12644 times ]
Top
 Profile  
Reply with quote  
PostPosted: Sun Jan 10, 2021 4:29 am 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
Nice to see such quick progress on this... I like how quickly you can manage the CPLD coding, impressive.

I've also been working on an IDE/RTC adapter for my C02 Pocket SBC. The hardware uses a set of latches to allow 16-bit data transfers and the BIOS code uses an interrupt service routine. I also run in PIO mode... with the 65C02 running at 8MHz, I can get data transfer rates around 300KB per second. Needless to say, this is mainly based on how quickly you can access the CF Card and move the data into memory. As you're running closer to 15MHz, that seems to be faster than what I'm getting. I'm thinking you're using the CPLD to interface to the CF Card?

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


Top
 Profile  
Reply with quote  
PostPosted: Sun Jan 10, 2021 5:42 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
Thank you, I designed with Altera CPLD in 1990's but moved on to their FPGA after 2000's. I did not appreciate their ROM capabilities until I revisited EPM7000 in the last few years. I bought a large salvage lot of EPM7128S and 7064S in 2008 when a local factory went out of business, so I'll be using them for many years to come.

The CF disk is operating in 8-bit mode with Set Feature command, so CF data bus is connected directly to 6502's data bus. Some CF disks are faster than others, so the PIO transfer rate may vary depends on the brand. running 6502 at 14.7MHz also improve the data transfer rate significantly, so 300KB/S at 8MHz is probably about right. My CPLD is not involved in the CF data path; CPLD generates the 3 CF control signals, CF write strobe, CF read strobe, and CF chip select. It also inserts 4 wait states for CF access.

Bill

Edit, you can find the schematics for CRC65 prototype board and CPLD in my Jan 7, 12:34pm post.


Top
 Profile  
Reply with quote  
PostPosted: Sun Jan 10, 2021 3:07 pm 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
Thanks for the clarification on your CF Card interface. I did see that you were using an 8-bit transfer, but apparently it doesn't slow things down on the data transfer.

I just opted to implement a 16-bit data transfer... using an ATF16V8BQL to generate the CS0 and CS1 selects, along with the 4 control lines for the upper 8-bit latches. So far, all of the (working) CF Cards I have show as PIO mode 4, which is 120ns access time. As a result, I'm not using any wait states, nor is the hardware setup to introduce them.

I also found a few cards that just don't work very well for me... some are labeled as SanDisk, albeit the identity data shows as no actual manufacturer. Another is a STI card (labeled Cisco), which doesn't work. However, I do have an original 340MB IBM Microdrive which works perfectly. I'm just planning to stick with the true SanDisk cards for now. I've limited my BIOS routines for up to an 8GB CF Card and have tested with a SanDisk 8GB to confirm proper operation.

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


Top
 Profile  
Reply with quote  
PostPosted: Sun Jan 10, 2021 7:14 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
The CF data register becomes a fast 512-byte FIFO once the read command is accepted and executing. (when the DRQ flag is asserted). The data transfer bottleneck (in PIO mode) is 6502 which is limited by how fast it can move 8-bit data from CF data register to memory. Whether the data port is 8-bit or 16-bit really does not make a difference, in fact I suspect juggling 16-bit wide data into 8-bit data path may actually be slower than straight 8-bit-to-8-bit transfer.

CF-to-CF incompatibility is actually a long topic (SD cards also have their problems, too). Sadly I have lots of recent experiences and a large piles of CF disks to show for it. The bottom line is this: if a CF disk can be formatted, written, and verified on a PC or workstation, then the problem is not with the CF disk. I tend to have relaxed attitude toward prototyping, PC board layout, and transmission line effects because retro technology are too slow to matter EXCEPT with the CF interface. Because CF disk is modern technology operating at 5V, it generates tremendous amount of noises that's data dependent; it is worst when switching from all zeros to all ones and back. The retro technology actually ignore most of these noises, the problem is self-inflicted, that noises generate glitch on the CF read strobe causes a spurious read strobe. Serial termination, signal conditioning, reducing data bus width from 16 to 8, and even pull up half of the data bus and pull down the other half were techniques I've tried. Boil all that down is this: 8-bit is quieter than 16-bit; a 100 ohm series resistor and 100pF capacitor to ground for CF_read strobe is important; and 100 ohm source termination for data lines are desirable.

Bill


Last edited by plasmo on Sun Jan 10, 2021 7:31 pm, edited 1 time in total.

Top
 Profile  
Reply with quote  
PostPosted: Sun Jan 10, 2021 7:21 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
I layout the pc board for CRC65 and sent it off to JLCPCB yesterday. JLCPCB must be working the weekend because this morning I received their production notification and the picture of my board. This design meets my goal of 50mm X 100mm 2-layer pc board so I can step & repeat the Gerber artworks and produce 2 boards per 100mm X 100mm panel thus driving the board price to $0.5 each. But of course, the shipping cost will probably triple that.

I'm doing speed test of the prototype CRC65 and verify it can still run to 20.28MHz. However, the CPLD is already fully utilized so some functions have to be sacrificed to enable the additional logic needed for 20.28MHz operation. So while I do have the speed margin for higher clock, CRC65 design in current form is locked to 14.7MHz clock.

I'll look into Klaus' 6502 function test and work on a monitor for CRC65 while waiting for the pc board. Homepage for CRC65 is under construction here: https://www.retrobrewcomputers.org/doku ... asmo:crc65
Bill


Attachments:
CRC65_rev0.png
CRC65_rev0.png [ 91.57 KiB | Viewed 12598 times ]
Top
 Profile  
Reply with quote  
PostPosted: Sun Jan 10, 2021 7:30 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8541
Location: Southern California
That's about the size of the boards that plug into the right side of the back of the C64, Vector used to sell prototyping boards for it, and I show one in my project pages at http://6502.org/users/garth/projects.php?project=7 . It's Monday in the Orient now, which could explain why you got the message; but it could also be that their automated software sends you an image without human activity behind it. DirtyPCBs does that immediately, but theirs doesn't look quite as realistic.

_________________
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: Sun Jan 10, 2021 11:53 pm 
Offline
User avatar

Joined: Sat Dec 01, 2018 1:53 pm
Posts: 730
Location: Tokyo, Japan
plasmo wrote:
I layout the pc board for CRC65 and sent it off to JLCPCB yesterday.... This design meets my goal of 50mm X 100mm 2-layer pc board so I can step & repeat the Gerber artworks and produce 2 boards per 100mm X 100mm panel thus driving the board price to $0.5 each. But of course, the shipping cost will probably triple that.

Given that they do five 10×10 boards for $2, doesn't the price per board come down to $0.20 each? They also do an almost-as good price of $5 for ten 10×10 boards, which seems to increase shipping by only about 25%, so there's some savings there, too.

But how do you separate the boards when you do this? Is there a way to specify some sort of "crease" on these panels when you make the doubled-up Gerber files, or do you just leave a bit of space and saw them apart very carefully?

_________________
Curt J. Sampson - github.com/0cjs


Top
 Profile  
Reply with quote  
PostPosted: Mon Jan 11, 2021 12:50 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1114
Location: Albuquerque NM USA
cjs wrote:
Given that they do five 10×10 boards for $2, doesn't the price per board come down to $0.20 each? They also do an almost-as good price of $5 for ten 10×10 boards, which seems to increase shipping by only about 25%, so there's some savings there, too.

But how do you separate the boards when you do this? Is there a way to specify some sort of "crease" on these panels when you make the doubled-up Gerber files, or do you just leave a bit of space and saw them apart very carefully?


Unfortunately, JLCPCB charges "engineering fee" for making V-cut. The last time (about a year ago) the engineering fee was $8, so it makes no sense to go with JLCPCB for multiple designs on a panel. I use SeeedStudio instead. Seeed charges $4.90 for 10 panels up to 100mm x 100mm and does not charge extra for v-cut, but SeeedStudio is quite a bit slower than JLCPCB so I only send them designs that have been proven and pick the cheapest shipping. Even in that case shipping is still more expensive than pc boards.

V-cut is shallow cut with a V-shape router bit on both sides of a pc board. The router bit cut about 20% into the board, weaken it so a steady bending pressure will snap the board cleanly in half. Zoom in around the red arrows and you can see the v-shape groove. V-cut is also quite thin and can be precisely placed right next to circuitry. In the picture the thick traces next to v-cut is 0.025", there is not much clearance between V-cut and trace.
Bill


Attachments:
ZRCC_2x.jpg
ZRCC_2x.jpg [ 2.17 MiB | Viewed 12576 times ]
Top
 Profile  
Reply with quote  
PostPosted: Mon Jan 11, 2021 1:48 am 
Offline

Joined: Thu Jan 16, 2020 3:52 pm
Posts: 45
plasmo wrote:
The CF data register becomes a fast 512-byte FIFO once the read command is accepted and executing. (when the DRQ flag is asserted). The data transfer bottleneck (in PIO mode) is 6502 which is limited by how fast it can move 8-bit data from CF data register to memory. Whether the data port is 8-bit or 16-bit really does not make a difference, in fact I suspect juggling 16-bit wide data into 8-bit data path may actually be slower than straight 8-bit-to-8-bit transfer.

CF-to-CF incompatibility is actually a long topic (SD cards also have their problems, too). Sadly I have lots of recent experiences and a large piles of CF disks to show for it. The bottom line is this: if a CF disk can be formatted, written, and verified on a PC or workstation, then the problem is not with the CF disk. I tend to have relaxed attitude toward prototyping, PC board layout, and transmission line effects because retro technology are too slow to matter EXCEPT with the CF interface. Because CF disk is modern technology operating at 5V, it generates tremendous amount of noises that's data dependent; it is worst when switching from all zeros to all ones and back. The retro technology actually ignore most of these noises, the problem is self-inflicted, that noises generate glitch on the CF read strobe causes a spurious read strobe. Serial termination, signal conditioning, reducing data bus width from 16 to 8, and even pull up half of the data bus and pull down the other half were techniques I've tried. Boil all that down is this: 8-bit is quieter than 16-bit; a 100 ohm series resistor and 100pF capacitor to ground for CF_read strobe is important; and 100 ohm source termination for data lines are desirable.

Bill


Great advise and wisdom.


Top
 Profile  
Reply with quote  
PostPosted: Mon Jan 11, 2021 1:11 pm 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
plasmo wrote:
The CF data register becomes a fast 512-byte FIFO once the read command is accepted and executing. (when the DRQ flag is asserted). The data transfer bottleneck (in PIO mode) is 6502 which is limited by how fast it can move 8-bit data from CF data register to memory. Whether the data port is 8-bit or 16-bit really does not make a difference, in fact I suspect juggling 16-bit wide data into 8-bit data path may actually be slower than straight 8-bit-to-8-bit transfer.

CF-to-CF incompatibility is actually a long topic (SD cards also have their problems, too). Sadly I have lots of recent experiences and a large piles of CF disks to show for it. The bottom line is this: if a CF disk can be formatted, written, and verified on a PC or workstation, then the problem is not with the CF disk. I tend to have relaxed attitude toward prototyping, PC board layout, and transmission line effects because retro technology are too slow to matter EXCEPT with the CF interface. Because CF disk is modern technology operating at 5V, it generates tremendous amount of noises that's data dependent; it is worst when switching from all zeros to all ones and back. The retro technology actually ignore most of these noises, the problem is self-inflicted, that noises generate glitch on the CF read strobe causes a spurious read strobe. Serial termination, signal conditioning, reducing data bus width from 16 to 8, and even pull up half of the data bus and pull down the other half were techniques I've tried. Boil all that down is this: 8-bit is quieter than 16-bit; a 100 ohm series resistor and 100pF capacitor to ground for CF_read strobe is important; and 100 ohm source termination for data lines are desirable.

Bill


Thanks for this information... nothing like having a lot of experience in implementation. I'm wondering why the read-strobe line is more of the problem and it appears that the write_strobe isn't affected.

On my hardware, I did notice in some cases I was getting some data corruption doing a Xmodem transfer with the CF Card adapter attached (CF Card not accessed during Xmodem). Changing the power supply to a different one did resolve this however. Scoping the power supply line didn't show anything between different supplies. I'm also using 4-layer PCBs with heavier supply traces to all components and have a lot of bypass capacitors and numerous 68uF polymer electrolytic capacitors (5 in total).

I'm in the process of a re-design of the RTC/IDE-CF adapter and have added additional supply filtering to the CF Card. I have an extra output pin on the ATF16V8 PLD I use for address decoding and chip selects. I can configure this output to drive the read_strobe on the CF Card and insert the 100-ohm resistor and 100pF capacitor. This should isolate the CF read_strobe from the rest of the system. Any thoughts on this approach?

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


Top
 Profile  
Reply with quote  
PostPosted: Mon Jan 11, 2021 4:01 pm 
Offline
User avatar

Joined: Sat Dec 01, 2018 1:53 pm
Posts: 730
Location: Tokyo, Japan
floobydust wrote:
Thanks for this information... nothing like having a lot of experience in implementation. I'm wondering why the read-strobe line is more of the problem and it appears that the write_strobe isn't affected.

Maybe this is just me having recently watched too many videos on signal integrity, but could it be that these lines on many cards are particularly sensitive to even very short and small glitches, and great care with the return paths for those signals would help? If you don't have an absolutely continuous ground plane directly underneath the the entire line all the way back to the source of the signal, perhaps running a second ground line in parallel to the signal line could help? I might even go so far as to sandwitch the read and write strobes between three ground lines. (Note that in this case, putting the traces as close together as possible should be optimal: that field between the signal and ground traces is what's actually transferring the power.)

Quote:
I'm in the process of a re-design of the RTC/IDE-CF adapter and have added additional supply filtering to the CF Card. I have an extra output pin on the ATF16V8 PLD I use for address decoding and chip selects. I can configure this output to drive the read_strobe on the CF Card and insert the 100-ohm resistor and 100pF capacitor. This should isolate the CF read_strobe from the rest of the system. Any thoughts on this approach?

That sounds like something to do with impedence matching and/or slowing down the edges, both of which make sense from what I've learned. (In particular, edges that are too fast for a design seems to be the biggest source of issues in signal integrity.)

Another thing you might consider, if you have a spare pin or two (like anyone ever does :-P), is holding an adjacent output pin to ground and ensuring your return path comes right up to that. This should, in theory, take the return path through the bond wires in the package and, perhaps more importantly, reduce the issues caused by multiple pins switching at the same time. Or so it seems to me. (Again, take this all with a grain of salt.)

_________________
Curt J. Sampson - github.com/0cjs


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

All times are UTC


Who is online

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