Latest Status Update:
Sunday 24 April -
Project log added
PROJECT INDEX
- Project overview (Start Here)
- Periodic short updates
- Pictures of development tools
- Graphics hardware development
- Graphics VHDL development
- more to come
Most recent update (holdups)
I have put this on the back burner for now as I make a fuser for making PCB's with the Toner Transfer method as I need to make PCB's to prototype with. I am almost finished the fuser hardware and I will upload it a separate project soon.
I am now doing the VHDL with a Altera CPLD (EPM240) and I will order a lager version (EPM570). It took a bit to get used to the Altera IDE as there are no constraints files like in Xilinx.
Details
What I currently have in mind is a Z80 @ 20MHz running the target code, an atMEGA (atMEGA1284 to start with) @20 or 25MHz doing all I/O interfacing and assisting with VGA generation and a CPLD clocking out the pixels to a VGA port @ 50 MHz. The SRAM will probably have to run at 100MHz to be shared between these functions.
To accomplish this, I need to learn the following skills -
- VHDL programming for the CPLD (I have started this)
- AVR assembly programming for the atMEGA
- Z80 assembly programming for the CPU
- Various hardware protocols for the hardware I/O
- How to construct a basic multitasking Operating System
- The FAT file system
- MIDI standards
- In house PCB Manufacture (Toner Transfer Method) - in progress
- And signal timing to get all of this to work together
Proposed major parts are -
- Z84C0020, Z80 CPU
- atMEGA1284P-PU, AVR micro-controller
- XC9572XL, CPLD
- (unknown), SRAM
The problems I have encountered so far are -
Difficulty finding parts with 0.1 inch pin spacing. I am reverting to using SMD devices on breakout boards. This has created additional problems as I can't find the correct breakout boards for VQFP chips with different pinouts.
Difficulty finding suitable CPLD devices that will work with the 5 Volt Vcc of the CPU. I have so far settled for a 5 Volt 'tolerant' CPLD but it lacks GPIO pins and wont be suitable for the end design unless I use a number of them.
I have had many setbacks with the Toner Transfer Method of PCB manufacture. After buying another laser printer some of the issues have resolved but I am back to square one again. I am using the Pulsar Toner Transfer Sheets and Toner Reactive Foil. My fuser (laminator) has been modified to increase the temperature but the hysteresis of the thermostat is too wide and the feed motor is too fast to maintain temperature on larger boards. I expect I will put a micro-controller into it to regulate the speed and temperature.
Another problem I anticipate is that this circuit is not going to work on bread board because of the high frequency signals. I will probably have to make a modular system with PCB's much like the Arduino 'Shield' system to prototype it as I go, and hence the need for in house PCB manufacture.
The anticipated sub projects are -
- Build a RAM-less (S)VGA generator in CPLD with VHDL to test as a proof of concept for the video generation. (Done)
- Attempt to prototype the (S)VGA generator with RAM on a breadboard
- Installing a micro-controller into a laminator for the Toner Transfer Method of PCB Manufacture
- Build a solder station out of junk from the junk box.
- Build the first modular parts for prototyping
- More to be added
Here are some pics of the development tool I am working with -
This is a development board that I bought on ebay. It is for an atMEGA664. The atMEGA1284 has the same pinout. I had to modify the Arduino IDE to use the 1284. I will use it with the Arduino IDE for low speed proof of concept work using sketch and the USB port. When I am ready to start the VGA side of things I will switch to AVR Studio and program it with the USBasp pictured. The files that came with it had a trojen in some files and changes to the core Arduino java file so started with a new copy of the IDE and made the changes needed. They're not hard to do, just text files, you don't even need to re-compile as the tool-chain already...
Read more »
If you use 74166 Parallel-in, Serial-out bit shift chip, you can save a lot of pins in CPLD for accessing frame buffer from memory bus.