Afternoon diversion: Design your own microprocessor
Daniel Ogilvie, SingMai Electronics
EDN (March 26, 2018)
Do you see that grumpy old engineer in the corner of the lab who delights in sending new graduates down to stores to get a bag of holes. That could have been me, but when Personnel departments became Orwellian Human Resource departments producing dictates banning you from taking leave during Team Building Days, I decided to leave employment and start my own company. Freedom? Well, of a sort – you do still need to produce things that might sell. But you do get to spend a few days exploring some dimly lit avenue of electronics without having marketing asking you to produce yet another PowerPoint presentation for management that tries to justify their inspired idea that breaks a fundamental law of physics. This article is about one such diversion.
I enjoy reading the articles of those eccentric engineers emulating past microprocessors such as the 68000 or even a Cray. My own favourite processor was the Motorola 6809 and I used it as a workhorse in my early days as an engineer, using an old Dragon home computer as a development tool. I was thinking of designing it into an FPGA – just for fun – when a more pressing need took hold.
I used FPGAs a lot in my designs and usually needed a processor for some housekeeping or control purpose. Although FPGA-based processors were available, such as Altera’s Nios, they did use quite of lot of resources and often required external code memory, encumbered as they were by C compilers and even operating systems. I decided to design my own minimal microprocessor for those simple tasks such as I2C control of peripherals, or simple control interfaces such as digital encoders and character LCD displays. I loosely based the design on my favourite, the 6809, but soon started stripping it bare, finally managing to squeeze a workable processor into less than 400 logic elements (LEs – basically a 4-input look-up table followed by a programmable flip-flop – the building blocks of FPGAs), allowing it to fit in the smallest of FPGAs, or allow multiple instantiations in the same FPGA.
E-mail This Article | Printer-Friendly Page |
|
Related Articles
- How to build reliable FPGA memory interface controllers without writing your own RTL code!
- Last-Time Buy Notifications For Your ASICs? How To Make the Most of It
- How to Turbo Charge Your SoC's CPU(s)
- Select the Right Microcontroller IP for Your High-Integrity SoCs
- Upskill Your Smart Soldiers and Conquer the ChipWar in Style!
New Articles
- Quantum Readiness Considerations for Suppliers and Manufacturers
- A Rad Hard ASIC Design Approach: Triple Modular Redundancy (TMR)
- Early Interactive Short Isolation for Faster SoC Verification
- The Ideal Crypto Coprocessor with Root of Trust to Support Customer Complete Full Chip Evaluation: PUFcc gained SESIP and PSA Certified™ Level 3 RoT Component Certification
- Advanced Packaging and Chiplets Can Be for Everyone
Most Popular
- System Verilog Assertions Simplified
- System Verilog Macro: A Powerful Feature for Design Verification Projects
- UPF Constraint coding for SoC - A Case Study
- Dynamic Memory Allocation and Fragmentation in C and C++
- Enhancing VLSI Design Efficiency: Tackling Congestion and Shorts with Practical Approaches and PnR Tool (ICC2)