Перейти к содержанию
    

E1 CRC MFAS

Добрый день.

 

Подскажите пожалуйста,

каковы критерии потери синхронизации CRC MFAS ?

 

Нужно ли после неё сбрасывать синхронизацию FAS ?

 

Заранее спасибо за ответы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...каковы критерии потери синхронизации CRC MFAS?

Две ошибки подряд.

 

Нужно ли после неё сбрасывать синхронизацию FAS ?

Нет, не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не подскажите ли в какой рекомендации это указано ?

Про 2 раза я читал, но это косалось _CAS_ MFAS, а про _CRC_ MFAS в G.706 я ничего не нашел.

 

Успехов во всех начинаниях !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не подскажите ли в какой рекомендации это указано ?

Про 2 раза я читал, но это косалось _CAS_ MFAS, а про _CRC_ MFAS в G.706 я ничего не нашел.

 

 

Возможно у вас какой-то не такой G.706 :) В моем четко написано: срыв синхронизации если есть ошибки в трех синхрословах подряд, или если в среди последней тысячи кадров CRC не сошлась в 915. Это почти первое, что написано для системы 2048 Мбит/с (раздел 4.1.1 Правда у меня стандарт за 91 год, в новых возможно нумерация изменилась.). А вот про CAS - ни слова.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не подскажите ли в какой рекомендации это указано ?

Про 2 раза я читал, но это косалось _CAS_ MFAS, а про _CRC_ MFAS в G.706 я ничего не нашел.

 

Про CRC_MFAS в основном говорится в G.704.

Правда пока я сам не стал подписывать CRC к фреймеру все казалось ясно.

А тут элементарная вещь не получилась... Может посоветуете

Считаю сейчас так: начиная с бита С1 циклового сигнала SMF (субмультифрейм по CRC) последовательно подаю на схему сдвига 8 циклов. После результат переписывается в регистр CRC, сдвиговый регистр обнуляется, а в следующем SMF CRC передается в С битах циклового.

Так-вот CRC-MFAS от моего формирователя воспринимается верно, а по CRC сыпятся ошибки.

//calculate CRC4

reg [3:0] newcrc;

reg [3:0] c;

wire crc_cio;

assign crc_cio = (slot_count[10:0] == 11'b111_11111_111); //8 frames

 

always @(posedge f2m or negedge rst)

if(rst == 1'b0)

crcreg <= 'b0;

else if (crc_cio == 1'b1)

crcreg <= newcrc;

 

always @(posedge f2m or negedge rst)

if(rst == 1'b0)

c <= 'b0;

else if (crc_cio == 1'b1)

c <= 'b0;

else

c <= newcrc;

 

always @(c, nrzout) begin

newcrc[0] = nrzout ^c[3];

newcrc[1] = nrzout ^c[0] ^c[3];

newcrc[2] = c[1];

newcrc[3] = c[2];

end

 

То-есть пожоже периодически CRC считается верно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только спросил, как сам разобрался...

Забыл удалить из последовательности для подсчета значения CRC

G.704

2.3.3.5.2 Encoding procedure

i) The CRC-4 bits in the SMF are replaced by binary 0s.

Вот модуль для формирования тестового фрейма с CRC

 

module pcmfrm_crc ( f2m ,rst ,nrzout );

 

output nrzout ;

wire nrzout ;

 

input f2m ; //2048 kHz

wire f2m ;

input rst ; //global reset

wire rst ;

reg nrz;

reg [7:0] pcm_dc;

reg [11:0] slot_count;

wire count_set;

reg cb; //replace bit P1 in FAS

reg cbn; //replace bit P1 in NFAS

wire [7:0] fasc; //assemble FAS word

wire [7:0] nfasc; //assemble NFAS word

reg [3:0] crcreg; //crc register

 

 

parameter FAS = 8'b00011011;

parameter NFAS = 8'b11011111;

parameter MFAS = 8'b00001011;

parameter IDLE = 8'b11010101;

parameter CRCMFAS = 8'b001011_11;

 

wire [7:0] crc_mfas = CRCMFAS;

 

//loadable slot count

always @(posedge f2m or negedge rst)

if(rst == 1'b0)

slot_count <= 'b0;

else

slot_count <= slot_count + 'b1;

 

always @(slot_count[10:9], crcreg) begin

case(slot_count[10:9])

2'b00: cb = crcreg[3];

2'b01: cb = crcreg[2];

2'b10: cb = crcreg[1];

2'b11: cb = crcreg[0];

endcase

end

 

assign fasc = {cb, FAS[6:0]};

 

//form MFAS CI0

always @(slot_count[11:9],crc_mfas) begin

case(slot_count[11:9])

3'b000: cbn = crc_mfas[7];

3'b001: cbn = crc_mfas[6];

3'b010: cbn = crc_mfas[5];

3'b011: cbn = crc_mfas[4];

3'b100: cbn = crc_mfas[3];

3'b101: cbn = crc_mfas[2];

3'b110: cbn = crc_mfas[1];

3'b111: cbn = crc_mfas[0];

endcase

end

 

assign nfasc = {cbn, NFAS[6:0]};

 

 

always @(slot_count, fasc, nfasc) begin

if(slot_count[8:3] == 6'b0_00000)

pcm_dc = fasc;

else if(slot_count[8:3] == 6'b1_00000)

pcm_dc = nfasc;

else if(slot_count[11:3] == 9'b0000_10000)

pcm_dc = MFAS;

else

pcm_dc = IDLE;

end

 

always @(slot_count[2:0], pcm_dc) begin

case(slot_count[2:0])

3'b000: nrz = pcm_dc[7];

3'b001: nrz = pcm_dc[6];

3'b010: nrz = pcm_dc[5];

3'b011: nrz = pcm_dc[4];

3'b100: nrz = pcm_dc[3];

3'b101: nrz = pcm_dc[2];

3'b110: nrz = pcm_dc[1];

3'b111: nrz = pcm_dc[0];

endcase

end

 

assign nrzout = nrz;

 

always @(slot_count)

if(slot_count[8:0] == 9'b0_00001_000)

cio = 1'b1;

else

cio = 1'b0;

 

//calculate CRC4

reg [3:0] newcrc;

reg [3:0] c;

wire crc_cio;

wire c_cio; //strobe C bit in frame signal

assign crc_cio = (slot_count[10:0] == 11'b111_11111_111); //8 frames

assign c_cio = (slot_count[8:0] == 9'b0_00000_000);

 

always @(posedge f2m or negedge rst)

if(rst == 1'b0)

crcreg <= 'b0;

else if (crc_cio == 1'b1)

crcreg <= newcrc;

 

always @(posedge f2m or negedge rst)

if(rst == 1'b0)

c <= 'b0;

else if (crc_cio == 1'b1)

c <= 'b0;

else

c <= newcrc;

 

always @(c, nrzout) begin

newcrc[0] = (nrz & ~c_cio) ^c[3];

newcrc[1] = (nrz & ~c_cio) ^c[0] ^c[3];

newcrc[2] = c[1];

newcrc[3] = c[2];

end

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...