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