Browsed by
Month: March 2019

Processor

Processor

I have been noodling around the idea of doing my own processor for my supercomputer. I’d like to play around with some old school SIMD PE architectures, and those design works well within an FPGA implementation. Curious if any of my nerd/processor architecture friends would comment on a selective execution idea I am considering.

http://www.sponaugle.com/papers/SIMDPartitionIdea.pdf

A classical problem in SIMD machines is how to handle partial execution, where you want only some processors in the cluster to execute certain instructions. The method I am proposing is a combination of an old school vector mask combined with RISC style register/register instruction set.
http://www.sponaugle.com/papers/SIMDPartitionIdea.pdf

Facebook Post: 2019-03-14T17:56:58

Facebook Post: 2019-03-14T17:56:58

3rd Floor Joist are starting to materialize. Once those are finished the rear deck will get installed, which will make building of the great room 2 story walls much easier. It will be cool to see the third floor built.

CanPi

CanPi

For my fellow nerd friends – I wrote up a quick short note describing the operation of my CAN-PI datalogging hardware board. I would love to hear some comments/suggestions/criticisms/race conditions I didn’t think of/etc. It does contain a quick walk through of the critical parts of the interrupt handlers.

http://www.sponaugle.com/raspcan/RaspCanTheory.pdf

House

House

Interior walls go so much quicker. The floor joists for the 3rd floor were delivered today, so as soon as they get the deck joists installed they can start on the next floor.

I did an overlay merge with one of the picture and the floor plan, and it looks like they built what we designed.

House

House

A few more snow days last week plus some really cold and windy days make for hard work, but more walls are coming into form! The shop is mostly complete in terms of framing, with the exception of the small bathroom I added. That will get framed a bit later. The middle level outside walls are getting built now, and the rear deck framing will happen next before doing the two story main level walls.

The windows have also arrived, but are in storage. As soon as we get framing done we will get the windows and the roof on so we can seal things up.

The Glulams for the deck were also delivered. I didn’t notice in the plan that all of the ‘floor joists’ under the deck are 3.5″ x 13.5″ x 22′ glulams. 40 of them. One glulam of that size at 22′ long should support around 320lb/linear foot or a total load of 7000lbs. Given there are 40 of them that is 280,000 lbs of load, which seems like a lot, even with the covered portion. Well engineered I think.

Com

Com

I have found the implementation of full duplex asynchronous high speed comm channel over a very synchronous master only SPI bus to be an interesting challenge. This is for my CAN logging device that uses a PiZero connected to a dsPIC33 over SPI, and the dsPIC33 connected to two 1mbit CAN busses. Since the PI has to be the SPI master, it controls the rate and timing of when things can be ‘sent’ to it from the Pi. I implemented a GPIO signal from the PIC to the Pi to indicate the desire to transfer, and while that works, the desire to have that transfer independent of what is actually being sent in the other direction adds some challenge. On top of that to sustain the full SPI data rate while having both CAN busses receiving and transmitting at full rate requires the use of the TX and RX SPI FIFOs, which really adds some interesting complexity. Since the FIFOs need to be full before we know what is coming from the other side, it requires some padding and packet ‘encapsulation’. After many tweaks and tests, I was successful in transcribing a over 10 million packets at full rate with a 100% loaded CAN bus over the SPI bus as well as the second CAN bus without dropping anything, and with only a 20% padding rate. I think for the next rev I am going to switch up to a dsPIC with more memory (this one only has 8k of RAM), so I can afford a bit more buffering.

In practice this really is a worst case, as typically there would be filters in place so you are only logging things from data devices, and eliminating things like status and clocking traffic.