<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在DS上啟用分數T1環回檢測

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-22 10:08 ? 次閱讀

本應用筆記介紹如何使用DS31256的接收BERT功能執行分數T1(FT1)環路或環路下降檢測(V.54),如分數T1.403附錄B規范中所述。工作算法和編碼示例說明了DS31256易于適應終端用戶應用。

DS31256只有一個BERT引擎,但有16個V.54引擎(每個端口一個)。因此,如果測試多個端口,軟件帶寬必須處理所需的多路復用。

算法

下面圖 1 和圖 2 中的流程圖詳細描述了環上和下環操作。假定只有端口 0 在查找 FT1 模式?;舅惴ㄔO置 BERT 以查找環路模式。同步后,算法檢查以確保BERT在可編程周期(代碼中為0.6秒)內同步,然后查找全一模式。然后,對循環代碼遵循相同的同步和檢查方法,然后是 all one 模式。

盡管此示例使用 0.6s 作為確保 BERT 同步的時間段,但必須根據 sync_loop 函數的執行速度調整此時間段。

poYBAGP1eSKACaHAAABR_FvcsyQ850.gif

圖1.FT1(環上環和環下)探測器操作流程圖。

poYBAGP1eSOAezpaAAA5KoVnbL4182.gif

圖2.FT1(環上環和環下)檢測器操作流程圖(續)。

編碼示例函數調用的定義

poYBAGP1fUyAG5r3AABsLgLY7Ng470.png

函數的編碼示例

測試 FT1 的功能

void FT1Test()
{
	int status = 0;
	
	FT1Setting(0, 0); 				-- Configure the device for BERT
status = sync_loop(1, 300, 5000); 		-- FT1 loop-up test
if(status == 1) 				-- Return status is synced
{
  	status = sync_loop(3, 300, 5000);	-- FT1 all ones test
  	if(status == 1)
  	{
   	loopbackSetup(1);			-- Place channelized in network loopback
	status = sync_loop(2, 300, 5000);	-- FT1 loop-down test
	
	if(status == 1)
   	     {
status = sync_loop(3, 300, 5000); 	-- FT1 all ones test
    		if(status == 1)
loopbackSetup(0);			-- Take out from channelized loopback 
    		else
checkstatus(3);			-- Print out test status
   	} 
	else 
	{
checkstatus(2);			-- Print out test status
	}
  	} 
else 
{
checkstatus(3);			-- Print out test status
  	}
} 
else 
{
  	checkstatus(1);				-- Print out test status
}
}

1. 打印測試狀態消息的功能

void checkstatus(int type)
{
	switch(type)
 	{
 	case 1: printf("Loopup pattern not found");	
  		break;
 	case 2: printf("Loopdown pattern not found");
  		break;
 	case 3: printf("All 1's pattern not found");
  		break;
 	}
}

2. 配置FT1的功能

此示例假定端口 0 用于 FT1 檢測

void FT1Setting(int dev, int port)
{
int mc = 0;						-- Variables to be used
int ds0 = 0;
int rcfg = 0;
	
mc = read_reg (0x10);				-- Read Master Control(MC) 0x00 register
mc = mc & 0xf07f;	-- Mask out the read-back value from MC 
write_reg (0x10, mc); 	-- Assign the BERT to port 0 (MC.BPS4-0) 

write_reg(0x0304, 0x4000); 	-- Configure port 0 in receive port 
for(ds0 = 0; ds0 < 128; ds0 = ds0 + 1) 		-- Configure register 
{							--Assign timeslot R[0]CFG[ds0].RBERT bit  
write_ind_reg(0x0300, 0x0100 + ds0);	-- Assign all 128 ds0’s to RBERT 
	}				
printf("FT1 configuration completed."); 
}

3. 執行FT1測試的功能

int sync_loop(int pattern, int sync_cnt, int timeout) 
{  
int timeCnt = 0; 					-- Variables will be used
int cnt = 0;
int status = 0;
int temp = 0;
int sync = 0; 
int bertc0 = 0; 
int bertec0 = 0;

BertSetup(pattern);					-- Set up the BERT

bertc0 = read_reg (0x500);				-- Toggle RESYNC
bertc0 = bertc0 | 0x0001;	-- Mask the read BERTC0 value 
write_reg (0x500, bertc0);				-- Write a 1 into BERTC0.RESYNC
bertc0 = bertc0 & 0xfffe;				-- Mask out read-back value
write_reg (0x500, bertc0);				-- Write 0 into BERTC0.RESYNC

bertc0 = read_reg (0x500);				-- Read BERTC0
bertec0 = read_reg (0x518);				-- Read BERTEC0
sync = ((bertec0 & 0x0001) == 0x0001);  		
timeCnt = timeCnt + 1;

while(cnt= timeout)
   	{
printf("Time Out while searching for pattern.");
return status = 0;
   	}
       }
	delay(2000);
	timeCnt = timeCnt +1;
	bertec0 = read_reg (0x518); 			-- Read value of BERTEC0
	temp = ((bertec0 & 0x0010) == 0x0010);	-- Check BERTEC0.RLOS 
	
	if(temp == 1)
     {
            sync = 0;
   	cnt = 0;
	}
	else
	{
   	cnt = cnt+1;
	}

	if(cnt == sync_cnt)
	{
   	printf("Synced to pattern.");
   	return status = 1;
}
 }
 return 0;
}

4. 在BERT寄存器中設置模式

void BertSetup(int pattern) 
{  
	switch (pattern)  
	{
  	case 1:
write_reg (0x500, 0x0 & 0x003c);	-- Disable BERTC0.RINV 
break;					-- Set 2E7-1 pattern
case 2:
write_reg (0x500, 0x0020 & 0x003c);--Enable BERTC0.RINV 
break;					-- Set 2E7-1 pattern
  	default:
write_reg (0x508, 0xffff);		-- Set BERT Repetitive Pattern Set 
write_reg (0x50C, 0xffff);		-- in BERTBRP0-1
write_reg (0x500, 0x0010 & 0x003c);-- Disable BERTC0.RINV
   		break;					-- Set to repetitive pattern
 	}
}

5. 設置環回模式的功能

此示例假定端口 0 放置在環回中。

void loopbackSetup(int val)
{
	int a = 0; 
	int tmp = 0;
	
	tmp = val<<11;
	write_reg(0x0304, tmp); 	-- Set port and channel 0 
 	for (a = 0; a < 128; a++)	-- Set T[0]CFG[a].CNLB to place channel in 
	{	-- loopback  
write_ind_reg(0x0300, 0x0200 + a);		 
	}

	if(val ==1)
	{
write_reg(0x0200, 0x0008); 			-- Enable TP[0]CR.TFDA1 to allow data to 
printf("Loopup detected");			-- be transmitted normally
printf("Channel placed in loopback");	
	}
	else
	{
write_reg(0x0200, 0x0000); 			-- Disable TP[0]CR.TFDA1 bit 
printf("Loopdown detected");
  	printf("Channel taken out from loopback");
	} 
}

結論

本應用筆記介紹了如何在DS31256中使用接收BERT功能。示例代碼和軟件算法說明了執行FT1環路或環路檢測是多么容易。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    30

    文章

    5141

    瀏覽量

    118055
  • 端口
    +關注

    關注

    4

    文章

    835

    瀏覽量

    31668
  • 引擎
    +關注

    關注

    1

    文章

    346

    瀏覽量

    22315
收藏 人收藏

    評論

    相關推薦

    新手求助T0,T1計數器

    本帖最后由 wg555555 于 2014-3-11 10:24 編輯 代碼如下:正在學習51單片機C編程,準備用STC89C52弄個兩路計數器,發現T1能正常計數,T0每次+1必須在T
    發表于 03-11 10:19

    定時器T1的溢出率

    誰能仔細解釋一下51單片機定時器T1的溢出率?
    發表于 06-07 15:26

    串口通信的時候,為什么T1T0會發生沖突呢,但是單獨...

    串口通信的時候,為什么T1T0會發生沖突呢,但是單獨都可以工作,這是為什么,大家版幫忙
    發表于 11-02 13:22

    如圖,怎樣由PXI 6115板卡,labview2016軟件測得T1T6?

    如圖,怎樣由PXI 6115板卡,labview2016軟件測得T1T6?轉子旋轉一周產生如圖T1T6的6個正弦波,T1為第一個正弦波,
    發表于 11-29 22:19

    如圖波形頻率測量,怎樣把T1T6測出來

    如圖所示的波形由不規則六邊形磁場中旋轉產生,六邊形轉子旋轉一周產生T1T6六個類似正弦的波形,其中六邊形較短的邊產生的類正弦波幅值要比同周期的其他幅值要小,比如T1,
    發表于 12-19 22:14

    基于51單片機定時器T1的中斷服務程序

    **************************************************************/ void main(void) { EA=1;//開總中斷 ET1=1;//定時器
    發表于 07-19 05:53

    銅絞線原材料紫銅牌號T1、T2、T3是什么意思

    銅絞線原材料一般都選用紫銅,因為紫銅導電率、導電導熱相比黃銅有更加優越的性能。但是紫銅又有T1、T2、T3之分。那么他們之間有什么區別呢?鄭州華威金屬小編為你做詳細解答:紫銅(工業純
    發表于 11-08 14:56

    怎么ML605使用FM-S14 C子卡進行通信?

    接口之間的GTX,然后通過chipcope查看波形。它運作良好。 現在,我想使用FM-S14 C子卡(光纖)ML605板上進行相同的通信。所以,這次我的GTX都來自FMC-HPC。但是,它不
    發表于 09-05 13:21

    T1系統的傳輸速率為多少

    1、T1系統的傳輸速率為__1.544Mbps,___ ,E1系統的數據傳輸速率為 2.048Mbps_2、被稱為計算機網絡技術發展里程碑的計算機網絡系統是ARPA網3、采用同步 TDM時,為了區分
    發表于 07-22 06:09

    【晶心科技ADP-Corvette-T1開發板試用體驗】corvette T1的多任務調度學習

    調度器來實現T1開發板下的多任務調度,主要用到TaskScheduler這個庫,管理庫中搜索并安裝即可。先演示下其中的示例,打開個庫中的Scheduler_example00_Blink這個示例
    發表于 07-10 23:36

    使用HAL接口STM32F4啟用閃存讀保護(級別 1)時出現問題怎么解決?

    我正在嘗試使用以下 HAL 代碼 STM32F411VET6 啟用閃存讀保護(級別 1): FLASH_OBProgramInitTy
    發表于 12-26 06:38

    dTSEC是否支持遠程MAC?

    對于 P5040 處理器,可能會回答以下查詢。 1. dTSEC 是否支持遠程 MAC ? 2. DPAARM中提到“ Carrier extend symbols in full duplex
    發表于 04-23 08:18

    linux-imx內核啟用RT行為的路徑是什么?

    和輸出音頻之間使用 Pipewire 中的,然后對 Jack 服務器執行相同操作。兩種情況都會出現同樣的問題。 使用 cyclictest 測試 RT 功能,具有 1 億個周期(~5H):最大延遲為
    發表于 05-05 06:55

    LS1046如果要在測試板對XFI1和XFI2 10G信號進行出廠測試,測試版應該如何設計?

    到 XFP 連接器。 2、 如果要在測試板對XFI1和XFI2 10G信號進行出廠測試,測試版
    發表于 05-19 08:29

    DS31256的分數T1 (FT1)環回檢測

    這篇應用筆記介紹了利用DS31256的接收BERT功能實現分數T1 (FT1)上環回或下環回檢測(V.54)的方法,詳細說明請參考分數級T
    的頭像 發表于 06-16 15:35 ?522次閱讀
    <b class='flag-5'>DS</b>31256的<b class='flag-5'>分數</b>級<b class='flag-5'>T1</b> (FT1)環回<b class='flag-5'>檢測</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>