18-05-2020, 07:12 PM
For the user interface I am using a 18LF24K22 microcontroller a 16 X 2 LCD display and two rotary encoders with push switches.
I will use separate push switches if I find I need them and will increase the size of display to a 20 x 4 if needed.
I had the 18LF24K22 left over from a water meter/leak detector project. It's a 28 pin device. If I find that it has not enough memory I can change to the 18LF26K22 which is the same microcontroller but with four times the memory. I am running it off it's internal oscillator as frequency stability is not important.
I have the microcontroller talking to the FPGA
I could have done it with 2 wires but I have gone for 3 clock, data and start.
The third wire makes the logic at the receive end very simple but most of all it is convenient for triggering an oscilloscope to check what is being sent as I debug.
I have it setup to send 24 bytes but that can be increased if needed.
The write frequency to the frame store will be constant at 13.5 MHz. Read frequency will vary quite a bit.
The microcontroller calculates the output clock as follows
(front porch + sync + back porch + active line) * no. of lines * frame rate = frequency in Hz
Front porch, sync, back porch and active line are all in cycles(or pixels).
Active line and frame rate are constants.
All others are variables and eventually will be able to be set between preset values via a menu.
The output clock frequency is sent to the FPGA where it is multiplied with a coefficient the result is the coefficient for the output clock DTO.
if covering a range for example of 100 to 820 lines the output clock will vary from approximately 2 MHz to 18 MHz.
A couple of photos.
The first is the user interface built on a couple of scraps of stripboard.
Its hard to see the display but the front porch is set to a crazy value of 600 (would be normally around 73) and the active lines is set to 354.
The second photo shows the result displayed on the monitor. At these settings the output clock is operating at over 21 MHz.
Frank
I will use separate push switches if I find I need them and will increase the size of display to a 20 x 4 if needed.
I had the 18LF24K22 left over from a water meter/leak detector project. It's a 28 pin device. If I find that it has not enough memory I can change to the 18LF26K22 which is the same microcontroller but with four times the memory. I am running it off it's internal oscillator as frequency stability is not important.
I have the microcontroller talking to the FPGA
I could have done it with 2 wires but I have gone for 3 clock, data and start.
The third wire makes the logic at the receive end very simple but most of all it is convenient for triggering an oscilloscope to check what is being sent as I debug.
I have it setup to send 24 bytes but that can be increased if needed.
The write frequency to the frame store will be constant at 13.5 MHz. Read frequency will vary quite a bit.
The microcontroller calculates the output clock as follows
(front porch + sync + back porch + active line) * no. of lines * frame rate = frequency in Hz
Front porch, sync, back porch and active line are all in cycles(or pixels).
Active line and frame rate are constants.
All others are variables and eventually will be able to be set between preset values via a menu.
The output clock frequency is sent to the FPGA where it is multiplied with a coefficient the result is the coefficient for the output clock DTO.
if covering a range for example of 100 to 820 lines the output clock will vary from approximately 2 MHz to 18 MHz.
A couple of photos.
The first is the user interface built on a couple of scraps of stripboard.
Its hard to see the display but the front porch is set to a crazy value of 600 (would be normally around 73) and the active lines is set to 354.
The second photo shows the result displayed on the monitor. At these settings the output clock is operating at over 21 MHz.
Frank







