commsrc.pattern help
2 views (last 30 days)
Show older comments
Leor Greenberger
on 7 Oct 2011
Edited: Richard Allred
on 14 Jun 2021
I am having trouble using commsrc.pattern to generate the following psuedo-random binary signal:
Pattern: PRBS7
Bitrate: 28E9
Rise time: 10E-12
Fall time: 10E-12
Output Levels: [475E-3 725E-3]
PulseWidth = 35.71E-12 seconds (at 50% point)
I tried something like the following:
z = commsrc.pattern('SamplingFrequency',10*br,'SamplesPerSymbol',25,'PulseType','NRZ', 'OutputLevels', [-475E-3 725E-3], 'RiseTime', 10E-12, 'PulseDuration', 35.71E-12 , 'FallTime', 10E-12, 'DataPattern', 'PRBS7')
but it doesn't work. Any ideas?
0 Comments
Accepted Answer
Richard Allred
on 10 Jun 2021
Edited: Richard Allred
on 14 Jun 2021
The property 'PulseDuration' is only valid when the 'PulseType' is 'RZ'. To solve your issue, simply don't specify the Pulse Duration property:
br = 28e9;
SamplesPerSymbol = 25;
z1 = commsrc.pattern(...
'SamplingFrequency',br,...
'SamplesPerSymbol',SamplesPerSymbol,...
'PulseType','NRZ', ...
'OutputLevels', [-475E-3 725E-3], ...
'RiseTime', 10E-12, ...
...'PulseDuration', 35.71E-12 , ...
'FallTime', 10E-12, ...
'DataPattern', 'PRBS7')
w1 = generate(z1,127);
figure(1),plot(w1)
An alternative solution is to use the stimulus object from the SerDes Toolbox
z2 = serdes.Stimulus(...
'SymbolTime',1/br,...
'SampleInterval',1/br/SamplesPerSymbol,...
'Modulation',2,...
'Order',7,...
'MapToVoltage',[-475E-3 725E-3]);
N = SamplesPerSymbol*127;
w2 = zeros(N,1);
for ii = 1:N
w2(ii) = step(z2);
end
figure(2),plot(w2)
0 Comments
More Answers (0)
See Also
Categories
Find more on Sources and Sinks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!