Igor657 0 8 февраля, 2007 Опубликовано 8 февраля, 2007 · Жалоба Добрый день. Подскажите пожалуйста, каковы критерии потери синхронизации CRC MFAS ? Нужно ли после неё сбрасывать синхронизацию FAS ? Заранее спасибо за ответы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Морква 0 13 февраля, 2007 Опубликовано 13 февраля, 2007 · Жалоба ...каковы критерии потери синхронизации CRC MFAS? Две ошибки подряд. Нужно ли после неё сбрасывать синхронизацию FAS ? Нет, не надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor657 0 13 февраля, 2007 Опубликовано 13 февраля, 2007 · Жалоба А не подскажите ли в какой рекомендации это указано ? Про 2 раза я читал, но это косалось _CAS_ MFAS, а про _CRC_ MFAS в G.706 я ничего не нашел. Успехов во всех начинаниях ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Морква 0 14 февраля, 2007 Опубликовано 14 февраля, 2007 · Жалоба А не подскажите ли в какой рекомендации это указано? G732, раздел 5. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artem_Petrik 0 17 февраля, 2007 Опубликовано 17 февраля, 2007 · Жалоба А не подскажите ли в какой рекомендации это указано ? Про 2 раза я читал, но это косалось _CAS_ MFAS, а про _CRC_ MFAS в G.706 я ничего не нашел. Возможно у вас какой-то не такой G.706 :) В моем четко написано: срыв синхронизации если есть ошибки в трех синхрословах подряд, или если в среди последней тысячи кадров CRC не сошлась в 915. Это почти первое, что написано для системы 2048 Мбит/с (раздел 4.1.1 Правда у меня стандарт за 91 год, в новых возможно нумерация изменилась.). А вот про CAS - ни слова. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maegg 0 14 марта, 2007 Опубликовано 14 марта, 2007 · Жалоба А не подскажите ли в какой рекомендации это указано ? Про 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 считается верно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maegg 0 14 марта, 2007 Опубликовано 14 марта, 2007 · Жалоба Только спросил, как сам разобрался... Забыл удалить из последовательности для подсчета значения 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться