專利名稱:可重構(gòu)數(shù)字信號(hào)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明公開了一種用于快速傅立葉變換(FFT)、快速傅立葉逆變換(IFFT)、FIR脈組處理、相關(guān)處理等數(shù)字信號(hào)實(shí)時(shí)處理的可重構(gòu)數(shù)字信號(hào)處理器(DSP)。
背景技術(shù):
20世紀(jì)60年代以來(lái),隨著計(jì)算技術(shù)和信息技術(shù)的迅速發(fā)展,數(shù)字信號(hào)處理作為一個(gè)獨(dú)立學(xué)科迅速發(fā)展并在諸多領(lǐng)域得到廣泛應(yīng)用。隨著大規(guī)模集成電路技術(shù)和半導(dǎo)體技術(shù)的快速發(fā)展以及各種實(shí)時(shí)處理需求的不斷提高,數(shù)字信號(hào)處理能力也以指數(shù)級(jí)的速度飛速提升,并在科研、軍事以及民用等領(lǐng)域發(fā)揮著越來(lái)越重要的作用,數(shù)字信號(hào)處理器件已成為支撐這些領(lǐng)域高速發(fā)展的重要條件。在數(shù)字信號(hào)實(shí)時(shí)處理中,快速傅立葉變換(FFT)、快速傅立葉逆變換(IFFT)、FIR脈組處理、相關(guān)處理等濾波運(yùn)算的應(yīng)用最為廣泛。硬件的實(shí)現(xiàn)方式目前主要有基于通用數(shù)字信號(hào)處理器、基于現(xiàn)場(chǎng)可編程門陣列(FPGA)/大規(guī)模可編程邏輯器件(CPLD)和基于專用集成電路(ASIC)三種。一方面,三種器件各有局限,通用數(shù)字信號(hào)處理器的優(yōu)勢(shì)在于編程的靈活性和普適性,但其運(yùn)算能力有限。大容量的FPGA/CPLD內(nèi)部硬件資源較多,但需要針對(duì)具體應(yīng)用單獨(dú)開發(fā)固件邏輯,人力成本高,且大容量FPGA/CPLD價(jià)格昂貴。傳統(tǒng)的專用集成電路架構(gòu)與硬線連接固定,功能較單一,其應(yīng)用范圍大受局限。另一方面,數(shù)字信號(hào)處理的技術(shù)要求卻在不斷提高,隨著寬帶運(yùn)用場(chǎng)合不斷擴(kuò)大、陣列處理的數(shù)目不斷增大、合作及非合作數(shù)目目標(biāo)處理涉及的運(yùn)算量不斷加大,對(duì)信號(hào)處理的速度在不斷加碼。如復(fù)數(shù)1024點(diǎn)FFT運(yùn)算速度要求在100MHz以上,有些場(chǎng)合需要為500MHz以上。上述三種器件在功能、價(jià)格、適應(yīng)性、易用性上越來(lái)越難滿足數(shù)字信號(hào)實(shí)時(shí)處理的要求。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種應(yīng)用于數(shù)字信號(hào)實(shí)時(shí)處理的可重構(gòu)數(shù)字信號(hào)處理器,它具有專用大規(guī)模集成電路的運(yùn)算能力,而且能適應(yīng)快速傅立葉變換(FFT)、快速傅立葉逆變換(IFFT)、FIR脈組處理、相關(guān)處理等不同的數(shù)字信號(hào)實(shí)時(shí)處理場(chǎng)合,同時(shí)使用簡(jiǎn)單,價(jià)格低廉。
本發(fā)明所采取的技術(shù)方案是可重構(gòu)數(shù)字信號(hào)處理器內(nèi)部的硬件架構(gòu)和硬件連線可通過(guò)配置控制字進(jìn)行結(jié)構(gòu)重組,從而實(shí)現(xiàn)快速傅立葉變換(FFT)/快速傅立葉逆變換(IFFT)、FIR脈組及相關(guān)處理等多種形式的濾波運(yùn)算。
主體架構(gòu)包括輸入單元、輸出單元、數(shù)據(jù)交換單元和4個(gè)基本單元,其基本單元中包含160個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器,而且它們平均分布于4個(gè)基本單元中。
硬件的組織形式可以通過(guò)配置控制字重組通過(guò)控制字和控制信號(hào)的配置,可以改變所述160個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器以及數(shù)據(jù)交換單元的組織形式,使之選擇不同的工作模式,以適應(yīng)三種不同的運(yùn)算任務(wù)FFT/IFFT、FIR脈組處理、相關(guān)運(yùn)算。
硬件調(diào)度方案采取集中式與分布式相結(jié)合的兩級(jí)調(diào)度方法即控制字先由全局模塊進(jìn)行一級(jí)譯碼,再由各基本單元進(jìn)行二級(jí)譯碼。
總體架構(gòu)采用兩級(jí)控制架構(gòu),全局控制模塊用于協(xié)調(diào)4個(gè)基本單元,每個(gè)基本單元內(nèi)部有其自身的本地控制邏輯。介于4個(gè)基本單元之間的數(shù)據(jù)交換單元負(fù)責(zé)把每個(gè)基本單元中的數(shù)據(jù)按照不同的控制要求送入其他3個(gè)基本單元。
輸入單元接收控制字、對(duì)控制字進(jìn)行一級(jí)譯碼、分配控制字到各單元。控制字與系數(shù)入口1復(fù)用同一個(gè)端口,控制字接收模塊接收控制字,然后送入一級(jí)譯碼模塊譯碼,一方面產(chǎn)生全局控制信號(hào)用于產(chǎn)生片內(nèi)時(shí)序、為系數(shù)和數(shù)據(jù)提供同步,另一方面通過(guò)控制字分配模塊分別向片內(nèi)其他單元發(fā)射。系數(shù)同步模塊對(duì)系數(shù)入口1與系數(shù)入口2進(jìn)行同步。數(shù)據(jù)同步模塊對(duì)數(shù)據(jù)入口1和數(shù)據(jù)入口2進(jìn)行同步。
數(shù)據(jù)交換單元是一組多輸入、多輸出的開關(guān)組合,在4個(gè)基本單元之間交換數(shù)據(jù)。
輸出單元對(duì)各個(gè)基本單元的運(yùn)算結(jié)果進(jìn)行排序,并且按照不同的格式輸出?;締卧敵鼋Y(jié)果排序模塊在FFT/IFFT和FIR脈組處理時(shí)將基本單元的輸出按照頻道順序排列;當(dāng)工作于相關(guān)處理運(yùn)算模式時(shí)將來(lái)自各個(gè)基本單元的、按幀輸出的數(shù)據(jù)調(diào)整為與輸入數(shù)據(jù)率相同的連續(xù)數(shù)據(jù)流。求模模塊完成實(shí)部/虛部的輸出格式到模值/相角的輸出格式的轉(zhuǎn)換。取對(duì)數(shù)模塊將輸入的模值轉(zhuǎn)換為對(duì)數(shù)表示。浮點(diǎn)/定點(diǎn)轉(zhuǎn)換模塊可以將實(shí)部/虛部模塊的或者求模模塊的輸出由浮點(diǎn)格式轉(zhuǎn)換為定點(diǎn)格式。指數(shù)歸一化模塊通過(guò)對(duì)尾數(shù)作相應(yīng)移位將浮點(diǎn)格式的運(yùn)算結(jié)果的指數(shù)統(tǒng)一為固定值。上述4種格式轉(zhuǎn)換模塊分別有兩套,每個(gè)輸出端口對(duì)應(yīng)一套,保證兩個(gè)輸出端口可以獨(dú)立地以任意一種格式輸出。
基本單元中,數(shù)據(jù)存儲(chǔ)器包括8個(gè)512×40的雙端口RAM,用于運(yùn)算數(shù)據(jù)的輸入緩存、運(yùn)算中間結(jié)果暫存和運(yùn)算結(jié)果輸出緩存。數(shù)據(jù)緩存可以同時(shí)把數(shù)據(jù)加到每個(gè)復(fù)數(shù)乘法累加器和復(fù)數(shù)乘法累加器子陣。系數(shù)存儲(chǔ)器包括10個(gè)256×32的雙端口RAM,用于存儲(chǔ)相關(guān)處理和FIR濾波器系數(shù)以及FFT運(yùn)算時(shí)的加權(quán)系數(shù)。FFT迭代運(yùn)算的系數(shù)是一個(gè)固定的、以專用邏輯實(shí)現(xiàn)的一個(gè)表。每個(gè)復(fù)數(shù)乘法累加器對(duì)應(yīng)4個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器,每個(gè)復(fù)數(shù)乘法累加器子陣包括16個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器,相當(dāng)于4個(gè)復(fù)數(shù)乘法累加器。兩個(gè)復(fù)數(shù)乘法累加器子陣和復(fù)數(shù)乘法累加器按照不同的方式搭配組合,用于完成不同的運(yùn)算。實(shí)數(shù)浮點(diǎn)乘法累加器的結(jié)構(gòu)分為5個(gè)部分定點(diǎn)乘法部分、截位部分、指數(shù)調(diào)整部分、定點(diǎn)加法部分、指數(shù)判斷部分。
在三種濾波運(yùn)算時(shí)采取相應(yīng)的組織形式為做FFT/IFFT運(yùn)算時(shí),復(fù)數(shù)乘法累加子陣A和復(fù)數(shù)乘法累加子陣B分別作為基8算法的一個(gè)迭代運(yùn)算的節(jié)點(diǎn),子陣中的4個(gè)復(fù)數(shù)乘法累加器用于完成一級(jí)基8迭代運(yùn)算。子陣前面的那個(gè)復(fù)數(shù)乘法累加器A及復(fù)數(shù)乘法累加器B作為加窗運(yùn)算器,對(duì)數(shù)據(jù)進(jìn)行加窗處理。加窗之后的數(shù)據(jù)進(jìn)入復(fù)數(shù)乘法累加子陣進(jìn)行一級(jí)基8迭代運(yùn)算。每一級(jí)迭代運(yùn)算的輸出首先導(dǎo)入數(shù)據(jù)緩存,然后再通過(guò)數(shù)據(jù)交換單元送到相應(yīng)的另外一個(gè)復(fù)數(shù)乘法累加子陣,以進(jìn)行下一級(jí)迭代運(yùn)算。
在做FIR脈組處理時(shí),基本單元內(nèi)部的2個(gè)復(fù)數(shù)乘法累加器模塊和2個(gè)復(fù)數(shù)乘法累加器子陣模塊中的乘法累加器并聯(lián)使用,每個(gè)復(fù)數(shù)乘法累加器對(duì)應(yīng)FIR脈組的一個(gè)頻道。共軛運(yùn)算時(shí)對(duì)應(yīng)2個(gè)頻道。
做相關(guān)運(yùn)算時(shí),復(fù)數(shù)乘法累加器和復(fù)數(shù)乘法累加器子陣串聯(lián)使用,相當(dāng)于串聯(lián)10個(gè)復(fù)數(shù)乘法累加器,此時(shí)基本單元內(nèi)部的乘法累加器被構(gòu)造成級(jí)聯(lián)的形式。
所采用的硬件調(diào)度方案是通過(guò)控制字和控制信號(hào)對(duì)硬件資源的調(diào)度采用全局控制和基本單元內(nèi)本地控制相結(jié)合的兩級(jí)調(diào)度模式,控制字與控制信號(hào)首先進(jìn)入全局控制模塊進(jìn)行一級(jí)譯碼與控制字分配。在這個(gè)模塊內(nèi),首先接收控制字,然后根據(jù)控制字產(chǎn)生一些全局控制信號(hào)。這些全局控制包括協(xié)調(diào)4個(gè)基本單元的動(dòng)作,決定運(yùn)算結(jié)果的輸出格式,對(duì)片內(nèi)主時(shí)鐘的設(shè)置。全局控制模塊的第二個(gè)作用,是向各基本單元的本地控制模塊發(fā)射控制信息。這些被發(fā)射的信息包括工作模式、工作模式的子類型、運(yùn)算點(diǎn)數(shù)、頻道數(shù)目、處理通道的數(shù)目。
各基本單元內(nèi)的本地控制模塊在收到全局控制模塊發(fā)射的信息之后,對(duì)這些信息進(jìn)行二級(jí)譯碼,將其轉(zhuǎn)換為硬件調(diào)度控制信號(hào)的細(xì)節(jié)。
本發(fā)明具有顯著的技術(shù)進(jìn)步和積極效果本發(fā)明兼具了傳統(tǒng)專用集成電路與通用數(shù)字信號(hào)處理器的優(yōu)點(diǎn)。
高速處理能力本發(fā)明采用可重構(gòu)專用數(shù)字信號(hào)處理器方案,片內(nèi)含有大量硬件資源,浮點(diǎn)乘法累加器多達(dá)160個(gè),在處理能力上與傳統(tǒng)專用集成電路相比猶有過(guò)之。由于器件內(nèi)部算法全部用硬件實(shí)現(xiàn),因而具有通用數(shù)字信號(hào)處理器芯片所無(wú)法比擬的高速運(yùn)算性能。器件內(nèi)部運(yùn)算格式為浮點(diǎn),單片完成快速傅立葉變換(FFT)運(yùn)算的最大點(diǎn)數(shù)為4096點(diǎn),完成4096點(diǎn)FFT運(yùn)算時(shí)間為25.6us,完成同點(diǎn)數(shù)FFT+IFFT時(shí)間為51.2us;FIR脈組處理最大頻道數(shù)為128,80個(gè)頻道以下最大濾波長(zhǎng)度為256,80個(gè)頻道以上最大濾波長(zhǎng)度為128;相關(guān)處理運(yùn)算單片單通道最大運(yùn)算長(zhǎng)度為4000,最多可并行處理16個(gè)通道,各通道數(shù)據(jù)與各組系數(shù)之間的對(duì)應(yīng)關(guān)系非常靈活。
功能可重構(gòu)有別于傳統(tǒng)意義上的專用集成電路芯片的是,器件內(nèi)部的資源根據(jù)不同的應(yīng)用需求可以進(jìn)行結(jié)構(gòu)重組,從而能夠?qū)崿F(xiàn)FFT、IFFT、FIR脈組及相關(guān)處理等多種形式的濾波運(yùn)算。增強(qiáng)了器件使用靈活性,拓展了器件的應(yīng)用范圍。
便捷的使用方式本發(fā)明在一定程度上結(jié)合了通用數(shù)字信號(hào)處理器的靈活性,采用了獨(dú)有的64bit功能控制字對(duì)器件進(jìn)行配置,以滿足不同的應(yīng)用需求。使用非常簡(jiǎn)便,沒(méi)有繁瑣的編程和調(diào)試,也不需要象FPGA那樣需要進(jìn)行邏輯設(shè)計(jì)和時(shí)序分析,只需送出64位控制字,運(yùn)算數(shù)據(jù)按照標(biāo)準(zhǔn)時(shí)序輸入即可。只要改變控制字,器件內(nèi)部的資源結(jié)構(gòu)就進(jìn)行了重組,器件也就按照另外一種模式工作。
圖1 硬件架構(gòu)框圖一圖2 基本單元結(jié)構(gòu)框3 實(shí)數(shù)乘法累加器結(jié)構(gòu)框4 FFT運(yùn)算的基本單元配置結(jié)構(gòu)框5 FIR脈組運(yùn)算的基本單元配置結(jié)構(gòu)框6 相關(guān)運(yùn)算的基本單元配置結(jié)構(gòu)框7 硬件資源兩級(jí)調(diào)度框架圖8 硬件架構(gòu)框圖二圖9 輸入單元實(shí)現(xiàn)框10 輸出單元實(shí)現(xiàn)框11 32位控制字輸入實(shí)序12 16位控制字輸入實(shí)序圖具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
本發(fā)明的主體為160個(gè)乘法累加器,平均分布于4個(gè)基本單元(basic unit)中。通過(guò)控制字和控制信號(hào)的配置,可以讓這160個(gè)乘法累加器以及存儲(chǔ)器、數(shù)據(jù)交換單元等硬件資源工作于不同的組織形式,這些組織形式就決定了器件的不同工作模式類型。另外,本發(fā)明對(duì)硬件資源的調(diào)度采用兩級(jí)調(diào)度方法,在控制上采用集中式控制與分布式控制相結(jié)合的辦法。
本發(fā)明的具體實(shí)施方式
分為3個(gè)層次,第一層是器件硬件架構(gòu);第二層是硬件組織方式;第三層是對(duì)硬件資源調(diào)度方法。下面對(duì)這三個(gè)層次分別加以說(shuō)明。
一、硬件的主體架構(gòu)本發(fā)明的硬件架構(gòu)如圖1和圖8所示。
本發(fā)明采用全同步設(shè)計(jì),即整個(gè)芯片只有一個(gè)時(shí)鐘域。從功能劃分、邏輯字資源的均衡等角度考慮,整個(gè)器件的頂層設(shè)計(jì)為7個(gè)部分,即以4個(gè)基本單元為主體,外加輸入單元、輸出單元、數(shù)據(jù)交換3個(gè)部分。
器件采用兩級(jí)控制架構(gòu),全局控制模塊用于協(xié)調(diào)4個(gè)基本單元,每個(gè)基本單元內(nèi)部有其自身的本地控制邏輯。這4個(gè)基本單元為器件的主體,完成數(shù)據(jù)緩存、運(yùn)算、地址產(chǎn)生等主要功能。介于4個(gè)基本單元之間的數(shù)據(jù)交換單元負(fù)責(zé)把每個(gè)基本單元中的數(shù)據(jù)按照不同的控制要求送入其他3個(gè)基本單元。為滿足不同應(yīng)用,器件內(nèi)部集成了若干專用功能模塊,包括求模電路、取對(duì)數(shù)電路、指數(shù)歸一化電路、浮點(diǎn)-定點(diǎn)轉(zhuǎn)換電路等。這些專用的功能模塊可以將基本單元的運(yùn)算結(jié)果以不同方式輸出,而且兩個(gè)輸出端口完全獨(dú)立,互不影響。另外,器件內(nèi)部還集成了一個(gè)用于倍頻的鎖相環(huán),這樣使得內(nèi)部運(yùn)算時(shí)鐘既可以直接從外部輸入,也可以先由外部輸入一個(gè)低速時(shí)鐘,再由內(nèi)部鎖相環(huán)倍頻之后作為運(yùn)算時(shí)鐘。
輸入單元的具體實(shí)現(xiàn)如圖9所示。除用于可測(cè)性設(shè)計(jì)的測(cè)試輸入管腳之外,所有功能性的輸入管腳首先進(jìn)入輸入單元。輸入單元擔(dān)負(fù)如下任務(wù)接收控制字、對(duì)控制字進(jìn)行一級(jí)譯碼、分配控制字到各單元、對(duì)輸入系數(shù)進(jìn)行同步、對(duì)輸入數(shù)據(jù)進(jìn)行同步、產(chǎn)生片內(nèi)所需的全局時(shí)序信號(hào)等。下面就對(duì)輸入單元中的各個(gè)模塊一一簡(jiǎn)要說(shuō)明??刂谱峙c系數(shù)入口1復(fù)用同一個(gè)端口(coeff_in[31:0]),因此必須將輸入的控制字首先接收下來(lái),這是控制字接收模塊的任務(wù)??刂谱纸邮漳K內(nèi)部主要是一組寄存器,根據(jù)片外輸入的使能信號(hào)將64位控制字分2次或4次打入這組寄存器中。在接收到控制字之后,一級(jí)譯碼模塊將部分控制字譯碼為全局控制信號(hào),這些全局控制信號(hào)用于產(chǎn)生片內(nèi)時(shí)序、為系數(shù)和數(shù)據(jù)提供同步等??刂谱址峙淠K的任務(wù)是,將64位控制字譯碼后分別向片內(nèi)其他單元發(fā)射。因?yàn)橄禂?shù)入口1同時(shí)擔(dān)負(fù)輸入控制字的任務(wù),而系數(shù)入口2不擔(dān)負(fù)此任務(wù),因此系數(shù)入口1與系數(shù)入口2延時(shí)不同,故必須用一個(gè)同步模塊對(duì)系數(shù)入口1與系數(shù)入口2進(jìn)行同步。類似地,數(shù)據(jù)入口1和數(shù)據(jù)入口2在功能上不盡相同,故這兩個(gè)數(shù)據(jù)入口的數(shù)據(jù)必須按照工作模式和數(shù)據(jù)類型同步。
輸出單元的具體實(shí)現(xiàn)如圖10所示。本單元的主要作用是對(duì)各個(gè)基本單元的運(yùn)算結(jié)果進(jìn)行排序,并且按照不同的格式輸出。濾波運(yùn)算是在基本單元中完成的,且4個(gè)基本單元各自輸出其結(jié)果,因此必須將4個(gè)基本單元的輸出結(jié)果進(jìn)行排序,以保證最終輸出結(jié)果有序輸出?!盎締卧敵鼋Y(jié)果排序”模塊的作用為當(dāng)器件工作于FFT/IFFT和FIR脈組處理時(shí),此模塊將基本單元的輸出按照頻道順序排列;當(dāng)工作于相關(guān)處理運(yùn)算模式時(shí),基本單元按照每10點(diǎn)為一幀的格式輸出,兩個(gè)數(shù)據(jù)幀之間存在間隔,此時(shí)此模塊將基本單元的輸出數(shù)據(jù)格式進(jìn)行調(diào)整,將來(lái)自各個(gè)基本單元的、按幀輸出的數(shù)據(jù),調(diào)整為與輸入數(shù)據(jù)率相同的連續(xù)數(shù)據(jù)流。求模模塊主要完成實(shí)部/虛部的輸出格式到模值/相角的輸出格式的轉(zhuǎn)換。取對(duì)數(shù)模塊可以將輸入的模值轉(zhuǎn)換為對(duì)數(shù)表示。浮點(diǎn)/定點(diǎn)轉(zhuǎn)換模塊可以將實(shí)部/虛部模塊的或者求模模塊的輸出由浮點(diǎn)格式轉(zhuǎn)換為定點(diǎn)格式。指數(shù)歸一化模塊的作用類似于浮點(diǎn)/定點(diǎn)轉(zhuǎn)換模塊,它通過(guò)對(duì)尾數(shù)作相應(yīng)移位,從而將浮點(diǎn)格式的運(yùn)算結(jié)果的指數(shù)統(tǒng)一為某個(gè)固定值。上述的4種格式轉(zhuǎn)換模塊分別有兩套,芯片的每個(gè)輸出端口對(duì)應(yīng)一套,這樣保證了兩個(gè)輸出端口可以獨(dú)立地以任意一種格式輸出。
數(shù)據(jù)交換單元實(shí)際上是一組多輸入、多輸出的開關(guān)組合。它接收來(lái)自4個(gè)基本單元的8組輸入,然后通過(guò)選擇開關(guān)將任意一組輸入切換到任意一組輸出。這樣,數(shù)據(jù)可以在4個(gè)基本單元之間自由傳輸,在實(shí)現(xiàn)特定算法時(shí),為4個(gè)基本單元之間的配合提供了數(shù)據(jù)路徑的保障。
4個(gè)基本單元是本發(fā)明的主體部分,完成數(shù)據(jù)緩存、運(yùn)算、地址產(chǎn)生等大部分的功能。其結(jié)構(gòu)如圖2所示。4個(gè)基本單元具有統(tǒng)一的架構(gòu)?!皵?shù)據(jù)存儲(chǔ)器”包括了8個(gè)512×40的雙端口RAM,用于運(yùn)算模式的數(shù)據(jù)輸入緩存、FFT運(yùn)算中間結(jié)果暫存和FFT運(yùn)算結(jié)果輸出緩存。由圖可見,“數(shù)據(jù)緩存”可以同時(shí)把數(shù)據(jù)加到每個(gè)“復(fù)數(shù)乘法累加器”和“復(fù)數(shù)乘法累加器子陣”。“系數(shù)存儲(chǔ)器”包括了10個(gè)256×32的雙端口RAM,用于存儲(chǔ)相關(guān)處理運(yùn)算、FIR濾波運(yùn)算的濾波器系數(shù)和FFT運(yùn)算的加權(quán)系數(shù)?!癋FT迭代運(yùn)算系數(shù)”用一個(gè)固定的、以專用邏輯實(shí)現(xiàn)的表,用于提供FFT/IFFT運(yùn)算的迭代運(yùn)算系數(shù)。圖中每個(gè)“復(fù)數(shù)乘法累加器”對(duì)應(yīng)4個(gè)實(shí)數(shù)的浮點(diǎn)乘法累加器,而每個(gè)“復(fù)數(shù)乘法累加器子陣”則包括16個(gè)實(shí)數(shù)的浮點(diǎn)乘法累加器,相當(dāng)于4個(gè)“復(fù)數(shù)乘法累加器”。兩個(gè)“復(fù)數(shù)乘法累加器子陣”和“復(fù)數(shù)乘法累加器”按照不同的方式搭配組合,即可完成不同的運(yùn)算。
在做FFT/IFFT運(yùn)算時(shí),“復(fù)數(shù)乘法累加器”作為加權(quán)乘法器,對(duì)需要多級(jí)運(yùn)算的輸入數(shù)據(jù)進(jìn)行加權(quán),然后送入“復(fù)數(shù)乘法累加子陣”進(jìn)行基8迭代運(yùn)算。也就是說(shuō),在做FFT/IFFT運(yùn)算時(shí),基本單元中的“復(fù)數(shù)乘法累加器A”和“復(fù)數(shù)乘法累加器子陣A”組成一個(gè)基8運(yùn)算核,“復(fù)數(shù)乘法累加器B”和“復(fù)數(shù)乘法累加器子陣B”組成另一個(gè)基8運(yùn)算核,這樣整個(gè)芯片就有8個(gè)這樣的運(yùn)算核,在運(yùn)算時(shí)將FFT/IFFT的運(yùn)算分解到這8個(gè)運(yùn)算核并行處理。
在做FIR脈組處理時(shí),基本單元內(nèi)部的2個(gè)“復(fù)數(shù)乘法累加器”模塊和2個(gè)“復(fù)數(shù)乘法累加器子陣”模塊中的乘法累加器并聯(lián)使用,每個(gè)復(fù)數(shù)乘法累加器對(duì)應(yīng)FIR脈組的一個(gè)頻道。如果采用共軛運(yùn)算,則每個(gè)復(fù)數(shù)乘法累加器對(duì)應(yīng)2個(gè)頻道,如果再?gòu)?fù)用一次,可以對(duì)應(yīng)更多頻道的運(yùn)算。
做相關(guān)運(yùn)算時(shí),“復(fù)數(shù)乘法累加器”和“復(fù)數(shù)乘法累加器子陣”串聯(lián)使用,相當(dāng)于串聯(lián)了10個(gè)復(fù)數(shù)乘法累加器;做FIR濾波運(yùn)算時(shí),“復(fù)數(shù)乘法累加器”和“復(fù)數(shù)乘法累加器子陣”并聯(lián)使用,對(duì)應(yīng)著濾波運(yùn)算的10個(gè)頻道;做FFT運(yùn)算時(shí),“復(fù)數(shù)乘法累加器”作為加權(quán)乘法器,對(duì)數(shù)據(jù)進(jìn)行加權(quán)后再送給“復(fù)數(shù)乘法累加器子陣”做迭代運(yùn)算。
本發(fā)明采用浮點(diǎn)數(shù)據(jù)格式進(jìn)行復(fù)數(shù)運(yùn)算,而復(fù)數(shù)運(yùn)算是由4個(gè)實(shí)數(shù)運(yùn)算所組成,因此實(shí)數(shù)浮點(diǎn)乘法累加器是器件的核心運(yùn)算部件。實(shí)數(shù)浮點(diǎn)乘法累加器的結(jié)構(gòu)框圖如圖3所示,分為5個(gè)部分定點(diǎn)乘法部分、截位部分、指數(shù)調(diào)整部分、定點(diǎn)加法部分、指數(shù)判斷部分。
器件的待運(yùn)算數(shù)據(jù)共20位,格式為4位無(wú)符號(hào)指數(shù)+16位有符號(hào)尾數(shù),所能表示的動(dòng)態(tài)范圍是-215×215~215×215-1。系數(shù)為16位有符號(hào)定點(diǎn)數(shù),所能表示的動(dòng)態(tài)范圍是-215~215-1。對(duì)于運(yùn)算的中間數(shù)據(jù),折衷考慮運(yùn)算的精度因素和硬件實(shí)現(xiàn)的面積、速度因素,采用24位浮點(diǎn)數(shù)據(jù)格式,即4位無(wú)符號(hào)指數(shù)+20位有符號(hào)尾數(shù)。乘法累加器的運(yùn)算過(guò)程有如下5個(gè)步驟。
①、定點(diǎn)乘法部分,用于數(shù)據(jù)的16位有符號(hào)尾數(shù)與16位有符號(hào)的系數(shù)進(jìn)行定點(diǎn)相乘。
②、截位部分,用于最大限度地保留定點(diǎn)乘法結(jié)果的精度。根據(jù)定點(diǎn)乘法之后的32位乘法結(jié)果的冗余符號(hào)位的位數(shù),來(lái)確定所要保留的24位中間運(yùn)算數(shù)據(jù)的20位尾數(shù)和這個(gè)尾數(shù)所對(duì)應(yīng)的4位指數(shù)。如果32位的定點(diǎn)乘法結(jié)果帶有k個(gè)冗余符號(hào)位,而又只能保留20位,那么顯然,為了獲得最大精度,最好是截掉這k位的冗余符號(hào)(左移k位)并同時(shí)在指數(shù)上減k。這樣尾數(shù)變成了一位符號(hào)位和其后的19位數(shù)據(jù)位的形式。這就相當(dāng)于對(duì)一個(gè)32位定點(diǎn)乘法結(jié)果a31a30a29……a2a1a0×2e同時(shí)進(jìn)行如下操作去冗余符號(hào)位并截位 指數(shù)在原來(lái)基礎(chǔ)上減k 對(duì)于e>k>12的情況,即左移超過(guò)12位之后,應(yīng)該在低位補(bǔ)0。同時(shí)應(yīng)該注意到,不能使減了k以后的指數(shù)小于0。這樣,在截位的時(shí)候就要綜合考慮冗余符號(hào)位的位數(shù)和指數(shù)的大小,假如原指數(shù)小于冗余符號(hào)位的位數(shù),即e<k,那么就只能截掉e位的冗余符號(hào)位,同時(shí)把指數(shù)減為0去冗余符號(hào)位并截位 指數(shù)在原來(lái)基礎(chǔ)上減k ③、對(duì)于浮點(diǎn)數(shù)的加法,須加數(shù)和被加數(shù)的指數(shù)相同二者的尾數(shù)才能相加。指數(shù)調(diào)整部分正是起調(diào)整加數(shù)或被加數(shù)的指數(shù)以使二者相等的作用。假定A1=a1×2e1、A2=a2×2e2兩數(shù)相加,且e1<e2,那么就要把A1的指數(shù)e1調(diào)整到與e2相同的數(shù)值,同時(shí)把A1的尾數(shù)作e2-e1位符號(hào)位擴(kuò)展并右移e2-e1位。
④、經(jīng)過(guò)指數(shù)調(diào)整之后,加數(shù)和被加數(shù)指數(shù)已經(jīng)統(tǒng)一,就可以將二者的經(jīng)調(diào)整之后的尾數(shù)在符號(hào)位擴(kuò)展之后定點(diǎn)相加,得到21位的定點(diǎn)加法結(jié)果。
⑤、因?yàn)樵冖壑笖?shù)調(diào)整過(guò)程中總是將較小的指數(shù)調(diào)整為較大的指數(shù),故在定點(diǎn)相加之后要對(duì)21位的定點(diǎn)和去除冗余符號(hào)位,同時(shí)判斷相加之后的指數(shù)的值,這就是指數(shù)判斷的作用。
二、硬件資源的組織方式本發(fā)明是一款可重構(gòu)專用數(shù)字信號(hào)處理器,所謂“可重構(gòu)”,即可以通過(guò)配置不同的控制字來(lái)組織硬件資源,使硬件資源工作在不同的模式之下。本發(fā)明可以配置為三類工作模式FFT/IFFT、FIR脈組處理、相關(guān)處理運(yùn)算。這三類工作模式的每一類又可通過(guò)控制字調(diào)節(jié)其關(guān)鍵參數(shù),來(lái)滿足不同的處理需求。下面結(jié)合附圖分別說(shuō)明這三類工作模式下硬件資源的組織方式。
1、FFT/IFFT
離散傅里葉變換(DFT)的基本公式為 其中w(i)為DFT加權(quán)因子,x(i)為輸入數(shù)據(jù), 為旋轉(zhuǎn)因子。N為DFT運(yùn)算的點(diǎn)數(shù)。如果N是一個(gè)復(fù)合數(shù),則一個(gè)長(zhǎng)點(diǎn)數(shù)的DFT運(yùn)算可以被轉(zhuǎn)化為兩個(gè)短點(diǎn)數(shù)(N1、N2)的DFT運(yùn)算。若N1、N2能夠繼續(xù)分解,則這種分解可以一直進(jìn)行下去,運(yùn)算量會(huì)進(jìn)一步下降。
按照不同的分解方法,F(xiàn)FT有基2、基4、基8、混合基等等算法。本發(fā)明的FFT/IFFT采用基8運(yùn)算,這種工作模式可以細(xì)分為FFT、IFFT、FFT+IFFT三種類型,而其處理點(diǎn)數(shù)可以是256點(diǎn)、512點(diǎn)、1024點(diǎn)、2048點(diǎn)、4096點(diǎn)等,而且在點(diǎn)數(shù)小于等于2048時(shí),還可以同時(shí)對(duì)兩路數(shù)據(jù)進(jìn)行FFT或IFFT處理。不管FFT/IFFT的處理點(diǎn)數(shù)是多少,在此類工作模式下,器件的4個(gè)基本單元(basic_unit)都將被配置成如圖4所示的方式。此時(shí)圖2所示的“復(fù)數(shù)乘法累加子陣A”和“復(fù)數(shù)乘法累加子陣B”分別作為基8算法的一個(gè)迭代運(yùn)算的節(jié)點(diǎn),子陣中的4個(gè)復(fù)數(shù)乘法累加器用于完成一級(jí)基8迭代運(yùn)算。子陣前面的那個(gè)“復(fù)數(shù)乘法累加器A”及“復(fù)數(shù)乘法累加器B”作為加窗運(yùn)算器,對(duì)數(shù)據(jù)進(jìn)行加窗處理。加窗之后的數(shù)據(jù)進(jìn)入“復(fù)數(shù)乘法累加子陣”進(jìn)行一級(jí)基8迭代運(yùn)算。每一級(jí)迭代運(yùn)算的輸出首先導(dǎo)入數(shù)據(jù)緩存,然后再通過(guò)圖1中的數(shù)據(jù)交換單元送到相應(yīng)的另外一個(gè)“復(fù)數(shù)乘法累加子陣”,以進(jìn)行下一級(jí)迭代運(yùn)算。下面針對(duì)單個(gè)基本單元來(lái)描述FFT/IFFT模式下的硬件組織方式。
GA3816器件進(jìn)行FFT變換時(shí),如果運(yùn)算點(diǎn)數(shù)大于256,器件內(nèi)部以分時(shí)復(fù)用方式工作,處理點(diǎn)數(shù)越大,復(fù)用次數(shù)越多。數(shù)據(jù)存儲(chǔ)器配置成乒乓結(jié)構(gòu)的數(shù)據(jù)緩存,器件內(nèi)總的數(shù)據(jù)存儲(chǔ)容量為32×256×40bits,分配到每個(gè)基本單元內(nèi)的數(shù)據(jù)緩存為2×4×256×40bits。每個(gè)基本單元數(shù)據(jù)緩存劃出一半的地址空間,即4×256×40bits,作為數(shù)據(jù)輸入緩存。這樣,單個(gè)器件4個(gè)基本單元可完成最大4096點(diǎn)FFT運(yùn)算。
在進(jìn)行FFT運(yùn)算時(shí),為了抑制副瓣,需要對(duì)輸入數(shù)據(jù)進(jìn)行加窗處理。在GA3816器件內(nèi)部有40×256×32bit的雙口RAM作為系數(shù)存儲(chǔ)器,分配到每個(gè)基本單元有10×256×32bits。在每一個(gè)基本單元中,取8×256×32bits用作窗函數(shù)緩存,并且此緩存還被分成兩組,每一組尋址深度為1024,分別向每一個(gè)“復(fù)數(shù)乘法累加器子陣”之前的加窗運(yùn)算器提供窗函數(shù)。
因?yàn)镕FT/IFFT運(yùn)算的旋轉(zhuǎn)因子具有規(guī)律性,因此本發(fā)明將基8FFT運(yùn)算的旋轉(zhuǎn)因子存儲(chǔ)于一個(gè)固定的表中。本發(fā)明單片可完成的最大FFT/IFFT點(diǎn)數(shù)為4096,芯片內(nèi)部共有8個(gè)512×32bit的這個(gè)旋轉(zhuǎn)因子系數(shù)表,并被平均分配在四個(gè)基本單元(basic_unit)中。如果運(yùn)算點(diǎn)數(shù)小于4096,則旋轉(zhuǎn)因子就從這個(gè)表中抽取。另外我們還設(shè)計(jì)了4×8×32bits的系數(shù)表,用于存儲(chǔ)基8運(yùn)算時(shí)的系數(shù)。
當(dāng)FFT點(diǎn)數(shù)小于等于2048時(shí),本發(fā)明針對(duì)FFT/IFFT設(shè)計(jì)了第二種硬件資源組織方式雙路同時(shí)進(jìn)行FFT運(yùn)算。雙路進(jìn)數(shù)據(jù)模式中,basic_uint0、basic_unit2兩個(gè)基本單元為一組,用于完成第一路運(yùn)算;basic_uint1、basic_unit3兩個(gè)基本單元為另一組,用于完成另外一路運(yùn)算。雖然硬件資源分為兩組,但是兩組硬件基8運(yùn)算的原理不變。兩路數(shù)據(jù)同時(shí)從數(shù)據(jù)輸入1、數(shù)據(jù)輸入2端口輸入,運(yùn)算所得兩組結(jié)果同時(shí)從輸出端口1、輸出端口2并行輸出。此模式可用于兩組獨(dú)立的數(shù)據(jù)同時(shí)做FFT/IFFT或一組數(shù)據(jù)做二維FFT/IFFT。
2、FIR脈組處理FIR脈組處理完成的基本功能為一個(gè)矩陣運(yùn)算,其基本公式為Y=H*X其中 上式的矩陣運(yùn)算在實(shí)現(xiàn)上可看作乘法累加運(yùn)算。如果單獨(dú)觀察H矩陣(以下也稱為“系數(shù)矩陣”)的一行和X矩陣(以下也稱為“數(shù)據(jù)”)一列的運(yùn)算且運(yùn)算數(shù)據(jù)為復(fù)數(shù)時(shí),其基本運(yùn)算形式就是乘法累加,表達(dá)式為 可見,F(xiàn)IR脈組處理事實(shí)上共有i組乘累加運(yùn)算,每組包括j次相乘和j-1次累加。
除了FIR脈組處理的基本形式之外,本發(fā)明提出了FIR脈組處理幾種擴(kuò)展形式滑動(dòng)FIR脈組處理、兩組數(shù)據(jù)并行的FIR脈組處理、FIR脈組處理的兩頻道相加形式等。不管基本形式還是擴(kuò)展形式,在FIR脈組處理這類工作模式下,4個(gè)基本單元(basic_unit)內(nèi)的硬件資源都將被配置成圖5所示的組織形式。
圖5所示的組織形式中,“復(fù)數(shù)乘法累加子陣A”中4個(gè)復(fù)數(shù)乘法累加器連同“復(fù)數(shù)乘法累加器A”一起組成“并聯(lián)乘法累加陣列1”;“復(fù)數(shù)乘法累加子陣B”中4個(gè)復(fù)數(shù)乘法累加器連同“復(fù)數(shù)乘法累加器B”一起組成“并聯(lián)乘法累加陣列2”。在“并聯(lián)乘法累加陣列”中,1個(gè)復(fù)數(shù)乘法累加器用于FIR脈組處理1個(gè)頻道(共軛情況2個(gè)頻道)運(yùn)算,這樣一個(gè)“并聯(lián)乘法累加陣列”可以并行處理5個(gè)頻道(共軛情況下處理10個(gè)頻道),所以1個(gè)基本單元能夠并行處理10個(gè)頻道(共軛情況下處理20個(gè)頻道)。因此,當(dāng)輸入數(shù)據(jù)率等于芯片運(yùn)算時(shí)鐘時(shí),4個(gè)基本單元最多可以并行完成80個(gè)頻道FIR脈組處理。如果“并聯(lián)乘法累加陣列”復(fù)用,則最多可以完成128個(gè)頻道FIR脈組處理。
FIR脈組處理的系數(shù)存儲(chǔ)于圖2所示的系數(shù)存儲(chǔ)器中。每個(gè)基本單元有10個(gè)256×32bits的雙口RAM存儲(chǔ)系數(shù),每個(gè)乘法單元配備一個(gè)雙口RAM,固定地向“并聯(lián)乘法累加陣列”中的某一個(gè)復(fù)數(shù)乘法累加器提供系數(shù),這樣一個(gè)乘法累加器連同那個(gè)向它提供系數(shù)的雙口RAM構(gòu)成FIR脈組處理的一個(gè)頻道。
每個(gè)基本單元(basic_unit)中有8個(gè)512×40bits的雙口RAM用作數(shù)據(jù)存儲(chǔ)器。FIR脈組處理時(shí),此8個(gè)雙口RAM全部用于數(shù)據(jù)緩存。在每個(gè)基本單元中,數(shù)據(jù)緩存從數(shù)據(jù)輸入口接收相同的數(shù)據(jù)。并加到各個(gè)乘法累加器數(shù)據(jù)輸入端與不同頻道的系數(shù)進(jìn)行乘法累加運(yùn)算。
FIR脈組處理的第二種硬件資源組織形式為兩組并行數(shù)據(jù)的FIR脈組處理。在這種組織形式下,第一個(gè)基本單元(basic_uint0)和第三個(gè)基本單元(basic_uint2)劃分為一組,第二個(gè)基本單元(basic_uint1)和第四個(gè)基本單元(basic_uint3)劃分為另一組。第一組基本單元中的“并聯(lián)乘法累加陣列”用于對(duì)“數(shù)據(jù)輸入1”端口輸入的數(shù)據(jù)進(jìn)行處理,第二組的“并聯(lián)乘法累加陣列”則用于對(duì)“數(shù)據(jù)輸入2”端口進(jìn)入的數(shù)據(jù)處理。第一組基本單元中的數(shù)據(jù)存儲(chǔ)器和系數(shù)存儲(chǔ)器用于存儲(chǔ)第一組數(shù)據(jù)和系數(shù);第二組基本單元中的數(shù)據(jù)存儲(chǔ)器和系數(shù)存儲(chǔ)器則用于存儲(chǔ)第二組數(shù)據(jù)和系數(shù)。這樣一來(lái),單片器件就可以并行地對(duì)兩組不同數(shù)據(jù)進(jìn)行FIR脈組處理。
上面介紹了兩組數(shù)據(jù)并行運(yùn)算的模式,在那種模式下,把整個(gè)芯片的硬件資源分為兩組,每一組單獨(dú)處理一組數(shù)據(jù)。類似地,當(dāng)頻道數(shù)小于等于40而濾波長(zhǎng)度大于等于80時(shí),為了提高運(yùn)算速度,可以將待處理數(shù)據(jù)按照濾波長(zhǎng)度的1/2平均分為兩段,前一段從數(shù)據(jù)輸入端口1進(jìn)入,后一段從數(shù)據(jù)輸入端口2進(jìn)入,然后利用片內(nèi)的兩組硬件資源同時(shí)與各自的系數(shù)相乘、累加,然后再將各自乘累加的結(jié)果相加,得到完整的處理結(jié)果。這就是FIR脈組處理工作模式下的第三種硬件資源組織方式。
3、相關(guān)處理運(yùn)算相關(guān)處理運(yùn)算指從一個(gè)連續(xù)采樣的數(shù)據(jù)序列中以滑動(dòng)方式從中連續(xù)截取N個(gè)數(shù)據(jù)進(jìn)行濾波運(yùn)算。它的運(yùn)算特點(diǎn)是相鄰兩組濾波運(yùn)算中有N-1個(gè)數(shù)據(jù)相同。其數(shù)學(xué)表達(dá)式為 其中N為濾波器運(yùn)算長(zhǎng)度。xi為輸入信號(hào),hi為濾波器對(duì)應(yīng)的系數(shù)。
相關(guān)處理運(yùn)算工作模式時(shí)基本單元內(nèi)的硬件資源配置見圖6所示。此時(shí)基本單元內(nèi)部的乘法累加器被構(gòu)造成級(jí)聯(lián)的形式。每個(gè)基本單元包含10個(gè)浮點(diǎn)復(fù)數(shù)乘累器。第一個(gè)復(fù)數(shù)乘法累加器的輸出作為第二個(gè)復(fù)數(shù)乘法累加器輸入,同第二個(gè)乘法累加結(jié)果進(jìn)行相加運(yùn)算,相加結(jié)果作為第二個(gè)復(fù)數(shù)乘法累加器的輸出,輸入到第三個(gè)復(fù)數(shù)乘法累加器中,作為第三個(gè)加法運(yùn)算的一個(gè)加數(shù)……以此類推,10個(gè)復(fù)數(shù)乘法累加器級(jí)聯(lián)使用。這樣,每個(gè)基本單元(basic_unit)能夠組織成10個(gè)復(fù)數(shù)乘累器級(jí)聯(lián)的運(yùn)算結(jié)構(gòu),通過(guò)對(duì)這個(gè)“級(jí)連乘法累加陣列”不同次數(shù)的復(fù)用,可以完成10*N點(diǎn)(N=1、2、3…100)濾波長(zhǎng)度的相關(guān)運(yùn)算。同理,4個(gè)基本單元之間也采用級(jí)連方式,前一個(gè)基本單元得到相關(guān)運(yùn)算的部分乘法累加和,送到下一個(gè)基本單元,作為下一個(gè)基本單元“級(jí)連乘法累加陣列”中第一個(gè)復(fù)數(shù)乘法累加器的加數(shù)。這樣4個(gè)基本單元依次級(jí)連累加,最終的相關(guān)運(yùn)算結(jié)果在第四個(gè)基本單元(basic_unit3)中產(chǎn)生。
器件的每個(gè)基本單元內(nèi)有相同容量的數(shù)據(jù)存儲(chǔ)器8個(gè)512×40bits的雙口RAM。在相關(guān)運(yùn)算模式下,每個(gè)基本單元內(nèi)的數(shù)據(jù)存儲(chǔ)器被統(tǒng)一編址,作為數(shù)據(jù)緩存。在數(shù)據(jù)輸入時(shí),每個(gè)基本單元的數(shù)據(jù)緩存存儲(chǔ)相同的數(shù)據(jù)。運(yùn)算時(shí),同一時(shí)個(gè)鐘節(jié)拍,由數(shù)據(jù)緩存向同一基本單元內(nèi)的10個(gè)級(jí)連復(fù)數(shù)乘法累加器提供相同的數(shù)據(jù)。
相關(guān)運(yùn)算的系數(shù)暫存于每個(gè)基本單元內(nèi)的10個(gè)256×32bits的雙口RAM中。在基本單元內(nèi),每個(gè)32bit的雙口RAM對(duì)應(yīng)著級(jí)連乘法累加陣列中的一個(gè)復(fù)數(shù)乘法累器,固定地向那個(gè)復(fù)數(shù)乘法累加器提供系數(shù)。系數(shù)序列在這10個(gè)雙口RAM中的存儲(chǔ)特點(diǎn)是,系數(shù)按照hn,hn+1…h(huán)n+9的順序依次存儲(chǔ)于第1到第10個(gè)雙口RAM中。也就是說(shuō),對(duì)于同一個(gè)雙口RAM,其地址n和地址n+1位置所存儲(chǔ)的系數(shù)的序號(hào)相差10。這是為了配合級(jí)連乘法累加陣列中的10個(gè)復(fù)數(shù)乘法累加器。因?yàn)樵诩?jí)連乘法累加陣列的流水線上,同一個(gè)時(shí)鐘周期需要進(jìn)行10次乘累加運(yùn)算,這就要求系數(shù)緩存在同一個(gè)時(shí)鐘周期提供10個(gè)連續(xù)的系數(shù),所以系數(shù)以這種特點(diǎn)存儲(chǔ)。
三、硬件資源的調(diào)度方法本發(fā)明對(duì)硬件資源的調(diào)度采用兩級(jí)調(diào)度框架,在控制方法上采用集中控制與分布控制相結(jié)合。圖7為器件兩級(jí)調(diào)度框架圖??刂谱峙c控制信號(hào)首先進(jìn)入“全局控制”模塊進(jìn)行一級(jí)譯碼與控制字分配。在這個(gè)模塊內(nèi),首先接收控制字,然后根據(jù)控制字產(chǎn)生一些全局控制信號(hào)。這些全局控制包括協(xié)調(diào)4個(gè)基本單元的動(dòng)作,決定運(yùn)算結(jié)果的輸出格式,對(duì)片內(nèi)主時(shí)鐘的設(shè)置等?!叭挚刂啤蹦K的第二個(gè)作用,是向各基本單元的“本地控制”模塊發(fā)射控制信息。控制信號(hào)和控制字首先進(jìn)入“全局控制”模塊,在此模塊內(nèi),與運(yùn)算控制的各種參數(shù)有關(guān)的控制字被譯碼,并向各基本單元發(fā)射。這些被發(fā)射的信息包括工作模式、工作模式的子類型、運(yùn)算點(diǎn)數(shù)、頻道數(shù)目、處理通道的數(shù)目等等。
各基本單元(basic_unit)內(nèi)的本地控制模塊在收到全局控制模塊發(fā)射的信息之后,會(huì)對(duì)這些信息進(jìn)行二級(jí)譯碼,將其轉(zhuǎn)換為硬件調(diào)度控制信號(hào)的細(xì)節(jié)。例如,根據(jù)工作模式及其類型決定一些選擇開關(guān)的開合;根據(jù)處理通道的數(shù)目來(lái)決定系數(shù)如何存儲(chǔ),系數(shù)存儲(chǔ)器地址如何產(chǎn)生;根據(jù)運(yùn)算點(diǎn)數(shù)決定乘法累加陣列的復(fù)用次數(shù),進(jìn)而確定某個(gè)寄存器是否更新以及更新時(shí)間等等。將硬件資源的調(diào)度分為兩級(jí),主要是為了控制上的條理性和簡(jiǎn)約性。從實(shí)現(xiàn)的角度看,更加清晰和明了。
在基本單元內(nèi)部,采用算術(shù)運(yùn)算的方法來(lái)對(duì)關(guān)鍵參數(shù)進(jìn)行譯碼。無(wú)論FFT/IFFT、FIR脈組還是相關(guān)處理運(yùn)算,其數(shù)據(jù)和系數(shù)的存/取地址、乘法累加陣列的復(fù)用次數(shù)等都是具有規(guī)律性的,可以在這些規(guī)律的基礎(chǔ)上,利用算術(shù)運(yùn)算對(duì)控制字進(jìn)行解碼,得到所有的控制信息和時(shí)序信號(hào)。例如,在FIR脈組運(yùn)算中,濾波階數(shù)為40,點(diǎn)數(shù)也為40,則專用解碼乘法器會(huì)計(jì)算出總共需要40×40=1600點(diǎn)的系數(shù)。那么在產(chǎn)生系數(shù)寫地址時(shí),會(huì)依次產(chǎn)生0~1599的寫地址,將系數(shù)寫入對(duì)應(yīng)的緩存。采用算術(shù)運(yùn)算解碼方式的另一個(gè)原因,是出于調(diào)度的復(fù)雜程度和使用資源之間的折衷首先,8×8的定點(diǎn)乘法器并不會(huì)占用太多資源;其次,如果將處理器所有工作狀態(tài)列舉出來(lái),用查表方式實(shí)現(xiàn)解碼的話,不但有繁瑣而巨大的工作量,其存儲(chǔ)單元和查找邏輯占用的資源也是很可觀的。
本發(fā)明對(duì)硬件資源調(diào)度所采用的控制字共有64位,在FFT/IFFT、FIR脈組、相關(guān)運(yùn)算的工作模式下,控制字的說(shuō)明分別如表1、表2、表3
表1
表2
表364位控制字通過(guò)系數(shù)輸入端口coeff_in輸入,輸入方式分為32位輸入和16位輸入兩種,由管腳control_en1、control_en2作為使能,在control_en1、control_en2各自為低時(shí)分別送入。32位輸入時(shí),功能控制字分兩組,占用coeff_in(31:0)的全部32位,control_en1、control_en2的低電平分別持續(xù)1個(gè)coeff_en周期,在control_en1為低的coeff_en周期內(nèi)送功能控制字的前32位,在control_en2為低的coeff_en周期內(nèi)送控制字的后32位。16位輸入時(shí),功能控制字占用coeff_in(31:0)的高16位,control_en1、control_en2的低電平持續(xù)2個(gè)coeff_en周期,在control_en1為低的2個(gè)coeff_en周期內(nèi)送功能控制字前32位,在control_en2為低的2個(gè)coeff_en周期內(nèi)送功能控制字的后32位。32位控制字輸入時(shí)序和16位控制字輸入的時(shí)序圖11、圖12所示。
在以本發(fā)明為主處理器的通用信號(hào)處理板上,分別進(jìn)行1024點(diǎn)FFT運(yùn)算、10階FIR脈組處理、360點(diǎn)線性調(diào)頻信號(hào)的相關(guān)運(yùn)算,其控制字設(shè)置分別如表4、表5、表6所示。
表4
表5
表權(quán)利要求
1.可重構(gòu)數(shù)字信號(hào)處理器,其特征在于器件內(nèi)部的硬件架構(gòu)和硬件連線可通過(guò)配置控制字進(jìn)行結(jié)構(gòu)重組,從而實(shí)現(xiàn)快速傅立葉變換/快速傅立葉逆變換、FIR脈組及相關(guān)處理等多種形式的濾波運(yùn)算。
2.如權(quán)利要求1所述的可重構(gòu)數(shù)字信號(hào)處理器,其特征在于主體架構(gòu)包括輸入單元、輸出單元、數(shù)據(jù)交換單元和4個(gè)基本單元,其基本單元中包含160個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器,而且它們平均分布于4個(gè)基本單元中;硬件的組織形式可以通過(guò)配置控制字重組通過(guò)控制字和控制信號(hào)的配置,可以改變所述160個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器以及數(shù)據(jù)交換單元的組織形式,使之選擇不同的工作模式,以適應(yīng)三種不同的運(yùn)算任務(wù)FFT/IFFT、FIR脈組處理、相關(guān)運(yùn)算;硬件調(diào)度方案采取集中式與分布式相結(jié)合的兩級(jí)調(diào)度方法即控制字先由全局模塊進(jìn)行一級(jí)譯碼,再由各基本單元進(jìn)行二級(jí)譯碼。
3.如權(quán)利要求1或2所述的可重構(gòu)數(shù)字信號(hào)處理器,其特征在于總體架構(gòu)采用兩級(jí)控制架構(gòu),全局控制模塊用于協(xié)調(diào)4個(gè)基本單元,每個(gè)基本單元內(nèi)部有其自身的本地控制邏輯。介于4個(gè)基本單元之間的數(shù)據(jù)交換單元負(fù)責(zé)把每個(gè)基本單元中的數(shù)據(jù)按照不同的控制要求送入其他3個(gè)基本單元;輸入單元接收控制字、對(duì)控制字進(jìn)行一級(jí)譯碼、分配控制字到各單元控制字與系數(shù)入口1復(fù)用同一個(gè)端口,控制字接收模塊接收控制字,然后送入一級(jí)譯碼模塊譯碼,一方面產(chǎn)生全局控制信號(hào)用于產(chǎn)生片內(nèi)時(shí)序、為系數(shù)和數(shù)據(jù)提供同步,另一方面通過(guò)控制字分配模塊分別向片內(nèi)其他單元發(fā)射,系數(shù)同步模塊對(duì)系數(shù)入口1與系數(shù)入口2進(jìn)行同步,數(shù)據(jù)同步模塊對(duì)數(shù)據(jù)入口1和數(shù)據(jù)入口2進(jìn)行同步;數(shù)據(jù)交換單元是一組多輸入、多輸出的開關(guān)組合,在4個(gè)基本單元之間交換數(shù)據(jù);輸出單元對(duì)各個(gè)基本單元的運(yùn)算結(jié)果進(jìn)行排序,并且按照不同的格式輸出基本單元輸出結(jié)果排序模塊在工作于FFT/IFFT和FIR脈組處理模式時(shí)將基本單元的輸出按照頻道順序排列,當(dāng)工作于相關(guān)處理模式時(shí)將來(lái)自各個(gè)基本單元的、按幀輸出的數(shù)據(jù)調(diào)整為與輸入數(shù)據(jù)率相同的連續(xù)數(shù)據(jù)流,求模模塊完成實(shí)部/虛部的輸出格式到模值/相角的輸出格式的轉(zhuǎn)換,取對(duì)數(shù)模塊將輸入的模值轉(zhuǎn)換為對(duì)數(shù)表示,浮點(diǎn)/定點(diǎn)轉(zhuǎn)換模塊可以將實(shí)部/虛部模塊的或者求模模塊的輸出由浮點(diǎn)格式轉(zhuǎn)換為定點(diǎn)格式,指數(shù)歸一化模塊通過(guò)對(duì)尾數(shù)作相應(yīng)移位將浮點(diǎn)格式的運(yùn)算結(jié)果的指數(shù)統(tǒng)一為固定值,上述4種格式轉(zhuǎn)換模塊分別有兩套,每個(gè)輸出端口對(duì)應(yīng)一套,保證兩個(gè)輸出端口可以獨(dú)立地以任意一種格式輸出;基本單元中,數(shù)據(jù)存儲(chǔ)器包括8個(gè)512×40的雙端口RAM,用于運(yùn)算數(shù)據(jù)的輸入緩存、運(yùn)算中間結(jié)果暫存和運(yùn)算結(jié)果輸出緩存,數(shù)據(jù)緩存可以同時(shí)把數(shù)據(jù)加到每個(gè)復(fù)數(shù)乘法累加器和復(fù)數(shù)乘法累加器子陣,系數(shù)存儲(chǔ)器包括10個(gè)256×32的雙端口RAM,用于存儲(chǔ)相關(guān)處理和FIR濾波器系數(shù)以及FFT運(yùn)算時(shí)的加權(quán)系數(shù),F(xiàn)FT迭代運(yùn)算的系數(shù)是一個(gè)固定的、以專用邏輯實(shí)現(xiàn)的表,每個(gè)復(fù)數(shù)乘法累加器對(duì)應(yīng)4個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器,每個(gè)復(fù)數(shù)乘法累加器子陣包括16個(gè)實(shí)數(shù)浮點(diǎn)乘法累加器,相當(dāng)于4個(gè)復(fù)數(shù)乘法累加器,兩個(gè)復(fù)數(shù)乘法累加器子陣和復(fù)數(shù)乘法累加器按照不同的方式搭配組合,用于完成不同的運(yùn)算,實(shí)數(shù)浮點(diǎn)乘法累加器的結(jié)構(gòu)分為5個(gè)部分定點(diǎn)乘法部分、截位部分、指數(shù)調(diào)整部分、定點(diǎn)加法部分、指數(shù)判斷部分。
4.如權(quán)利要求1或2所述的可重構(gòu)數(shù)字信號(hào)處理器,其特征在于做三種濾波運(yùn)算時(shí)采取相應(yīng)的組織形式,分別為做FFT/IFFT運(yùn)算時(shí),復(fù)數(shù)乘法累加子陣A和復(fù)數(shù)乘法累加子陣B分別作為基8算法的一個(gè)迭代運(yùn)算的節(jié)點(diǎn),子陣中的4個(gè)復(fù)數(shù)乘法累加器用于完成一級(jí)基8迭代運(yùn)算子陣前面的那個(gè)復(fù)數(shù)乘法累加器A及復(fù)數(shù)乘法累加器B作為加窗運(yùn)算器,對(duì)數(shù)據(jù)進(jìn)行加窗處理,加窗之后的數(shù)據(jù)進(jìn)入復(fù)數(shù)乘法累加子陣進(jìn)行一級(jí)基8迭代運(yùn)算,每一級(jí)迭代運(yùn)算的輸出首先導(dǎo)入數(shù)據(jù)緩存,然后再通過(guò)數(shù)據(jù)交換單元送到相應(yīng)的另外一個(gè)復(fù)數(shù)乘法累加子陣,以進(jìn)行下一級(jí)迭代運(yùn)算;做FIR脈組處理時(shí),基本單元內(nèi)部的2個(gè)復(fù)數(shù)乘法累加器模塊和2個(gè)復(fù)數(shù)乘法累加器子陣模塊中的乘法累加器并聯(lián)使用,每個(gè)復(fù)數(shù)乘法累加器對(duì)應(yīng)FIR脈組的一個(gè)頻道,共軛運(yùn)算時(shí)對(duì)應(yīng)2個(gè)頻道;做相關(guān)運(yùn)算時(shí),復(fù)數(shù)乘法累加器和復(fù)數(shù)乘法累加器子陣串聯(lián)使用,相當(dāng)于串聯(lián)10個(gè)復(fù)數(shù)乘法累加器。
5.如權(quán)利要求1或2所述的可重構(gòu)數(shù)字信號(hào)處理器,其特征在于所采用的硬件調(diào)度方案,分別是對(duì)硬件資源的調(diào)度采用全局控制和基本單元內(nèi)本地控制相結(jié)合的兩級(jí)調(diào)度模式控制字與控制信號(hào)首先進(jìn)入全局控制模塊進(jìn)行一級(jí)譯碼與控制字分配,在這個(gè)模塊內(nèi),首先接收控制字,然后根據(jù)控制字產(chǎn)生全局控制信號(hào),包括協(xié)調(diào)4個(gè)基本單元的動(dòng)作,決定運(yùn)算結(jié)果的輸出格式,對(duì)片內(nèi)主時(shí)鐘的設(shè)置,全局控制模塊的第二個(gè)作用是向各基本單元的本地控制模塊發(fā)射控制信息,包括工作模式、工作模式的子類型、運(yùn)算點(diǎn)數(shù)、頻道數(shù)目、處理通道的數(shù)目;各基本單元內(nèi)的本地控制模塊在收到全局控制模塊發(fā)射的信息之后,對(duì)這些信息進(jìn)行二級(jí)譯碼,將其轉(zhuǎn)換為硬件調(diào)度控制信號(hào)的細(xì)節(jié)。
全文摘要
本發(fā)明公開了一種可重構(gòu)數(shù)字信號(hào)處理器(DSP),器件內(nèi)部的硬件資源可根據(jù)不同的應(yīng)用需求進(jìn)行結(jié)構(gòu)重組,從而能夠?qū)崿F(xiàn)多種形式的濾波運(yùn)算。本發(fā)明兼具了傳統(tǒng)專用集成電路(ASIC)與通用數(shù)字信號(hào)處理器的優(yōu)點(diǎn)。它具有超大規(guī)模專用器件的運(yùn)算能力,而且能適應(yīng)快速傅立葉變換(FFT)、快速傅立葉逆變換(IFFT)、FIR脈組處理、相關(guān)處理等不同的數(shù)字信號(hào)實(shí)時(shí)處理場(chǎng)合,同時(shí)使用簡(jiǎn)單,價(jià)格低廉。
文檔編號(hào)G06F17/14GK1900927SQ200610086398
公開日2007年1月24日 申請(qǐng)日期2006年7月14日 優(yōu)先權(quán)日2006年7月14日
發(fā)明者洪一, 郭二輝, 趙斌, 洪灝, 彭勇俊, 陳風(fēng)波 申請(qǐng)人:中國(guó)電子科技集團(tuán)公司第三十八研究所