FPGA內(nèi)嵌的塊RAM及其在FFT算法中的應(yīng)用_第1頁(yè)
FPGA內(nèi)嵌的塊RAM及其在FFT算法中的應(yīng)用_第2頁(yè)
FPGA內(nèi)嵌的塊RAM及其在FFT算法中的應(yīng)用_第3頁(yè)
FPGA內(nèi)嵌的塊RAM及其在FFT算法中的應(yīng)用_第4頁(yè)
FPGA內(nèi)嵌的塊RAM及其在FFT算法中的應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、FPGA內(nèi)嵌的塊RAM及其在FFT算法中的應(yīng)用1、 引言在現(xiàn)代邏輯設(shè)計(jì)中,F(xiàn)PGA占有重要的地位,不僅因?yàn)榫哂袕?qiáng)大的邏輯功能和高速的處理速度,同時(shí)因?yàn)槠鋬?nèi)部嵌有大量的可配置的塊RAM1,使其得到了廣泛地應(yīng)用,例如FFT算法的實(shí)現(xiàn)等。FFT算法的實(shí)現(xiàn)有多種方案2,比如采用單片機(jī)或DSP芯片實(shí)現(xiàn),但是因需要外接存儲(chǔ)器而使其運(yùn)算速度受到了限制34,而采用FPGA實(shí)現(xiàn)FFT算法,避免了使用外部存儲(chǔ)器,加快了數(shù)據(jù)的讀取和存儲(chǔ)速度,進(jìn)而可以提高FFT的運(yùn)算速度56。隨著設(shè)計(jì)的日益復(fù)雜,RAM的需求量也越來(lái)越大,不同器件商生產(chǎn)的不同F(xiàn)PGA器件族內(nèi)嵌塊RAM的結(jié)構(gòu)又有一些不同,在Altera公司的FPGA內(nèi)

2、部嵌入的RAM塊有三種7,分別是M512RAM(512bit RAM)、M4K(4Kbit)和M-RAM(512Kbit RAM),其中M512主要用于大量分散的數(shù)據(jù)存儲(chǔ)、淺FIFO、移位寄存器、時(shí)鐘域隔離等功能。M4K通常用作芯片內(nèi)部數(shù)據(jù)流的緩存、ATM信元的處理、信元FIFO接口以及CPU的程序存儲(chǔ)器等。而M-RAM主要用于在大數(shù)據(jù)包的緩存(如以太網(wǎng)幀、IP包等大到幾K字節(jié)的數(shù)據(jù)包),視頻圖像幀的緩存,回波抵消(Echo Canceller)數(shù)據(jù)存儲(chǔ)等等。本文將詳細(xì)介紹內(nèi)嵌RAM塊的不同配置模式,及其實(shí)現(xiàn)的FIFO存儲(chǔ)器在FFT算法中的應(yīng)用。2、 FPGA內(nèi)嵌塊RAM RAM幾乎是可編程邏

3、輯器件中除了LE之外用得最多的功能塊了。通常,F(xiàn)PGA內(nèi)嵌塊RAM可以配置成以下幾種模式:?jiǎn)味丝赗AM、簡(jiǎn)單雙口RAM、真正雙口RAM、移位寄存器、ROM和FIFO等模式8。而在Altera公司的FPGA中內(nèi)嵌塊RAM以M4K最多,本文就以M4K塊RAM為例,介紹這幾種模塊的實(shí)現(xiàn)方式及其在FFT算法中的應(yīng)用。2.1 單端口RAM模式如圖1所示為單端口RAM的模型,其中兩個(gè)時(shí)鐘inclock和outclock可以使用同一個(gè)時(shí)鐘源,inclocken和outclocken是兩個(gè)時(shí)鐘使能信號(hào),inaclr和outaclr是異步清零信號(hào),可以分別對(duì)輸入級(jí)和輸出級(jí)寄存器清零。圖1 單端口RAM模型單端口

4、RAM模式支持非同時(shí)的讀寫(xiě)操作。同時(shí)每個(gè)M4K RAM塊可以被分為兩部分,分別實(shí)現(xiàn)兩個(gè)獨(dú)立的單端口RAM。當(dāng)器件內(nèi)部存儲(chǔ)單元不足時(shí),QuartusII軟件就會(huì)自動(dòng)的將M4K RAM配置成兩個(gè)相互獨(dú)立的單端口RAM。需要注意的是,當(dāng)要實(shí)現(xiàn)兩個(gè)獨(dú)立的單端口RAM模塊時(shí),首先要保證每個(gè)模塊所占用的存儲(chǔ)空間小于M4K RAM存儲(chǔ)空間的1/2。在單端口RAM配置中,輸出只在read-during-write模式有效,即只有在寫(xiě)操作有效時(shí),寫(xiě)入到RAM的數(shù)據(jù)才能被讀出。當(dāng)輸出寄存器被旁路時(shí),新數(shù)據(jù)在其被寫(xiě)入時(shí)的時(shí)鐘的上升沿有效。2.2 簡(jiǎn)單雙端口RAM模式如圖2所示為簡(jiǎn)單雙端口RAM模型,圖中左邊的端口只

5、寫(xiě),右邊的端口只讀,因此這種RAM也被稱(chēng)為偽雙端口RAM(Pseudo Dual Port RAM)。這種簡(jiǎn)單雙端口RAM模式也支持同時(shí)的讀寫(xiě)操作。圖2 簡(jiǎn)單雙端口RAM模型M4K RAM塊支持不同的端口寬度設(shè)置,允許讀端口寬度與寫(xiě)端口寬度不同。這一特性有著廣泛地應(yīng)用,例如:不同總線寬度的并串轉(zhuǎn)換器等。下表1顯示了M4K RAM支持的混合端口配置情況。表1 簡(jiǎn)單雙端口RAM模型的混合端口配置在簡(jiǎn)單雙端口RAM模式中,M4K RAM塊具有一個(gè)寫(xiě)使能信號(hào)wren和一個(gè)讀使能信號(hào)rden,當(dāng)rden為高電平時(shí),讀操作有效。當(dāng)讀使能信號(hào)無(wú)效時(shí),當(dāng)前數(shù)據(jù)被保存在輸出端口。 當(dāng)讀操作和寫(xiě)操作同時(shí)對(duì)同一個(gè)地

6、址單元時(shí),簡(jiǎn)單雙口RAM的輸出或者是不確定值,或者是存儲(chǔ)在此地址單元的原來(lái)的數(shù)據(jù)(這個(gè)可以在QuartusII軟件中進(jìn)行設(shè)計(jì))。2.3 真正雙端口RAM模式 如圖3所示為真正雙端口RAM模式,圖中左邊的端口A和右邊的端口B都支持讀寫(xiě)操作,wren信號(hào)為高為寫(xiě)操作,低為讀操作。 同時(shí)它支持兩個(gè)端口讀寫(xiě)操作的任何組合:兩個(gè)同時(shí)讀操作、兩個(gè)端口同時(shí)寫(xiě)操作或者在兩個(gè)不同的時(shí)鐘下一個(gè)端口執(zhí)行寫(xiě)操作,另一個(gè)端口執(zhí)行讀操作。圖3 真正雙端口RAM模式真正雙端口RAM模式在很多應(yīng)用中可以增加存儲(chǔ)帶寬,例如,在包含Altera Nios嵌入式處理器和DMA控制器系統(tǒng)中,采用真正雙端口RAM模式會(huì)很方便,相反,如

7、果在這樣的一個(gè)系統(tǒng)中,采用簡(jiǎn)單雙端口RAM模式,當(dāng)處理器和DMA控制器同時(shí)訪問(wèn)RAM時(shí),就會(huì)出現(xiàn)問(wèn)題。真正雙端口RAM模式支持處理器和DMA控制器同時(shí),這個(gè)特性避免了采用仲裁的麻煩,同時(shí)極大的提高了系統(tǒng)的帶寬。在由單個(gè)M4K RAM塊實(shí)現(xiàn)的真正雙端口RAM模式中,能達(dá)到的最寬的數(shù)據(jù)位為256*16-bit或者256*18-bit(包括校驗(yàn)位),而不支持128*32-bit和128*36-bit(包含校驗(yàn)位),因?yàn)檫@時(shí)輸出驅(qū)動(dòng)器的個(gè)數(shù)與M4K RAM塊的最大數(shù)據(jù)位寬相等,而真正雙端口RAM在兩邊都有輸出端口,這樣真正雙端口RAM的最大數(shù)據(jù)位寬等于輸出驅(qū)動(dòng)器的一半。然而,可以采用級(jí)聯(lián)多個(gè)M4K R

8、AM塊的方式實(shí)現(xiàn)更寬數(shù)據(jù)位的雙端口RAM。另外,真正雙端口RAM模型也支持混合端口寬度,如表2所示。表2 真正雙端口RAM模型的混合端口配置在真正雙端口RAM模式中,RAM的輸出只能配置成read-during-write模式。這意味著在寫(xiě)操作執(zhí)行過(guò)程中,通過(guò)A或B端口寫(xiě)入到RAM的數(shù)據(jù),可以分別通過(guò)輸出端口A或B輸出。當(dāng)輸出寄存器被旁路時(shí),新數(shù)據(jù)在其被寫(xiě)入的時(shí)鐘的上升沿有效。當(dāng)兩個(gè)端口同時(shí)向同一個(gè)地址單元寫(xiě)入數(shù)據(jù)時(shí),寫(xiě)沖突將會(huì)發(fā)生,這樣存入該地址單元的將是未知的。 要實(shí)現(xiàn)有效地向同一個(gè)地址單元寫(xiě)入數(shù)據(jù),A端口和B端口時(shí)鐘的上升沿的到來(lái)之間必須滿(mǎn)足一個(gè)最小寫(xiě)周期時(shí)間間隔。因?yàn)樵趯?xiě)時(shí)鐘的下降沿,

9、數(shù)據(jù)被寫(xiě)入M4K RAM塊中,所以A端口時(shí)鐘的上升沿要比B端口時(shí)鐘的上升沿晚到來(lái)1/2個(gè)最小寫(xiě)時(shí)鐘周期,如果不滿(mǎn)足這個(gè)時(shí)間要求,則存入此地址單元的數(shù)據(jù)無(wú)效。2.4 RAM用做移位寄存器在DSP應(yīng)用情況中,可以將內(nèi)嵌的RAM塊配置成移位寄存器,例如FIR濾波器、隨機(jī)數(shù)據(jù)產(chǎn)生器、多通道濾波器、自相關(guān)和互相關(guān)功能模塊等,在這些和其他需要本地存儲(chǔ)的DSP系統(tǒng)中,一般是利用觸發(fā)器來(lái)實(shí)現(xiàn),但是這種方法會(huì)耗費(fèi)很多的邏輯單元,尤其是在實(shí)現(xiàn)較大的移位寄存器時(shí)。而利用內(nèi)嵌的RAM塊實(shí)現(xiàn)移位存儲(chǔ)器,既可以節(jié)約邏輯單元和布線資源,同時(shí)也可以提高效率。假設(shè)設(shè)計(jì)一個(gè)移位寄存器,輸入數(shù)據(jù)寬度為w,抽頭數(shù)為n,抽頭長(zhǎng)度為m,

10、如圖4所示。在用RAM塊實(shí)現(xiàn)移位寄存器時(shí),需要滿(mǎn)足w*n小于RAM塊的最大支持的數(shù)據(jù)寬度,w×n×m小于RAM塊的最大比特?cái)?shù)。M4K的最大數(shù)據(jù)寬度為36bit,最大比特?cái)?shù)為4608。而如果需要更大的移位寄存器可以用更多的RAM級(jí)聯(lián)實(shí)現(xiàn)。圖4 移位寄存器2.5 RAM用做ROMM4K RAM塊還可以配置成ROM,可以使用存儲(chǔ)器初始化文件(.mif)對(duì)ROM進(jìn)行初始化,在上電后使其內(nèi)部的內(nèi)容保持不變,即實(shí)現(xiàn)了ROM功能。2.6 RAM實(shí)現(xiàn)FIFO實(shí)際上,在FIFO的具體實(shí)現(xiàn)時(shí),RAM的部分是采用簡(jiǎn)單雙端口模式操作的,一個(gè)端口只寫(xiě)數(shù)據(jù)而另一個(gè)端口只讀數(shù)據(jù),另外在RAM周?chē)右恍┛?/p>

11、制電路,下面將詳細(xì)介紹由內(nèi)嵌RAM塊配置成的FIFO在FFT算法中的應(yīng)用。3、 FIFO在FFT算法中的應(yīng)用 FFT簡(jiǎn)介及其乒乓操作 快速傅立葉變換(FFT)在數(shù)字信號(hào)處理中具有非常重要的地位,并且有著廣泛的應(yīng)用,其中FFT的運(yùn)算速度和占用的存儲(chǔ)單元是設(shè)計(jì)中重點(diǎn)考慮的方面,在實(shí)現(xiàn)FFT算法的各種方法中,基于FPGA的實(shí)現(xiàn)在速度、精度和性?xún)r(jià)比等方面具有不可比擬的優(yōu)勢(shì)3,其倍受設(shè)計(jì)者的親睞,其中FPGA內(nèi)嵌RAM使得FFT計(jì)算中數(shù)據(jù)的存儲(chǔ)變得方便快捷,同時(shí)采用內(nèi)嵌RAM塊能很好的完成“乒乓操作8”,進(jìn)而提高了運(yùn)算速度?!捌古也僮鳌笔且粋€(gè)常常應(yīng)用于數(shù)據(jù)流控制的處理技巧,典型的乒乓操作方法如圖5所示輸

12、入數(shù)據(jù)流選擇單元MUX2選1數(shù)據(jù)緩沖模塊1數(shù)據(jù)緩沖模塊2輸出數(shù)據(jù)流選擇單元MUX2選1數(shù)據(jù)流運(yùn)算處理模塊圖5 乒乓操作流程圖乒乓操作的處理流程描述如下:輸入數(shù)據(jù)流通過(guò)“輸入數(shù)據(jù)流選擇單元”,等時(shí)地將數(shù)據(jù)流分配到兩個(gè)數(shù)據(jù)緩沖模塊。數(shù)據(jù)緩沖模塊可以是任何存儲(chǔ)模塊,比較常用的存儲(chǔ)單元為雙口RAM(DPRAM)、單口RAM(SPRAM)和FIFO等。在第一個(gè)緩沖周期,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”。在第2個(gè)緩沖周期,通過(guò)“輸入數(shù)據(jù)流選擇單元”的切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊2”,與此同時(shí),將“數(shù)據(jù)緩沖模塊1”緩存的第1個(gè)周期的數(shù)據(jù)通過(guò)“輸出數(shù)據(jù)流選擇單元”的選擇,送到“數(shù)據(jù)流運(yùn)算處理

13、模塊”被運(yùn)算處理。在第3個(gè)緩沖周期,通過(guò)“輸入數(shù)據(jù)流選擇單元”的再次切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”,與此同時(shí),將“數(shù)據(jù)緩沖模塊2”緩存的第2個(gè)周期的數(shù)據(jù)通過(guò)“輸出數(shù)據(jù)流選擇單元”的切換,送到“數(shù)據(jù)流運(yùn)算處理模塊”被運(yùn)算處理。如此循環(huán),周而復(fù)始。 乒乓操作的最大特點(diǎn)是,通過(guò)“輸入數(shù)據(jù)流選擇單元”和“輸出數(shù)據(jù)流選擇單元”按節(jié)拍、相互配合的切換,將經(jīng)過(guò)緩沖的數(shù)據(jù)流沒(méi)有時(shí)間停頓地送到“數(shù)據(jù)流運(yùn)算處理模塊”被運(yùn)算和處理。把乒乓操作模塊當(dāng)做是一個(gè)整體,站在這個(gè)模塊的兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流是連續(xù)不斷的,沒(méi)有任何停頓,因此非常適合對(duì)數(shù)據(jù)口進(jìn)行流水線式處理。所以采用乒乓操作實(shí)現(xiàn)FFT算

14、法可以提高計(jì)算速度。3.1 FIFO存儲(chǔ)單元在FFT算法中的應(yīng)用FFT算法的處理過(guò)程開(kāi)始于數(shù)據(jù)輸入過(guò)程,此過(guò)程中,采樣數(shù)據(jù)被讀入并保存在存儲(chǔ)器中;接下來(lái)用存儲(chǔ)的數(shù)據(jù)作FFT計(jì)算并輸出結(jié)果。存儲(chǔ)單元RAM是用來(lái)存儲(chǔ)輸入數(shù)據(jù)和中間運(yùn)算結(jié)果的單元,每次蝶形運(yùn)算都要經(jīng)由RAM讀寫(xiě)輸入輸出數(shù)據(jù),在進(jìn)行下一級(jí)變換的同時(shí),首先應(yīng)將結(jié)果回寫(xiě)到讀出數(shù)據(jù)的RAM存貯器中,為加快FFT運(yùn)算速度,構(gòu)造了雙端口FIFO RAM來(lái)加大數(shù)據(jù)的吞吐量,并實(shí)現(xiàn)乒乓操作,其輸入輸出共用一個(gè)時(shí)鐘,在時(shí)鐘的下降沿寫(xiě)入數(shù)據(jù),上升沿讀出數(shù)據(jù)。雙端口FIFO RAM可配置在片內(nèi)或片外。內(nèi)置RAM是FPGA的一種新增資源。將RAM設(shè)置在FP

15、AG內(nèi)部不存在驅(qū)動(dòng)和pad延時(shí)問(wèn)題,速度快且控制簡(jiǎn)單,可提高系統(tǒng)的可靠性。為此,本設(shè)計(jì)應(yīng)用Atera FPGA的內(nèi)置RAM資源設(shè)計(jì)內(nèi)置RAM,提高系統(tǒng)總體速度和可靠性。以下介紹FIFO的具體實(shí)現(xiàn)過(guò)程。4、 FIFO的實(shí)現(xiàn)及其仿真圖Altera公司提供了強(qiáng)大而又便捷的QuartusII和MegaWizard Plug-In Manager工具,可以幫助設(shè)計(jì)者簡(jiǎn)單快捷地實(shí)現(xiàn)FIFO存儲(chǔ)器。啟動(dòng)QuartusII軟件中MegaWizard Plug-In Manager工具,并選擇plm_fifo,如圖5所示,然后根據(jù)設(shè)計(jì)要求,按照向?qū)нM(jìn)一步設(shè)計(jì)各個(gè)參數(shù),最后形成如圖6所示的模塊,再添加必要的輸入輸

16、出引腳,即完成了FIFO的初步設(shè)計(jì)。從上述過(guò)程可以看到,Altera公司提供的QuartusII軟件在實(shí)現(xiàn)內(nèi)嵌FIFO功能上具有方便快捷的特點(diǎn),可以加快整個(gè)設(shè)計(jì)的速度,并保證了設(shè)計(jì)的正確性。圖5 MegaWizard工具有plm_fifo 模塊圖6 QuartusII軟件中實(shí)現(xiàn)的FIFO模塊 為了驗(yàn)證其是否符合設(shè)計(jì)要求,對(duì)其進(jìn)行仿真,得到如圖7所示的圖形。由圖7可以看到,上面設(shè)計(jì)的存儲(chǔ)器符合FIFO存儲(chǔ)器的要求,符合FFI算法的實(shí)現(xiàn)中對(duì)存儲(chǔ)器的要求。圖7 FIFO存儲(chǔ)器仿真圖5、小結(jié)本文總結(jié)了Altera公司FPGA內(nèi)嵌塊RAM的不同配置方法,并詳細(xì)介紹了每種配置方法的特點(diǎn),同時(shí)以由內(nèi)嵌RAM塊實(shí)現(xiàn)的FIFO存儲(chǔ)器在FFT算法中的應(yīng)用為例,詳細(xì)的介紹了FIFO存儲(chǔ)器的具體實(shí)現(xiàn)過(guò)程,并對(duì)FFT算法中利用FIFO存儲(chǔ)器實(shí)現(xiàn)的乒乓操作進(jìn)行了說(shuō)明,最后給出了FIFO存儲(chǔ)器的仿真圖。參考文獻(xiàn):1 EDA先鋒工作室,Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇),北京,人民郵電出版社,20052 劉嘉新,付金霞,蘇健民,用FPGA實(shí)現(xiàn)快速傅立葉變換,信息技術(shù),2006年第2期

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論