隨著現(xiàn)代通信技術(shù)的發(fā)展,各種多址技術(shù)在日常生活中的應(yīng)用正變得越來(lái)越廣泛。所謂多址技術(shù),是指許多用戶同時(shí)使用同一頻譜,采用不同的處理技術(shù),使不同用戶信號(hào)之間互不干擾地被分別接收和解調(diào)。多址技術(shù)分為頻分多址(FDMA)、碼分多址(CDMA)、時(shí)分多址(TDM-A)。頻分多址是以不同的頻率信道實(shí)現(xiàn)通信,碼分多址是以不同的代碼序列實(shí)現(xiàn)通信,而時(shí)分多址是以不同的時(shí)隙實(shí)現(xiàn)通信,它是一種實(shí)現(xiàn)共享傳輸介質(zhì)或網(wǎng)絡(luò)的通行技術(shù)。
時(shí)分多址技術(shù)把時(shí)間分割成周期性的幀,每一幀再分割成若干個(gè)時(shí)隙,通過(guò)介質(zhì)或者網(wǎng)絡(luò)發(fā)送信號(hào)。在滿足定時(shí)和同步的條件下,接收方可以分別在各個(gè)時(shí)隙中接收到對(duì)應(yīng)的信號(hào)而不混擾。時(shí)分多址技術(shù)具有保密性較高,傳輸容量較大等特點(diǎn)。
目前,利用FPGA實(shí)現(xiàn)多路信號(hào)的時(shí)分多址幀格式來(lái)進(jìn)行傳輸?shù)姆椒ū姸?,但大多?shù)方法都是通過(guò)使用FPGA芯片大量的門(mén)電路構(gòu)成寄存器來(lái)實(shí)現(xiàn)時(shí)分多址。該類方法將占用大量的FIGA資源,導(dǎo)致單片F(xiàn)PGA可實(shí)現(xiàn)的功能大大減少,提高了工程成本,甚至對(duì)于一些資源較少的FPGA芯片,該類方法無(wú)法實(shí)現(xiàn)時(shí)分多址傳輸。本文提出了一種基于IP核的方法來(lái)實(shí)現(xiàn)時(shí)分多址,利用芯片內(nèi)部的Block SelectRAMResource(BRAM)存儲(chǔ)數(shù)據(jù),節(jié)約了大量的邏輯門(mén)資源,使單片F(xiàn)PGA芯片能完成更多的邏輯功能。
1 理論分析
1.1 IP核
IP核(Intellectual Property core)是一段具有特定電路功能的硬件描述語(yǔ)言程序,該程序與集成電路的工藝無(wú)關(guān),可以移植到不同的半導(dǎo)體工藝中去生產(chǎn)基礎(chǔ)電路芯片。利用IP核設(shè)計(jì)電子系統(tǒng),引用方便,修改基本元件的功能容易。IP核模塊有行為(Behavior)、結(jié)構(gòu)(Str-ucture)和物理(Physical)3級(jí)不同程度的設(shè)計(jì),對(duì)應(yīng)描述功能行為的不同分為3類,即軟核、完成結(jié)構(gòu)描述的固核和基于描述并經(jīng)過(guò)工藝驗(yàn)證的硬核。
1.2 BRAM(Block SeleetRAM Resource)
FPGA內(nèi)部的資源種類比較復(fù)雜,主要包括了以下幾個(gè)部分:輸入/輸出模塊(Input/Output Blocks,IOB)、可配置邏輯單元(Configur-able Logic Blocks,CLB)、Block SelectRAM、乘法器、數(shù)字時(shí)鐘管理單元(DCM)、布線資源(Routing Resources)等。本文提出的算法正是利用芯片內(nèi)部集成的Block SelectRAM實(shí)現(xiàn)時(shí)分多址方式的傳輸,從而節(jié)約出大量的CLB.以便單片F(xiàn)PGA能完成更多的功能。
FPGA芯片內(nèi)部集成的每一塊BRAM都是物理上的雙口隨機(jī)訪問(wèn)存儲(chǔ)器(雙口RAM),它有兩套完全獨(dú)立的數(shù)據(jù)線,地址線和讀寫(xiě)控制線,并允許兩個(gè)獨(dú)立的系統(tǒng)同時(shí)對(duì)該存儲(chǔ)器進(jìn)行隨機(jī)性的訪問(wèn),即共享式多端口存儲(chǔ)器。
雙口RAM最大的特點(diǎn)是存儲(chǔ)數(shù)據(jù)共享。一個(gè)存儲(chǔ)器配備兩套獨(dú)立的地址,數(shù)據(jù)和控制線,允許兩個(gè)獨(dú)立控制器同時(shí)異步的訪問(wèn)存儲(chǔ)單元。因?yàn)閿?shù)據(jù)共享,就必須存在訪問(wèn)仲裁控制。內(nèi)部仲裁邏輯控制提供以下功能:對(duì)同一地址單元訪問(wèn)的時(shí)序控制;存儲(chǔ)單元數(shù)據(jù)塊的訪問(wèn)權(quán)限分配;信令交換邏輯等。
BRAM的工作類似于寄存器的工作方式,控制信號(hào)、地址信號(hào)以及輸入輸出數(shù)據(jù)信號(hào)必須要在時(shí)鐘沿的建立時(shí)間內(nèi)保持有效,BRAM會(huì)在這個(gè)時(shí)鐘周期進(jìn)行讀寫(xiě)操作來(lái)輸出結(jié)果或?qū)懭霐?shù)據(jù)。其讀寫(xiě)方式分為3種,分別是對(duì)地址進(jìn)行讀和寫(xiě)、只讀、只寫(xiě)。
1.3 算法實(shí)現(xiàn)
第1步,例化雙口RAM的IP核,將程序的輸入輸出與雙口RAM的輸入輸出進(jìn)行映射。
第2步,通過(guò)雙口RAM的第一套端口將輸入信號(hào)存儲(chǔ)到RAM中,通過(guò)雙口RAM的第二套端口將存儲(chǔ)到RAM中的數(shù)據(jù)讀出。
以4路信號(hào)為例,假設(shè)每路輸入信號(hào)的采樣率是48 kHz,采樣位數(shù)是64 bit,則每路輸入信號(hào)的位時(shí)鐘是3.072 MHz,在第一個(gè)48 kHz的采樣周期內(nèi),當(dāng)采到3.072 MHz位時(shí)鐘的下降沿時(shí),將輸入地址遞增1。則在接下來(lái)的位時(shí)鐘的上升沿,根據(jù)所例化的雙口RAM的IP核,4路輸入數(shù)據(jù)將存儲(chǔ)到雙口RAM當(dāng)前輸入地址所對(duì)應(yīng)的存儲(chǔ)器地址中,等待讀取。由于共有4路信號(hào),即輸入信號(hào)寬度為4位,則存儲(chǔ)到雙口RAM中的數(shù)據(jù)寬度也應(yīng)為4位,其中,每個(gè)地址中的所存儲(chǔ)數(shù)據(jù)的第一位對(duì)應(yīng)第一路輸入信號(hào),第二位對(duì)應(yīng)第二路輸入信號(hào),以此類推。此時(shí)需要的雙口RAM的大小位64x4 bit。
在下一個(gè)48 kHz的周期內(nèi),與前面類似,將4位寬度的輸入數(shù)據(jù)繼續(xù)存儲(chǔ)到雙口RAM新的64個(gè)4位的存儲(chǔ)空間,同時(shí),應(yīng)將上個(gè)48 kHz周期所存儲(chǔ)的前64個(gè)4位數(shù)據(jù)讀出,并且準(zhǔn)備以時(shí)分多址的格式傳輸出去。
第3步,將從第二套端口讀出的數(shù)據(jù)以時(shí)分多址的幀格式傳輸出去。
要想4路輸入信號(hào)以時(shí)分多址的格式傳輸,應(yīng)該將48 kHz時(shí)間周期劃分為4個(gè)時(shí)間周期,在劃分的每一個(gè)時(shí)間周期內(nèi),讀取一遍雙口RAM中存儲(chǔ)的數(shù)據(jù)。首先,應(yīng)在劃分的第一個(gè)時(shí)間周期內(nèi)把讀出的64個(gè)4位數(shù)據(jù)的第一位送給時(shí)分多址的輸出,然后回到起始地址,在劃分的第二個(gè)時(shí)間周期內(nèi)再重新讀出一次64個(gè)4位數(shù)據(jù),把數(shù)據(jù)的第二位送給時(shí)分多址的輸出,以此類推,直到4路數(shù)據(jù)全部輸出。由于在一個(gè)48 kHz周期內(nèi)要重復(fù)讀取雙口RAM中的數(shù)據(jù)4次,所以此時(shí)位時(shí)鐘的頻率要提高到原來(lái)的4倍,因此,讀取數(shù)據(jù)的位時(shí)鐘頻率應(yīng)該為12.288 MHz。
在接下來(lái)的一個(gè)48 kHz周期內(nèi),將雙口RAM中后64個(gè)4位存儲(chǔ)空間內(nèi)的數(shù)據(jù)以與上面相同的方式發(fā)送出去,同時(shí),由于前64個(gè)4位的存儲(chǔ)空間的數(shù)據(jù)已經(jīng)發(fā)送完成,不再需要保存,則新輸入的數(shù)據(jù)可被存儲(chǔ)到前64個(gè)4位的存儲(chǔ)空間,以此類推,前64個(gè)4位存儲(chǔ)空間與后64個(gè)存儲(chǔ)空間交替存儲(chǔ)輸入數(shù)據(jù),并交替將存儲(chǔ)的數(shù)據(jù)發(fā)送出去。
由此可以看到,所需要雙口RAM的大小應(yīng)為2x64×4bit,在A端口對(duì)數(shù)據(jù)寫(xiě)入,在B端口對(duì)數(shù)據(jù)進(jìn)行讀出。
2 FPGA的實(shí)現(xiàn)
實(shí)驗(yàn)所采用的FPGA是XILINX公司的SPARTAN 3E系列中的XC3SS00E芯片,該芯片的封裝是PQ208,芯片速度為-5,采用的程序開(kāi)發(fā)語(yǔ)言是VHDL,綜合工具為Xilinx公司的ISE 10.1,仿真工具采用的是ModelSim se 6.2。
與理論算法對(duì)應(yīng),硬件實(shí)現(xiàn)的VHDL程序包括了以下幾個(gè)模塊。
使用芯片內(nèi)部的雙口RAM的IP核,通過(guò)例化IP核,利用一個(gè)雙口RAM有兩套讀寫(xiě)地址,將程序的輸入輸出與雙口RAM的輸入輸出進(jìn)行映射,則內(nèi)部電路將程序的輸入輸出連接到了雙口RAM的輸入輸出上。對(duì)程序的輸入輸出腳的操作相當(dāng)于對(duì)雙口RAM進(jìn)行操作。圖1是雙口RAM的VHDL代碼在Xilinx ISE中綜合后的寄存器傳輸級(jí)電路圖。
圖1 雙口RAM的寄存器傳輸級(jí)電路
在端口A輸入時(shí)鐘clk3072的每個(gè)下降沿,端口A輸入地址AddrIn都遞增1,則在elk3072的上升沿,根據(jù)例化的雙口RAM的IP核,端口A的四路輸入數(shù)據(jù)將存儲(chǔ)進(jìn)相應(yīng)的地址空間中。
在端口B輸入時(shí)鐘elk12288的每個(gè)下降沿,端口B輸入地址AddrOut都遞增1,則在elk12288的上升沿,根據(jù)例化的雙口RAM的IP核,相應(yīng)的地址空間中的數(shù)據(jù)將通過(guò)Dout被讀出來(lái)。
依次將輸出數(shù)據(jù)以時(shí)分多址的幀格式傳輸出去。
3 仿真結(jié)果
用ModelSim se 6.2b對(duì)程序進(jìn)行仿真,在48 kHz的時(shí)鐘周期內(nèi),給第1路輸入源的64位輸入信號(hào)為0x1111111111111111,第2路輸入源的64位輸入信號(hào)為0x2222222222222222,第3路輸入源的64位輸入信號(hào)為0x3333333333333333,第4路輸入源的64位輸入信號(hào)為0x4444444444 444444。仿真結(jié)果如圖2所示。
圖2 仿真結(jié)果
由仿真圖可以看出,在一個(gè)48 kHz的時(shí)鐘周期內(nèi),TDMA_OUT,即時(shí)分多址幀格式的輸出為0x11111111111111112222222222222222333333 33333333334444444444444444,即每一幀被分成了4個(gè)時(shí)隙,4路輸入信號(hào)在每一幀中占用各自的時(shí)隙進(jìn)行傳輸,通過(guò)該仿真結(jié)果,可以驗(yàn)證該方法的可用性。
將VHDL語(yǔ)言程序通過(guò)ISE10.1綜合,布局布線后,通過(guò)JTAG線纜下載到XC3S500E中進(jìn)行電路板上的測(cè)試,再次驗(yàn)證了該方法的正確。
通過(guò)ISE綜合后,可以看到程序所占用的芯片資源如下表所示。
表1 芯片資源情況
從表中的數(shù)據(jù)可以看出,通過(guò)使用一個(gè)BRAM從而節(jié)約了大量的資源,F(xiàn)PGA芯片資源的重要指標(biāo)Slices僅僅占用了15個(gè),LUTs僅僅用了29個(gè),可見(jiàn),該方法所占用的FPGA資源極少,達(dá)到了設(shè)計(jì)目標(biāo)。
4 結(jié)論
本文研究了FPGA實(shí)現(xiàn)時(shí)分多址的一種改進(jìn)型的方法,通過(guò)使用FPGA芯片內(nèi)部的雙口RAM,利用IP核,實(shí)現(xiàn)了多路信號(hào)轉(zhuǎn)換成時(shí)分多址幀格式信號(hào)進(jìn)行傳輸,根據(jù)所占資源的統(tǒng)計(jì)數(shù)據(jù),可以看到在完成相同功能的前提下,該方法相比于已有的方法,確實(shí)能大量節(jié)省FPGA芯片的邏輯資源,從而使單片F(xiàn)PGA能完成更多的邏輯功能。但是,此方法會(huì)占用一部分雙口RAM,在雙口RAM資源緊張的時(shí)候不是太適用。
用ModelSim SE 6.2b對(duì)FPGA程序進(jìn)行了仿真,并且將程序下載到電路板上進(jìn)行了驗(yàn)證,證實(shí)了該方法的可用性。