Documentation |
This example shows how to estimate the high and low state levels for digital clock data. In contrast to analog voltage signals, signals in digital circuits have only two states: HIGH and LOW. Information is conveyed by the pattern of high and low state levels.
Load clockex.mat into the MATLAB^{®} workspace. clockex.mat contains a 2.3 volt digital clock waveform sampled at 4 megahertz. Load the clock data into the variable, x, and the vector of sampling times in the variable, t. Plot the data.
load('clockex.mat','x','t') stem(t,x,'markerfacecolor',[0 0 1]); xlabel('Seconds'); ylabel('Volts');
Determine the high and low state levels for the clock data using statelevels.
levels = statelevels(x)
The low-state level estimate is 0.0027 volts and the high-state level estimate is 2.3068 volts. This is the expected result for the 2.3 volt clock data, where the noise-free low-state level is 0 volts, and the noise-free high-state level is 2.3 volts.
Use the estimated state levels to convert the voltages into a sequence of 0s and 1s. The sequence of 0s and 1s is a binary waveform representation of the two states. To make the assignment, use the following decision rule. Assign any voltage within a 3%-tolerance region of the low-state level the value 0, and any voltage within a 3%-tolerance region of the high-state level the value 1.
Determine the 3%-tolerance region around the low-state level.
lowtol = [levels(1)-3/100*(levels(2)-levels(1)) ...
levels(1)+3/100*(levels(2)-levels(1))];
Determine the 3%-tolerance region around the high-state level.
hightol = [levels(2)-3/100*(levels(2)-levels(1)) ...
levels(2)+3/100*(levels(2)-levels(1))];
Use logical indexing to determine the voltages within a 3%-tolerance region of the low-state level and the voltages within a 3%-tolerance region of the high-state level. Assign the value 0 to the voltages within the tolerance region of the low-state level and 1 to the voltages within the tolerance region of the high-state level. Plot the result.
y = zeros(size(x)); y(x>= lowtol(1) & x<= lowtol(2)) = 0; y(x>= hightol(1) & x<= hightol(2)) = 1; subplot(211) stem(t,x,'markerfacecolor',[0 0 1]); ylabel('Volts'); subplot(212) stem(t,y,'markerfacecolor',[0 0 1]); ylabel('{0,1}'); xlabel('Seconds'); set(gca,'ytick',[0 1])
The decision rule has assigned all the voltages to the correct state.