Last time I looked at a simple 16-bit RISC processor aimed at students. It needed a little help on documentation and had a missing file, but I managed to get it to simulate using a free online tool called EDA Playground. This time, I’ll take you through the code details and how to run the simulation.
You’ll want to refer to the previous post if you didn’t read it already. The diagrams and tables give a high-level overview that will help you understand the files discussed in this post.
If you wanted to actually program this on a real FPGA, you’d have a little work to do. The memory and register initialization is done in a way that works fine for simulation, but wouldn’t work on a real FPGA. Anyway, let’s get started!
Because I often work with students, I’m always on the look-out for a simple CPU, preferably in Verilog, in the Goldilocks zone. That is, not too easy and not too hard. I had high hopes for this 16-bit RISC processor presented by [fpga4student], but without some extra work, it probably isn’t usable for its intended purpose.
The CPU itself is pretty simple and fits on a fairly long web page. However, the details about it are a bit sparse. This isn’t always a bad thing. You can offer students too much help. Then again, you can also offer too little. However, what was worse is one of the modules needed to get it to work was missing! You might argue it was an exercise left to the reader, but it probably should have been pointed out that way.
At first, I was ready to delete the bookmark and move on. Then I decided that the process of fixing this design and doing a little analysis on it might actually be more instructive than just studying a fully working design. So I decided to share my fix with you and look inside the architecture a bit more. On top of that, I’ll show you how to get the thing to run in an online simulator so you can experiment with no software installation. Of course, if you are comfortable with a Verilog toolchain (like the ones from Xilinx or Altera, or even free ones like Icarus or CVer) you should have no problem making that work, either. This time I’ll focus on how the CPU works and next time I’ll show you how to simulate it with some free tools. Continue reading “Learn by Fixing: Another Verilog CPU”→
For the last five months, I’ve been writing a series of posts describing how to build a PCB in every piece of software out there. Every post in this series takes a reference schematic and board, and recreates all the elements in a completely new PCB tool.
There are three reasons why this sort of review is valuable. First, each post in this series is effectively a review of a particular tool. Already we’ve done Fritzing (thumbs down), KiCad (thumbs up), Eagle (thumbs up), and Protel Autotrax (interesting from a historical perspective). Secondly, each post in this series is a quick getting started guide for each PCB tool. Since the reference schematic and board are sufficiently complex for 90% of common PCB design tasks, each of these posts is a quick how-to guide for a specific tool. Thirdly, this series of posts serves as a basis of comparison between different tools. For example, you can do anything you want in KiCad and most of what you want in Eagle. Fritzing is terrible, and Autotrax is the digital version of the rub-on traces you bought at Radio Shack in 1987.
With that introduction out of the way, let’s get cranking on Upverter.
A little bit about Upverter
Upverter was founded in 2010 as an entirely web-based EDA tool aimed at students, hobbyists, and Open Hardware circuit designers. This was one of the first completely web-based circuit design tools and Upverter’s relative success has been a bellwether for other completely web-based EDA tools such as circuits.io and EasyEDA.
I would like to take a second to mention Upverter is a Y Combinator company (W11), which virtually guarantees this post will make it to the top of Hacker News. Go fight for imaginary Internet points amongst yourselves.
Upverter is a business after all, so how are they making money? Most EDA suites offer a free, limited version for personal, hobbyist, and ‘maker’ projects, and Upverter is no exception. The professional tier offers a few more features including CAM export, 3D preview, an API, simulation (coming soon), BOM management, and unlimited private projects for $125 per seat per month, or $1200 per seat per year.
To give you a basis of comparison for that subscription fee, Eagle CAD’s new license scheme gives you everything – 999 schematic sheets, 16 layers, and unlimited board area – for $65 per month, or $500 per year. Altium’s CircuitStudio comes in at $1000 for a one-year license. There are more expensive EDA suites such as Altium Designer and OrCAD, but you have to call a sales guy just to get a price.
Upverter is positioning itself as a professional tool at a professional price. There are better tools out there, of course, but there are thousands of businesses out there designing products with tools that cost $500 to $1000 per seat per year. In any event, this is all academic; the Hackaday crowd gravitates towards the free end of the market, whether that means beer or speech.
A big draw for Upverter is their Parts Concierge service. You’ll never have to create a part from scratch again, so the sales copy says. Apparently, Upverter is using a combination of very slick scripts to pull part layouts off a datasheet and human intervention / sanity check to create these parts. Does it work? We’re going to find out in the review below.
KiCad is the premiere open source electronics design automation suite. It’s used by professionals and amateurs alike to design circuits and layout out printed circuit boards. In recent years we’ve seen some incredible features added to KiCad like an improved 3D viewer and push-and-shove routing. This Friday at 10 am PST, join in a Hack Chat with KiCad lead developer [Wayne Stambaugh] to talk about recent improvements and what the team has planned for KiCad in the future.
[Wayne] has been an electronics engineer for over 30 years with a wide range of experience in analog and digital hardware design and embedded and application software design. He started hacking on KiCad ten years ago when the project was first opened to public development and a little over two years ago became the project leader. This is an excellent opportunity to learn how the development team works, what their current goals are, and to talk all things KiCad.
Also on Friday, taking place just an hour before the KiCad chat, is a Tindie Hack Chat. All are welcome as the 9:00 am PST discussion gets under way. Discussion will focus on all aspects of selling unique hardware on Tindie.
Here’s How to Take Part:
Hack Chat are live community events that take place in the Hackaday.io Hack Chat group messaging. Visit that page (make sure you are logged in) and look for the “Join this Project Button” in the upper right. Once you are part of the project, that button will change to “Team Messaging” which takes you to the Hack Chat.
You don’t have to wait for Friday, join Hack Chat whenever you like and see what the community is currently talking about.
Join Us Next Week Too for CircuitPython
Block out your calendar for noon PST on Friday the 27th for next week’s Hack Chat. Joining us are Adafruit’s Ladyada, Tony DiCola, and Scott Shawcoft. They’ll be leading a discussion about CircuitPython Beta, Adafruits new extension to MicroPython that adds SAMD21 support and other enhancements.
Eagle is a household name for all Hackaday regulars. Here’s your chance to learn about upcoming features, get your ‘how do I do this in Eagle?’ questions answered, and get your wishlist items heard. Join us on Friday at 12:00 PST for a live Hack Chat about the Eagle PCB Design software.
Hosting this week’s discussion is [Matt Berggren], also known on Hackaday.io as technolomaniac. Matt is the Director of Autodesk Circuits and with Autodesk’s acquisition of Eagle last summer, the popular schematic design and PCB layout software falls under his purview. He has an extensive background in designing printed circuit boards — if you can do it in EDA software he knows how — this is an excellent opportunity to get answered the questions that have been stumping you.
Hack Chat are live community events that take place in the Hackaday.io Hacker Channel. Visit that page (make sure you are logged in) and look for the “Join this Project Button” in the upper right. Once you are part of the Hacker Channel, that button will change to “Team Messaging” which takes you to the Hack Chat.
You don’t have to wait for Friday, join Hack Chat whenever you like and see what the community is currently talking about.
Join Us Next Week Too for KiCad!
Are you more of a KiCad person than an Eagle person? You should still drop by this week to see if Matt changes your mind. But block out your calendar next week when [Wayne Stambaugh], one of the lead developers of KiCad will join us for a Hack Chat on Friday, 1/20/17.
A few years ago, I wrote a few columns titled Making A Thing. These columns were a tutorial of sorts for several different 3D modeling programs. This column wasn’t meant to be a complete guide to modeling an object in OpenSCAD or SolidWorks, it was just step-by-step instructions on how to make one specific thing with one specific piece of software.
More than a few people in the Hackaday community found this column useful or at the very least an interesting pedagogical device. When starting out with any kind of productivity software, you don’t need to know how to do everything, you just need to know how to do the most common tasks.
Since the Making A Thing column was so popular, I felt it was time to revive this idea with another design task we often face. As you have already guessed, we’re going to be making printed circuit boards. Continuing the unique tutorial format created in the previous iteration of this column, Making a PCB will build one specific circuit in multiple EDA suites.
The entire concept of demonstrating how to build one thing in a specific software package necessitates a model thing. Before I even begin writing the first Making A PCB column, I need to design something that’s sufficiently complex but still relatively simple, and something that’s hopefully somewhat useful. Breakout boards are extremely simple, perhaps too much. In the course of these programs, I’ll need to demonstrate how to make a part in each specific software suite, so fewer pins are better.
Lacking any creativity of my own, I’ve settled on a very small ATtiny85 Arduino derivative from Tim a.k.a. [cpldcpu]. Tim’s Nanite 85 is an exceptionally small Arduino-compatible board based on the ATtiny85, complete with a USB port, LED, and a few pins of I/O. It’s simple but sufficiently complex to give an introduction to a PCB design suite.
I’m not going to outright copy Tim’s Nanite 85, though. It’s much clearer if parts aren’t stacked on top of each other, and I’d like to give myself a little breathing room on the layout. I’ve redesigned the circuit of the Nanite 85 to use mostly through-hole parts on a slightly larger board. I’m calling my version the Nanite Wesley, and if you get that reference, thumbs up for you.
Is this how a board should be laid out? No, absolutely not. I could probably do this as a single-layer board. This is a very inefficient layout, and I like rounded corners on my boards. It’s good enough, though, and it works. This is meant to be a tutorial on how to use a PCB design package, not a tutorial on how to design a PCB. Your criticisms in this regard are noted and ignored.
What These Tutorials Will Consist Of
You cannot use a PCB design package until you know how to make a part. Yes, Eagle has wonderful libraries for almost everything you can imagine, KiCad has plenty of parts on the Internet, and if you’re using a cloud-based PCB software, almost everything will be provided for you. If you make a PCB, eventually you’ll have to make your own part, though, and each tutorial will begin with making a DIP-8 ATtiny85. Everything else on this board is a jellybean part. Either way, the process of making a part and package for a Zener is the same as making one for a microcontroller.
The next part of the tutorial will consist of schematic capture. This means placing the parts in the schematic, drawing wires between the pins and pads, and naming them. From there, it’s time to actually make a board, and this means dropping the parts down, putting traces between all the pins, doing the board outline, pouring copper, and mechanical considerations.
With the schematic and board designed, it will be time to send it off to a fab house. For Eagle and KiCad, this is easy; OSHpark accepts Eagle .brd and KiCad .pcb files, but this is cheating. We’re going to use CAM to generate real Gerber files. If you make enough PCBs, you’ll have to learn it eventually.
Caveats and Poor Design
There are a lot of things that go into making a ‘proper’ PCB, including isolation, direct traces to decoupling capacitors, making sure pixies don’t go around sharp corners and a thousand other items that won’t be discussed in these tutorials. There’s a reason I won’t be discussing this. This is a guide on how to use a PCB design tool, not how to design a PCB.
What else should I do?
As you can probably guess from the schematic above, the first PCB software I’m going to cover is Eagle. KiCad is on the list, as is Fritzing, Altium CircuitMaker, and OrCAD. In the interests of putting PCB design in a historical context, I have a copy of AutoTRAX and an old DOS machine. I’ll also be covering a few of the cloud-only design tools such as Upverter.
That’s enough software suites to get started, but as with the Making A Thing series, I’m going to be looking for suggestions from the peanut gallery. I can’t change the circuit I’m making, as that’s the entire point of this series, but I am looking for suggestions on other tools to cover. What else can I do? Want me to grab a piece of copper clad board, sticker overlays, and some photostatic film? I can do that. Are you at a web-based EDA startup, and want some free advertising? Leave a note in the comments.
Thanks to our efforts to slowly improve the backend of Hackaday, you’ll be able to access all the Making A PCB In Everything posts from the series list below.
Eagle has been around for nearly thirty years, and has evolved to become the standard PCB design package for electronic hobbyists, students, and engineering firms lead by someone who learned PCB design with Eagle. The reason for this is simple: it’s good enough for most simple designs, and there is a free version of Eagle. The only comparable Open Source alternative is KiCad, which doesn’t have nearly as many dedicated followers as Eagle. Eagle, for better or worse, is a standard, and Open Source companies from Sparkfun to Adafruit use it religiously and have created high-quality libraries of parts and multiple tutorials
I had the chance to talk with [Matt Berggren], former Hackaday overlord who is currently serving as the Director of Autodesk Circuits. He is the person ultimately responsible for all of Autodesk’s electronic design products, from Tinkercad, 123D, Ecad.io, and project Wire, the engine behind Voxel8, Autodesk’s 3D printer that also prints electronics. [Matt] is now the master of Eagle, and ultimately will decide what will change, what stays the same, and the development path for Eagle.