ortah писал(а):Здравствуйте, уважаемые товарищи!
Вот пытаюсь сделать блочный перемежитель. Суть его работы заключается в произвольном перемешивании бит информационного сигнала, с целью устранения идущих подряд нулей или единиц, что уменьшит количество ошибок в случае воздействия помехи. Вот результат моей работы. Проблема в том, что на выходе количество подряд идущих одинаковых символов только увеличилось. Подскажите пожалуйста, как мне это исправить?
Заранее спасибо за советы!
У Вас путаются понятия "
скремблирование" и "
перемежение", а соответственно цели использования и ожидаемый результат.
Скремблирование делается с целью выравнивания вероятностей появления "0" и "1", но это не значит, что они будут идти строго по порядку (получится меандр). Это позволяет решить ряд проблем, в том числе с рассинхронизацией и потерей энергетики при появлении постоянной составляющей.
Одно из условий скремблирования - без изменения скорости, а реализуется путем наложения ПСП.
Перемежение делается для борьбы с пакетизированными (сгруппированными) ошибками и используются совместно с помехоустойчивым кодированием (иначе смысл теряется).
Например в пакете 16bit в результате помехи были искажены 16bit, тут уже любые помехоустойчивые коды бессильны, но если раскидать эти ошибки равномерно по 16 пакетам (по одной на пакет), то ошибка будет гарантированно исправлена при декодировании.
Делается перемежение тоже без изменения скорости, но реализуется путем организации буфера, например 16*16. В него построчно загоняются 256bit, но а считываются столбцами. На приемном конце выполняется обратная операция.
При этом соотношение и положение "0" и "1" вообще не рассматривается.
Так что из всего, что сейчас сделано в программе мало что пригодится. Переделывайте все заново.
Если Вы замахиваетесь на цифру, то используйте и генератор соответствующий:
Digital Pattern Generator (
http://zone.ni.com/reference/en-XX/help ... l_pattern/).
Рассмотрение спектра сигнала тут тоже не уместно, по крайней мере в представленной форме.