First steps...
Posted: Wed Feb 05, 2014 10:24 pm
Well, after reading the forums a bit, I decided that I will start basic and work my way up to DMA controller... I have a toy application I can think of anyway where I can start with 3 components and add the DMA controller afterward!
First things first, since I tend to forget: Is there a convention for where memory-mapped I/O goes in the 6502? I might be confusing it with another processor, but I seem to recall that I/O goes at the bottom of the address space to avoid conflicting with the vectors.
Secondly, are there any particular limits on the clock speed using perfboard?
I suppose I can ease my limits on using PALs and GALs for logic such as address decoding and basic logic and to save space, but my main problem is I have no way to program them, and would have no clue how to start. Is there any such programmer available that doesn't cost an arm and a leg?
Yes, I need to learn this at some point, but I've never actually successfully soldered a PLCC or surface mount chip (I've tried and failed before, though
), so for now, it's 40 pin dips :/...
Chances are, I think I will probably use perfboard, IC holders and solder as a prototype. I will have a 65816, PPI, 16550 UART, and an EPROM (yes, I have an EPROM programmer in my PC AT LOL). Eventually, I'd like to add flash ROM and make it so that the whole thing can program it's own memory using a serial ROM routine, but that's a bit later- after I get this working, before the DMA controller.
Then I'll make a part in DipTrace for the 65816 (not too difficult), and then make a PCB that's pluggable into the GPIO slot of a FPGA dev board that I have from university. Since it comes down to it, and the coprocessor-as-DMA idea has been tried and "not worth it", it might be worth the trouble to create a DMA controller in Verilog if there is no equivalent discrete component still manufactured. But this is all later.
Like I've mentioned before, this is a long term project, so any absence on my part doesn't mean I've given up- just real life gets in the way. I will make one more thread tonight regarding my DMA question, but I would appreciate any initial feedback based on what I've said. I've never actually created a system before- just a CPU and memory in Verilog.
First things first, since I tend to forget: Is there a convention for where memory-mapped I/O goes in the 6502? I might be confusing it with another processor, but I seem to recall that I/O goes at the bottom of the address space to avoid conflicting with the vectors.
Secondly, are there any particular limits on the clock speed using perfboard?
I suppose I can ease my limits on using PALs and GALs for logic such as address decoding and basic logic and to save space, but my main problem is I have no way to program them, and would have no clue how to start. Is there any such programmer available that doesn't cost an arm and a leg?
Yes, I need to learn this at some point, but I've never actually successfully soldered a PLCC or surface mount chip (I've tried and failed before, though
Chances are, I think I will probably use perfboard, IC holders and solder as a prototype. I will have a 65816, PPI, 16550 UART, and an EPROM (yes, I have an EPROM programmer in my PC AT LOL). Eventually, I'd like to add flash ROM and make it so that the whole thing can program it's own memory using a serial ROM routine, but that's a bit later- after I get this working, before the DMA controller.
Then I'll make a part in DipTrace for the 65816 (not too difficult), and then make a PCB that's pluggable into the GPIO slot of a FPGA dev board that I have from university. Since it comes down to it, and the coprocessor-as-DMA idea has been tried and "not worth it", it might be worth the trouble to create a DMA controller in Verilog if there is no equivalent discrete component still manufactured. But this is all later.
Like I've mentioned before, this is a long term project, so any absence on my part doesn't mean I've given up- just real life gets in the way. I will make one more thread tonight regarding my DMA question, but I would appreciate any initial feedback based on what I've said. I've never actually created a system before- just a CPU and memory in Verilog.