NRZ (Non Return To Zero Level) NRZ
Недифференциальный Если 1 то один уровень (например высокий) Если 0 то другой используется в RS-232-C (Serial port) 0 = 0 1 = 1 Дифференциальный: 0 = нет изменений 1 = в начале интервала меняется состояние NRZ и NRZI:
NRZI (NRZ Inverted on On Ones) NRZI
инверсен дифференциальному NRZ используется в FDDI, Ethernet 100-Base-FX 0 - нет перехода в начале бита 1 - есть переход в начале бита другой вариант Если 1 то в середине интервала переход Если 0 то нет перехода.
Entity nrzi_encoder is Port ( CLK : in std_logic; D : in std_logic; Q : out std_logic ); End entity nrzi_encoder; Architecture basic of nrzi_encoder is Signal qint : std_logic := '0'; Begin p1 : process (clk) Begin If (d = '1') then If ( qint = '0' ) then Qint <= '1'; else Qint <= '0'; End if; End if; End process p1; Q <= qint; End architecture basic;
Entity nrzi_decoder is Port ( CLK : in std_logic; D : in std_logic; Q : out std_logic ); End entity nrzi_decoder; Architecture basic of nrzi_decoder is Signal lastd : std_logic := '0'; Begin p1 : process (clk) Begin If rising_edge(clk) then If (d = lastd) then Q <= '0'; Else Q <= '1'; End if; Lastd <= d; End if; End process p1; End architecture basic;
RZ (Return to Zero) Всегда в начале интервала 0V Недифференциальный: 1 0 +V +-+ 0 _ _| |_ _ _ | | -V +-+ Есть и дифференциальный. RZ (а - обычный, б - дифференциальный) RZ
Пример кодера в RZ код:
Пример декодера из RZ кода:
Bipolar AMI (Bipolar Alternate Mark Invertion) используется в DS1-DS4,ISDN AMI
0 = No signal 0V 1 = To Positive or negative Чередуются +V, -V (Alternate polariry)
ASI (Alternative Space Inversion) другое имя MAMI (Modified Alternate Mark Inversion) используется в ISDN как AMI, но наоборот 0 = Чередуются то +V, то -V 1 = 0V ASI
(High Density BiPolar 3) It like Bipolar AMI, но в случае 4х нулей подряд выдается сигнал B00V, где V - выброс в сторону полярности предидущего 1 HDB3
---------------------------------------- Полярность Предыдущая замена последнего 000+ 000- импульса +00+ -00- ---------------------------------------- + -00- 000+ - 000- +00+ ---------------------------------------- Есть еще HDB2: HDB3 0000 в 000V B00V HDB2 000 в 00V B0V
B8ZS (Bipolar with 8 Zero Substitution) аналогична AMI, но исключающая последовательности из 8 нулей заменяется последовательностью с 2мя нарушениями кодировки B8ZS
---------------------------- Data 1100000000110000010 ---------------------------- AMI +-00000000+-00000+0 HDB3 +-000-+00+-+-00-0+0 (--)(--) (--) B8ZS +-000-+0+-+-00000+0 (------) ---------------------------- Есть и другие разновидности: B8ZS 00000000 в 000VB0VB B6ZS 000000 в 0VB0VB B3ZS 000 в B0V или 00V B - символ по правилам AMI V - символ нарушающий правила AMI B3ZS B0V or 00V число импульсов B между двумя последовательными V нечетно полярность V чередовалась B6ZS 0VB0VB B3ZS и B6ZS:
MLT-3 используется в FDDI, Ethernet 100-Base-TX MLT-3
0 = уровень не меняется 1 = переход к следующему уровню +V, 0V, -V, 0V, +V ....
FM0 (Frequency Modulation) используется в LocalTalk На Границе битового интервала состояние меняется на противоположное (+V,-V) FM0
= 1 не меняется во время битового интервала = 0 меняется в середине битового интервала на противоположное
4B3T (4 Binary to 3 Ternary) используется в ISDN --------------------------------------------------------------------- ---- S1 ----- ----- S2 --- ----- S3 --- ----- S4 ---- 4B Data Next Data Next Data next Data Next --------------------------------------------------------------------- 0000 +0+ S3 0-0 S1 0-0 S2 0-0 S3 0001 0-+ S1 0-+ S2 0-+ S3 0-+ S4 0010 +-0 S1 +-0 S2 +-0 S3 +-0 S4 0011 00+ S2 00+ S3 00+ S4 --0 S2 0100 -+0 S1 -+0 S1 -+0 S3 -+0 S4 0101 0++ S3 -00 S1 -00 S2 -00 S3 0110 -++ S2 -++ S3 --+ S2 --+ S3 0111 -0+ S1 -0+ S2 -0+ S3 -0+ S4 1000 +00 S2 +00 S3 +00 S4 0-- S2 1001 +-+ S2 +-+ S3 +-+ S4 --- S1 1010 ++- S2 ++- S3 +-- S2 +-- S3 1011 +0- S1 +0- S2 +0- S3 +0- S4 1100 +++ S4 -+- S1 -+- S2 -+- S3 1101 0+0 S2 0+0 S3 0+0 S4 -0- S2 1111 ++0 S3 00- S1 00- S1 00- S3 --------------------------------------------------------------------- 4B3T
8B6T (8 Binary to 6 Ternary) используется в Ethernet 100-Base-T4 00h +-00+- 01h 0+-+-0 ..... FEh -+0+00 FFh +0-+00 8B6T
2B1Q (2 binary to 1 quaternary) используется в ISDN. 2B1Q
00 -2.5V 01 -0.883V 10 +2.5V 11 +0.883V
PAM4 (Pulse Amplitude Modulation 4) PAM4
11 +Vs 10 +2Vs/3 01 +Vs/3 00 0 PAM5 кодирование как PAM4, но биполярное и отсутствие сигнала означает управляющий символ
PPM (Pulse Position Modulation) Сигнал находится в определенной позиции PPM
PFM (Pulse Frequence Modulation) Количество импульсов в определенный промежуток времени PFM
PWM (Pulse Width Modulation) Разная длинна импульса PWM
Код Миллара
=1 Сигнал меняется в середине интервала =0 Сигнал не меняется Если два нуля идут подряд между ними сигнал меняется в середине интервала.
Манчестер-II используестся в 10MB Ethernet Манчестер-II (Ethernet) плюс кодирования - обнаружение коллизий 0 - низкий в высокий в середине бита 1 - высокий в низкий в середине бита Манчестер-II
Дифференциальная манчестерская в середине интервала всегда переход 0 - переход в начале интервала 1 - нет перехода в начале интервала Благодаря Манчестерской кодировки мы можем отслеживать коллизии в общей среде доступа. (Постоянная составляющая сигнала при коллизии становится отличной от нуля):
Пример кодировщика в Манчестер-II:
Library ieee; Use ieee.std_logic_1664.all; Entity Manchester_encoder is Port ( Clk : in std_logic; D : in std_logic; Q : out std_logic ); End entity Manchester_encoder; Architecture basic of Manchester_encoder is Signal lastd : std_logic := '0'; Begin P1: Process ( clk ) Begin If rising_edge(clk) then if ( d = '0' ) then Q <= '1'; Lastd <= '0'; elsif ( d = '1' ) then Q <= '0'; Lastd <= '1'; Else Q <= 'X'; Lastd <= 'X'; End if; End if; If falling_edge(clk) then If ( lastd = '0' ) then Q <= '0'; elsif ( lastd = '1' ) then Q <= '1'; Else Q <= 'X'; End if End if; End process p1; End architecture basic;
Entity Manchester_decoder is Port ( Clk : in std_logic; D : in std_logic; Q : out std_logic ); End entity Manchester_decoder; Architecture basic of Manchester_decoder is Signal lastd : std_logic := '0'; Begin P1 : process (clk) Begin If rising_edge(clk) then Lastd <= d; End if; If falling_edge(clk) then If (lastd = '0') and (d = '1') then Q <= '1'; Elsif (lastd = '1') and (d = '0') then Q <= '0'; Else Q <= 'X'; End if; End if; End process p1; End architecture basic;
Спектральные характеристики