《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 利用DSP48E1的pattern detection功能實現數據匹配
利用DSP48E1的pattern detection功能實現數據匹配
摘要: 對于DSP48E1硬核的功能和結構,尤其是預加器、乘法器和累加器(ALU)的使用很多人都比較清楚,但對于它的另一個強大的功能pattern detection,很多人不是很了解,這里,通過對一個具體的算法實現流程的描述,讓大家熟悉這個功能。
關鍵詞: SoPC DSP48E1 硬核
Abstract:
Key words :

 對于DSP48E1硬核的功能和結構,尤其是預加器、乘法器和累加器(ALU)的使用很多人都比較清楚,但對于它的另一個強大的功能pattern detection,很多人不是很了解,這里,通過對一個具體的算法實現流程的描述,讓大家熟悉這個功能。

    算法需求如下:輸入數據位寬為16bits,從這個數據流中匹配32’Hf6F62828,一旦匹配成功,給出匹配指示信號。

 

對于此算法的DSP48應用如下:

1.       首先,由于算法主要是判斷輸入的數據是否等于32位常數OxF6F62828, 然后給出判斷結果指示信號??紤]到資源最優(yōu)化,如果并行同時處理16路數據,需要消耗16DSP48 slices,如果使用時分復用的方式,則每個clock cycle完成一個case數據的比較,輸入數據采用移位寄存器,每個時鐘周期移動1位,構成一種case數據,送入DSP48 slice Pattern detector比較,同時輸出是否匹配的指示信號。16clock cycle完成16case的比較操作。

2.       DSP48E1一次操作可以完成48bits數據的匹配運算,因此我們同時做32bits數據的pattern detector操作,輸入兩個16bits數據(32bits)后開始移位操作,構成32case數據依次同常數OxF6F62828匹配,32clock cycle完成匹配檢測。

3.       DSP48E1pattern detector結構框圖如下:

 pattern_detection logic.png

                Figure 1 Pattern Detection logic

由于要匹配的pattern為常數,我們選擇設置固定的OxF6F62828為圖中的PATTERN值,使用MASK設置屏蔽掉高16位的比較,MASK設置為48’hFFFF00000000。輸出PATTERNDETECT為高時,表示找到匹配的pattern。

4.       上面Figure1中僅描述了Pattern的邏輯電路,DSP48E1的完整結構如下圖2所示:

 DSP48E1_overview.png

Pattern Detection的功能在ALU之后,所以,要將輸入數據送入ALU后才能進行匹配操作。將32bits數據從C端口輸入,高位擴展到48位(C要求48bits, ALU設置為C+0的加法功能,即將C的結果輸出做比較。

為保證時序要求,打開C寄存器和PatternDetect寄存器,整個匹配鏈路的latency2,這樣經過32clock cycle,所有32case的匹配結果依次由PatternDetect輸出為高可以確定是哪個case匹配。

5.       算法總結:

132bits移位數據從C端口輸入到ALU單元,DSP48E1OPmode設置為C+0功能。

2)在DSP48E1的屬性中配置C打開1級寄存器,PatternDetect寄存器打開,整個計算通路2clock cycle延遲。

3)在DSP48E1的屬性配置中設置Pattern值為固定值0xF6F62828,并配置Pattern選擇為固定寄存器值輸入,設置MASK的值屏蔽高有效比特,低32bits用于匹配運算。

4PatternDetect輸出值為高時,對應的case即為找到的匹配數據。

 

此內容為AET網站原創(chuàng),未經授權禁止轉載。