Verilog Nuts and Bolts: A One Bit Register

In computer science, the way memory is interacted with by the programmer is one of the core lessons that differentiates an undergraduate education from hobbyist tinkering, and confronting the nature of memory is also a major theme in industrial conversations about a piece of code or even an entire programming language. Continue reading →

The Value of Fixed-Point Calculations

Back when I was working on my thesis, there was a very good reason I used fixed-point calculations in the DSP core that represented the primary technology put to work therein: so I didn’t have to explain floating point to my committee.

But there are a lot of things to recommend them, the most obvious one being speed.  Modern computers create the illusion of doing everything instantaneously, until they don’t.  In CS classes, they tell you “integer math is faster than floating-point, so try to do things with integers or fixed-point” and often leave it at that.  If you’re like me, you wonder “so… what’s fixed-point?” Continue reading →

Verilog Nuts and Bolts: Specifying a Thousand Transistors in One Line

Structural Verilog specifications are very handy for simulation purposes, especially when verification of a large scale system design is needed: you can be certain that all desired transistors are definitely where they need to be if your layout passes LVS, and your Verilog passes your tests.  (You could still have trouble with timing of course!)

But that same Structural Verilog code that validates every logic gate in your design probably isn’t very fit for human consumption, and you definitely don’t want to write it by hand.  You want to specify as much hardware in as little HDL as possible. Continue reading →

Verilog Nuts and Bolts: Modules

Let’s look at an example of a Verilog file that contains some modules.  In the previous demonstration file, I lumped everything together into a single module called “test”.  This is fine for simple modules (by which I mean modules which are simple to describe, not necessarily simple to build), but at scale, organization is handy.  This module will also illustrate a simple example of two different approaches to the same modeling problem. Continue reading →

Verilog and Meaningful Simulations

The best material model of a cat is another, or preferably the same, cat.

–Norbert Wiener

As I start to compile notes for a series on Verilog models, one of the first issues that pops up is that simulation itself isn’t nearly as obvious as it looks on the surface.

This is true of any simulation of anything, of course.  A computer can’t reproduce the physical complexity of the world for anything other than itself, which is rarely that useful.  (One notable exception being testing that computer.)  But with Verilog simulation in particular, there is the issue of it having a malleable level of abstraction.

Continue reading →

Nonlinear Circuit Help

Over on the main page of I have uploaded some notes on the circuit side of diodes and transistors.  If you’re taking a class on nonlinear devices, I recommend you check these out as they are short, sweet, and to the point.

Icarus Verilog

When students in beginning digital circuit classes begin learning Hardware Descriptive Languages (HDLs), it’s often through a big, heavy GUI tool like Quartus.  If you stick to small examples, this works fine, but in bigger tasks things can start to slow down a lot.  It’s because of these slowdowns that I use Icarus Verilog instead. Continue reading →

I Will Miss Teaching in a Classroom

But I tell you what, there are a lot of things I won’t miss that came attached to it.  I’m not going to pin some 95 theses to the door over this, but when I was teaching in an academic setting, I felt like a lot of the time when I was doing the “hard, not-fun parts of the job” I also wasn’t actually helping anyone learn.  And now that I’m not going to be doing this for a living for a while, I have the freedom to explore what I could be doing instead, that might do a better job of that.

Which is probably reason number one that I’m starting this website.

If it’s on the web, anyone can find it, and engage with it.  And if it’s done right, it might even be broadly accessible.  That’s what’s going to go into the main website.  As for the blog, it will be where I talk to myself out loud about everything from floating point calculations to electromagnets.  So, stay tuned for that…