After finishing coding and simulating the Verilog printer driver modules, it was time to test it with the real thing:
Even though I'm planning to use a Xilinx Spartan 6 on the replacement PCB in the Canon P170-DH calculator shell, I'm continuing to use the Lattice iCEblink40-HX1K development board for testing. One good reason for this is that I can buy a replacement iCEblink40 board for $40 (US) and have it delivered in a few days, while both of the Digilent reference boards I have are "retired" products and cost several hundreds of dollars each.
Initial testing went well. When I operated this printer using the PIC I printed the digits in decreasing sequence, which meant there was a delay of 93% of a rotation between symbols. One of the tests I wanted to do was to see whether adjacent symbols could be printed consecutively (e.g. printing a "2" immediately after printing a "1"). This does not appear to work. In fact, the printer seems to have trouble if the gap isn't at least 3 symbols.
I'd explore that further, but the iCEblink40 board has died yet again. This time the symptom is the "POWER" LED doesn't illuminate. This is connected to the "PG" (Power Good) output of the voltage regulator, and serves to hold the FPGA in reset until the voltages reach proper operating levels. The VCC_3V3 and VCC_CORE voltages seem to be correct (3.32V and 1.20V respectively), so I'm not sure whether the voltage regulator is being naughty again or if something more catastrophic has occurred. I'll dig into that later.
So... In general, the Verilog modules work as designed, with only a few tweaks needed to adjust to unexpected printer behavior. Also, the driving circuits seem to work properly, though I think I'm going to take a good look at the driver transistor gates to see if any inductive spikes are feeding back toward the FPGA.
Update: The problem with the iCEblink40 board seems to be intermittent. I unplugged everything and went to lunch. When I plugged it into the USB it started working. Then, 5 minutes later, with nothing happening near it, the POWER LED went out and it quit responding again. Tapping the board (ok, smacking it on the table repeatedly) makes the POWER LED light briefly then go out again. I think it's time to reflow some solder joints on this thing again.
As so often happens, as I re-read these postings looking for typos and other errors, I think of something that needs to be tested. In this case, it occurs to me that I don't know how long it takes for the M-32TL printer to be ready to print after the last character on the previous line is printed.
ReplyDeleteMy current configuration is flexible enough that I can test that merely by loading the test module with more than one line of data before triggering the FIFO load. But I think that test will need to wait for another day.