February 2012
14 posts
1 tag
Feb 17th
Wanted: CLI EDA
That’s command-line interface electronic design automation. I’m surprised that hardware engineers design schematics and circuit boards graphically. By that I mean that they drag shapes around in a GUI editor. Behind the scenes all the polygons and line segments are being represented much more simply as Component A, Pin 1 being connected to Component B, Pin 2, or Component C at...
Feb 16th
Free Range VHDL →
This is a revised version of The Lo-Carb VHDL Tutorial and the Shock and Awe VHDL Tutorial, both by Bryan Mealy. Recommended.
Feb 15th
4 tags
Maxim DS1077 Programmable Oscillator
The Maxim DS1077 is a programmable oscillator. Instead of ordering different oscillators for each different project you have, you get just one on a SparkFun breakout board and program it, using I2C, for whichever frequency you need. And in fact, after some stumbles on my part, yes, it works. Things I Learned About the DS1077, The Hard Way The I2C interface (a.k.a. TWI or two-wire interface)...
Feb 14th
2 tags
Son of '9572 is alive
A good night’s rest didn’t help the ‘9572. It remains destroyed. After talking it over with a few people, I believe any of the following is possible: It was close to death already from having powered it from 5 volts for so long, and it simply gave out. I was careless with a logic probe pin and briefly touched two opposing outputs. While juggling pins on the UCF, I uploaded a...
Feb 10th
On the Origin of Circuits →
Dr. Thompson peered inside his perfect offspring to gain insight into its methods, but what he found inside was baffling. The plucky chip was utilizing only thirty-seven of its one hundred logic gates, and most of them were arranged in a curious collection of feedback loops. Five individual logic cells were functionally disconnected from the rest– with no pathways that would allow them to...
Feb 10th
2 tags
The '9572 is dead
I killed my CPLD Breakout Board. While taking pictures of the “successful” SRAM-loading VHDL I’d written and wired up, I noticed that the power LED on the board was off. I checked the connections, toggled the power a few times, tried re-running the logic analyzer, and eventually concluded that the board was dead. It draws 1.4 amps when I plug it in, and the CPLD itself gets...
Feb 9th
2 tags
Feb 7th
1 tag
Feb 6th
Feb 4th
1 tag
Feb 4th
The 6502: A Documentary →
Go Quinn! Go Bill!
Feb 3rd
3 notes
1 tag
TTL Voltage and Current Cookbook Recipe
Now that I’m able to do something with this CPLD, I’ve been concerned about replacing $10 of discrete logic chips with a $2 chip that needs $8 of level shifters. Though the Xilinx XC9572XL is a fairly modern 3.3-volt device, I know its I/O pins are 5-volt tolerant, meaning that I can send in a 5-volt signal from my circa-1980s 5-volt 6809E. But the ‘72’s output voltage is...
Feb 2nd
More than you ever wanted to know about electrical...
A few days ago I posted a very confused question about JTAG signals. Here is my less confused answer. You’ve surely seen the cup-or-face picture before, where some see two people looking at each other, and others see a single white chalice in the middle. Both groups are correct, and fortunately everyone can easily tell their brains to see the other image, too. That’s what happened...
Feb 1st
Feb 1st
January 2012
35 posts
3 tags
5.0 != 3.3
I just realized that the XC9572XL’s “5-volt tolerant I/O pins” do not mean that the device itself can be powered with 5 volts. It’s a 3.3-volt device. I’ve been running it from the Arduino’s 5-volt supply. Sigh. With this newly understood information, I hope to discover that the JTAG Whisperer is working correctly, and that the incorrect voltage was preventing...
Jan 31st
2 tags
JTAG TCK: active-low?
Why does it seem like the JTAG clock signal is active low? Consider this snippet from Xilinx’s XAPP058 source code. /* toggle tck LH.  No need to modify this code.  It is output via setPort. */ void pulseClock() {     setPort(TCK,0);  /* set the TCK port to low  */     setPort(TCK,1);  /* set the TCK port to high */ } This means that when the clock isn’t being pulsed, it’s...
Jan 30th
2 tags
The JTAG Whisperer
Available here on GitHub. The JTAG Whisperer turns your Arduino into a JTAG cable. Wow, sounds great! Here are the caveats: It’s actually just an XSVF player. This is a tiny subset of what JTAG does. The current architecture has the desktop load the XSVF file, then send it over serial to the Arduino. Since serial is going to be limited to the kilobits-per-second range of speed, it’s...
Jan 29th
6 tags
Linux on Nexys2?
All the search results for [linux nexys2] discuss how the heck you run that djtgtgtgjdsasdfghjkcfg Digilent tool on Linux. In other words, how do you program the Nexys2 on Linux? But what would it take to run Linux on the Nexys2, or a similar medium-sized FPGA? Can you just download an http://opencores.org/ processor that has a gcc toolchain for it, throw in some I/O controllers, and get the...
Jan 28th
Rescue guide for your Adafruit ATmega32u4 breakout...
The ATmega32u4 breakout board is a beta product. The hardware is essentially perfect, but the firmware is wonky. At least once, I’ve convinced myself that mine was broken, but I eventually figured it out. Here’s how to get yours back in shape. Things required to get all the way through these steps: The board A USB cable to connect the board to your computer A working copy of...
Jan 28th
Simple Virtual Machine →
Summary: here’s how to design a computing machine and tools to build programs for it. Oh, and here are the actual machine and tools, too. I love articles like this because they’re a reminder of how simple computers are. They move electrons from one place to another in a predictable fashion. Sure, any hardware or software out in the real world is many times more complex than the little...
Jan 28th
Jan 27th
Blog commenting added
I’ve decided that the “Write simple blog software with incredible commenting system” task on my to-do list will never get checked off, so I’ve given in and added Disqus commenting to this blog. I look forward to hearing from you!
Jan 27th
2 tags
Found a good base for an XSVF player →
Small world. Ben over at the Papilio Forums had almost the same needs as mine: wants to program an XC9572XL, prefers not to buy overpriced, single-purpose cables. So he adapted the XAPP058 reference code to a Papilio, cleverly using the desktop machine as a conduit between the potentially large xsvf file and the firmware. I didn’t try to get Ben’s code running on the Papilio, because...
Jan 26th
3 tags
Arduino XSVF Player?
I want to program a Xilinx XC9572XL and refuse to buy a $50 dongle to do so. Keywords in my research so far: xapp058, XSVF, SVF, JTAG, arduiggler. There is an FT232-based version that seems very close to what I want, but it’s written in Visual Basic, of all things, and probably won’t work on a modern non-FTDI Arduino. If you’re reading this and do contract programming in...
Jan 25th
Jan 24th
1 tag
Jan 24th
2 tags
Board design improvements
As I improve the board design in my head, I think I can eliminate the EEPROM and downgrade the ATmega to an ATtiny. The design will now read files off an SD card instead. The ATtiny will populate a bank of the SRAM and present that to the 6809 as ROM, using the CPLD as a stand-in for a series of ‘595s. The ‘tiny will also load the FPGA, both from files on the SD card. I’m...
Jan 22nd
AND gate written
I got something to build in the Xilinx ISE: library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity foo is Port ( port0 : in STD_LOGIC; port1 : in STD_LOGIC; port_out : out STD_LOGIC); end foo; architecture Behavioral of foo is begin port_out <= port0 and port1; end Behavioral; All it does is (in theory) set a high voltage on one pin when a high voltage is set on two...
Jan 22nd
2 tags
Board sent off to the factory
No, not the replacement for the Mess O’ Wires. This is the Dangerous Prototypes XC9500XL CPLD Breakout Board. I’ve ordered from DorkbotPDX, and my batch should be going to the fab today. (As a side note, I don’t feel too bad about depriving DP of revenue. I own one of approximately every other thing they’ve sold, and I couldn’t wait for the many-week shipment time...
Jan 22nd
1 tag
VHDL
The concept of using software to design hardware that runs software will surely cause you endless hours of contemplation.  I wasn’t prepared for the six-gig behemoth that is the Xilinx ISE, so it’s taken me longer than expected to get anything resembling Hello World going in that environment. By comparison, the Arduino IDE is pretty incredible. There’s a lot to be said for a...
Jan 21st
1 tag
Digital Logic Pocket Data Book (PDF) →
This is close enough to my request for 7400-series trading cards. It’s concise enough that I can scan it quickly and probably find an existing chip that does what I want.
Jan 21st
1 tag
Jan 20th
2 tags
Theseus
In the middle of a great email exchange with Sean Riddle (the all-time PageRank leader for Williams hardware and software), and the Ship of Theseus came up. It’s an old philosophical puzzle where a ship sails around the world, in the process having broken and worn-out parts replaced as needed. By the time it arrives back in its home port, every part has been replaced. Question: is it still...
Jan 20th
1 tag
Jan 20th
1 tag
Jan 19th
1 tag
Jan 19th
1 tag
7400 Series catalog?
Does such a thing exist but simplified for today’s ADHD youth like me? Here’s what I want: Name (‘00) Description (quad 2-input NAND gate) A plain English paragraph describing why you’d want this chip Pinout with legend for the abbreviations Maybe a cool circuit or clever hack using the chip There’s Wikipedia, of course, but it doesn’t contain all the...
Jan 18th
1 tag
Jan 18th
1 tag
Infinite NOPs
The 6809E is running! Once the weekend began with the chip in my possession, like any good engineer I resisted the urge to immediately let out the blue smoke and instead sat down with the datasheet. The moment I saw the word “clock” I remembered that I hadn’t bought a 1MHz oscillator. Fortunately, rather than jumping in the car and driving to Halted, I continued reading and...
Jan 17th
3 tags
Joust still broken: video and sound dead
I got the video assembly out of storage, and it’s dead. I know that CRTs use high voltages, and I’m allergic to kryptonite, so I won’t be messing around with that thing. No jousting today. I’m also concerned that the sound board isn’t doing anything, though it’s getting power. I went through the diagnostics in the Joust owner’s manual, and made it through...
Jan 17th
2 notes
1 tag
Jan 17th
1 tag
Jan 17th
3 tags
Jan 16th
1 note
3 tags
Jan 16th
2 tags
Your Amazon.com order of "Williams Arcade...
I bought an old CD-ROM of Williams Arcade Classics, which is a collection of ROM images and an emulator that runs on a PC. This means little more than that I’ll be legal to possess copies of the game ROMs (besides Joust, which I already own). Sean Riddle has already written code to extract the ROMs from the PC version, but to be honest, I think it’s easier to type “mame...
Jan 16th
1 tag
Jan 15th
5 tags
Project 8821
Inspired by Quinn Dunki’s Veronica project to explore the 6502, I’ve decided to build a 6809E-based hardware platform for old Williams coin-op videogames, such as Defender, Robotron, Stargate, Bubbles, Sinistar, and Joust. Ah, Joust. How many first-period high school classes did I miss because of it in 1982? As a result of a software bug involving lava trolls and pterodactyls, I got...
Jan 15th
16 notes
1 tag
Jan 14th