Nov 06, 2009
A couple of weeks ago, I had written about a method to implement a High Resolution DAC using two 8 bit DACs. Recently I had a very interesting discussion with one of my colleagues and a good friend, a young and brilliant guy named Kannan. He showed me how to implement a high resolution Dithered DAC using a single 8 bit DAC, an 8 bit Mux, a couple of Control Registers and a PWM. It is amazing what you can do with the PSoC 3 hardware.
Dithering is a widely used technique in Digital Processing where a noise is intentionally introduced into a system to increase the resolution of the system. Say we have an 8 bit DAC with a full scale value of 255mV. Each count of the DAC represents 1mV. What if we wanted an output of 1.25mV from the DAC. Switch the DAC output between 1mv and 2mV keeping the output at 2mV 25% of the time and 1mV 75% of the time, the average value of the output would be 1.25mV. For an output of 1.5mV, the DAC output should be maintained at 2mV for 50% of the time and 1mV 50% of the time.
Now let us see how this method can be implemented using the PSoC 3 hardware to create a 10 bit DAC.
Place an 8 bit voltage DAC. Select 1.020V (4mV / bit) as the range. Set the Data_Source to “DAC Bus” and Strobe_Mode to “External”. The output of the DAC can now be controlled using an 8 bit data bus and the output will be updated on the rising edge of the Strobe input.
Place a Multiplexer from the Digital >> Logic category. Set number of input terminals to 2 and terminal width to 8. The multiplexer can now switch between two 8 bit data buses. Place two control registers from the Digital >> Registers category. Set the number of outputs to 8. Connect the 8 bit data bus of the Control registers to the input of the Multiplexer.
Place a PWM, with a period of 3 and compare type set to “Less than”. The output of the PWM now can be controlled to 0%, 25% and 75% duty cycle. Connect the output of the PWM to the control input of the Mux. Use the same clock of the PWM as a strobe to the DAC. The hardware is now ready.
The range of the DAC now is 0 to 1020 counts; each count representing 1mV, subject to some offset and gain error inherent in the 8 bit DAC.
Quoting my brilliant friend “I bet this cannot be implemented with any other controller out there in the market!!”
|Like this item? Spread the news:|
|Digg this Facebook LinkedIN Twitter|
Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms and Conditions of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms and Conditions of this site. Cypress Semiconductor and its suppliers reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.