Category Archives: Softcore

The beginnings of an LLVM backend

      1 Comment on The beginnings of an LLVM backend

I’ve been very busy for the last few months, with many different things. This post will therefore be a bit of a mess, unfortunately. I’m at a place where I’ve been before a few times: not knowing the most interesting road to explore, since there are so many, and they are all fascinating and rewarding in their own way. First… Read more »

Designing a 32 bit ISA

      No Comments on Designing a 32 bit ISA

As mentioned at the bottom of the previous post, I’ve been designing a new 32 bit processor, and this post is concerned with the design of that processor’s Instruction Set Architecture. The objectives for this project are as follows: To learn as much as possible from the experience To leverage what I learned making my previous 16 bit processor To… Read more »

A 16 bit softcore processor: Software

      No Comments on A 16 bit softcore processor: Software

I settled on CustomASM for the re-targetable assembler for my processor, after briefly playing about with the somewhat unconventional axasm. CustomASM allows you to define a processor’s instruction set in a configuration file and then assemble assembly source code using that definition. This is easiest to explain with an example. Here is the definition of the LOADI instruction: load.{width:loadtype} {dst:reg},… Read more »

A 16 bit softcore processor: Implementation

      No Comments on A 16 bit softcore processor: Implementation

In my previous blog post I talked about some of my goals for a simple 16 bit processor implemented in VHDL and running on an FPGA. Here is a diagram showing the top level design, as generated by the Quartus tools: For clarity the Control Unit and associated muxes are not shown; the remaining parts, plus the muxes, constitute the… Read more »

A 16 bit softcore processor: Introduction

      1 Comment on A 16 bit softcore processor: Introduction

During my A-level electronics class I studied many interesting topics including: Basic analogue electronics including Ohm’s law and bipolar transistor switching and amplification circuits Boolean algebra Digital design using 74 series parts Assembly programming with the 6502 The 6502 assembly programming was particularly interesting because it was hands on using some teaching boards that consisted of a 6502, a tiny… Read more »