My explorations this morning proved that the test generator is outputting the correct stream of bits. I then moved on to the logic that produces the WriteDataClock signal, to determine what stream comes out of it and compare to the test stream. Each such step requires re-synthesis thus incurs a 20-30 minute delay.
Onward I moved to instrument the logic that entrains on the clock pulses of the WriteDataClock signal and extracts data values from the spaces in between. After a suitable pause to synthesize I was ready to run the next experiment.
I can see the logic incorrectly detecting data bit values, but it will take a careful listing of the timing of all the signals and state machines before I can determine the flaw and repair it. The key is in the two state machines - one entraining and tracking clock pulse, the other detecting data pulses. One of these, or their interaction, is misbehaving.
I found it! A window vulnerability that would extend the time in the data extraction FSM in certain circumstances to cause it to misregister spurious 1 data values. With that repaired, the logic handled the updates perfectly, both to alter just the data record and to alter both label and data record. I think the checksum testing worked properly as well, but to be certain, I prepared some signals to watch with the logic analyzer.
Also, I tweaked the testgenerator to put in some different values, particularly for the header record, so that I could do a test where the entire sector is written. The synthesis took a while, but I was pretty confident in the outcome.
The results were perfect. My update logic works fine for any time the WriteGate logic is turned on somewhere in the space between the records (or in the preamble for the first - header - record). As far as I can tell without hooking this to an Alto, it seems ready to provide an emulated disk drive.
FUNDRAISER PIRATE SHIP DEVELOPMENT
My wife and I are building props for a fundraising event at Villa Siena; this year's theme is Pirates & the Caribbean. The bar will be a 16' long pirate ship, 4-8' high not counting the mast/sail. It will be a facade, not three dimensional, but I will have several 'cannons' protruding from the side.
Inside the cannons will be bright LEDs to simulate cannon fire, along with a continuous performance of the song from the disney theme ride. Too, I will have a pirate head peeking above the deck and smoke from the cannons and down low as 'water'.
I have most of the gear on hand and began working out my wiring design. I will use a constant current power supply set to .7A to deliver the voltage to each LED. These will be wired through a bank of relays, one per cannon, that I can activate with an Arduino program. The program will also produce the cannon fire sound, independent of the song playing through another small MP3 device.
There are a host of other props, including pier pylons with ropes, palm trees, treasure chests and barnacles. We also found a life sized skeleton that we can sit on a bench and dress with a bandanna, eyepatch and pirate hat. Atop its shoulder is a correctly proportioned parrot skeleton that will also be clad in hat, bandanna and patch.
|Before hats, eyepatches and bandannas|