More hardware hacking: a serial port
for my ARM server. Been testing it with my Nexys 2, which is also programmed
by the same machine using Free software :) No level conversions at any
stage, since both ends now use 3.3 V instead of real RS232.
I must admit, while it has been fun to fill these idle weeks with solitary hacking, it gets dull eventually. It is a rare occasion to find this need for social contact, since my introverted self usually gets more than its share in working life. However, I should be meeting some of my family next week, which should be enough socializing for several weeks :-j
Been another intense day or two of FPGA hacking. Yesterday I got my second
board, of a considerably higher calibre (Not to mention price. Ouch.) than the
first, and I already got my precious Bitcoin
miner running on it the same evening. Of course, I had been working on
the software side for some days earlier, but it was no substitute for the
real trial and error.
While this is far from the best GPU miners at only 109 Mhash/s, it is nice to notice that my earlier efforts to make the Python script multithreaded have paid off. Every now and then, a new result comes in before the script has fully submitted the previous one. Thus a single-threaded version would simply lose these results. Whoever warned against premature optimization may have been wrong after all ;)
The board, along with a wholly different (tool|mind)set that comes with a different FPGA vendor, has mostly been a positive experience. However, there is one immensely stupid design decision about the board: the 7-segment display LEDs are all directly routed without any kind of multiplexing. This wastes a lot of FPGA pins, which could be used for other nice components, and makes PCB design harder. Perhaps it is due to the pin count issue that decimal points are completely left out. There is also a more complex text LCD module, and lots of switches and individual LEDs — too much of the same IMHO.
Surely the Terasic engineers have heard of classical 7-segment multiplexing? Not to mention some newer matrix techniques, which are more efficient pin-count-wise, though less intuitive for the 7-seg concept. There is also a more subtle effect, in that multiplexing reduces the total luminance, as only one digit can be lit at a time. Thus these display LEDs are made brighter than expected, and will only show their full annoying glow when used directly. Which is why my miner code incorporated a light switch :)
On the other hand, there is an interesting selection of other I/O, including an SD card slot, AC97 for audio, and a composite video input to name a few. Lots of hacking ground to explore after I get tired of mining Bitcoins on it. For instance, the little brother of this board, with mostly the same I/O but a smaller FPGA, has been used for guitar effects, by some lucky student who got the board for free :-j Of course, grown-ups need to pay the full non-academic price, even when the aim of learning and exploration is no different. Not that Bitcoin is a commercial application or anything like that.
The past few days/weeks have been rather quiet, partly due to lack of ideas
musical and electronical, and partly due to the unbearable heat. Today I
managed to finish reading a book, The Artificial Kid by Bruce Sterling, or
actually the Finnish translation Taistelija. It
is fun to notice, once again since reading Schismatrix, that while Sterling is one
of the key players in the cyberpunk movement, his writing is some of the
most poetic and sensitive I have come across in science fiction. The phrase
"Clarkean spheres" remains appropriate. In a sense, this book conveys the
poetic atmosphere even better, as the story has a somewhat more traditional
structure, and only a limited number of paragraphs contain full novels in a
compressed form. Nevertheless, there is a lot of harsh action going on as
well, and the world is definitely cyberpunk.
Rigorist was visiting me earlier this week, and among other hacks we did a
thorough undervolting for his laptop. While swapping some other hardware, I ended
up with a Wippies Homebox Grey whose contract is long overdue, so it is free
for hacking on. I have started to collect some relevant information for these boxes, hopefully with more hacks to come.
Yesterday I grabbed the soldering iron to get a serial connection up. For the TTL level converter, my first choice was a Casio graphing calculator interface I had built back in 1998. The schematics by Max Flebus are no longer available in the same form, but they do survive elsewhere.
In fact, this is not quite a full level converter as it cannot output the negative voltage, which is RS232 for logical 1. It simply inverts the signal between zero and positive. While it has worked well enough for my Casio fx-9700 at 9600 bps max, it had problems at 115200, though most of the text actually comes through legible. My other converter was a serial cable I had used with my Nokia 6110 — as with the Casio adapter, I had been oblivious to what it actually does for a long time. This cable worked splendidly, and from my Wippies page you can see some nice evidence of GPL violation by Saunalahti and Bewan.
Since my FPGA collaboration ended up as a project in Github, I have been
increasingly interested in other uses for the site. For example, in the past
few days I have done a number of significant changes in my Bitcoin
scripts, and I want to keep track of those edits, so a public repository
with its version tracking is a natural choice. I also feel that it gives my
code a more professional look compared to simply having it on a personal
It is remarkable that in the past weeks my projects seem to have gathered lots of followers, compared to my rather quiet 10 or so years of free software releases. Of those past projects, Comms is one that gained some attention in the form of patches and thank-you notes. I guess it could have been much more on a site like Github, but there was nothing like that back in 2002. Sites like Sourceforge do not seem to encourage such social kind of coding. It really needed a new paradigm in the form of git, which has been described as Linus's greatest invention so far.
I imagine Github is a little like Facebook for computer geeks (not that I would know anything about using FB). Sure, it is easy to share photos and keep a blog on your website, but it seems to work much better on a dedicated site. One apparent reason for the success of Facebook is the consistency of the interface, and the same applies here. It is like a school uniform, everyone looks basically the same and knows the same rules, so it is easier to just focus on the code. Less personal and thus more professional.