版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、FPGA內(nèi)嵌的塊RAM及其在FFT算法中的應(yīng)用1、 引言在現(xiàn)代邏輯設(shè)計中,F(xiàn)PGA占有重要的地位,不僅因為具有強(qiáng)大的邏輯功能和高速的處理速度,同時因為其內(nèi)部嵌有大量的可配置的塊RAM1,使其得到了廣泛地應(yīng)用,例如FFT算法的實現(xiàn)等。FFT算法的實現(xiàn)有多種方案2,比如采用單片機(jī)或DSP芯片實現(xiàn),但是因需要外接存儲器而使其運算速度受到了限制34,而采用FPGA實現(xiàn)FFT算法,避免了使用外部存儲器,加快了數(shù)據(jù)的讀取和存儲速度,進(jìn)而可以提高FFT的運算速度56。隨著設(shè)計的日益復(fù)雜,RAM的需求量也越來越大,不同器件商生產(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ù)存儲、淺FIFO、移位寄存器、時鐘域隔離等功能。M4K通常用作芯片內(nèi)部數(shù)據(jù)流的緩存、ATM信元的處理、信元FIFO接口以及CPU的程序存儲器等。而M-RAM主要用于在大數(shù)據(jù)包的緩存(如以太網(wǎng)幀、IP包等大到幾K字節(jié)的數(shù)據(jù)包),視頻圖像幀的緩存,回波抵消(Echo Canceller)數(shù)據(jù)存儲等等。本文將詳細(xì)介紹內(nèi)嵌RAM塊的不同配置模式,及其實現(xiàn)的FIFO存儲器在FFT算法中的應(yīng)用。2、 FPGA內(nèi)嵌塊RAM RAM幾乎是可編程邏
3、輯器件中除了LE之外用得最多的功能塊了。通常,F(xiàn)PGA內(nèi)嵌塊RAM可以配置成以下幾種模式:單端口RAM、簡單雙口RAM、真正雙口RAM、移位寄存器、ROM和FIFO等模式8。而在Altera公司的FPGA中內(nèi)嵌塊RAM以M4K最多,本文就以M4K塊RAM為例,介紹這幾種模塊的實現(xiàn)方式及其在FFT算法中的應(yīng)用。2.1 單端口RAM模式如圖1所示為單端口RAM的模型,其中兩個時鐘inclock和outclock可以使用同一個時鐘源,inclocken和outclocken是兩個時鐘使能信號,inaclr和outaclr是異步清零信號,可以分別對輸入級和輸出級寄存器清零。圖1 單端口RAM模型單端口
4、RAM模式支持非同時的讀寫操作。同時每個M4K RAM塊可以被分為兩部分,分別實現(xiàn)兩個獨立的單端口RAM。當(dāng)器件內(nèi)部存儲單元不足時,QuartusII軟件就會自動的將M4K RAM配置成兩個相互獨立的單端口RAM。需要注意的是,當(dāng)要實現(xiàn)兩個獨立的單端口RAM模塊時,首先要保證每個模塊所占用的存儲空間小于M4K RAM存儲空間的1/2。在單端口RAM配置中,輸出只在read-during-write模式有效,即只有在寫操作有效時,寫入到RAM的數(shù)據(jù)才能被讀出。當(dāng)輸出寄存器被旁路時,新數(shù)據(jù)在其被寫入時的時鐘的上升沿有效。2.2 簡單雙端口RAM模式如圖2所示為簡單雙端口RAM模型,圖中左邊的端口只
5、寫,右邊的端口只讀,因此這種RAM也被稱為偽雙端口RAM(Pseudo Dual Port RAM)。這種簡單雙端口RAM模式也支持同時的讀寫操作。圖2 簡單雙端口RAM模型M4K RAM塊支持不同的端口寬度設(shè)置,允許讀端口寬度與寫端口寬度不同。這一特性有著廣泛地應(yīng)用,例如:不同總線寬度的并串轉(zhuǎn)換器等。下表1顯示了M4K RAM支持的混合端口配置情況。表1 簡單雙端口RAM模型的混合端口配置在簡單雙端口RAM模式中,M4K RAM塊具有一個寫使能信號wren和一個讀使能信號rden,當(dāng)rden為高電平時,讀操作有效。當(dāng)讀使能信號無效時,當(dāng)前數(shù)據(jù)被保存在輸出端口。 當(dāng)讀操作和寫操作同時對同一個地
6、址單元時,簡單雙口RAM的輸出或者是不確定值,或者是存儲在此地址單元的原來的數(shù)據(jù)(這個可以在QuartusII軟件中進(jìn)行設(shè)計)。2.3 真正雙端口RAM模式 如圖3所示為真正雙端口RAM模式,圖中左邊的端口A和右邊的端口B都支持讀寫操作,wren信號為高為寫操作,低為讀操作。 同時它支持兩個端口讀寫操作的任何組合:兩個同時讀操作、兩個端口同時寫操作或者在兩個不同的時鐘下一個端口執(zhí)行寫操作,另一個端口執(zhí)行讀操作。圖3 真正雙端口RAM模式真正雙端口RAM模式在很多應(yīng)用中可以增加存儲帶寬,例如,在包含Altera Nios嵌入式處理器和DMA控制器系統(tǒng)中,采用真正雙端口RAM模式會很方便,相反,如
7、果在這樣的一個系統(tǒng)中,采用簡單雙端口RAM模式,當(dāng)處理器和DMA控制器同時訪問RAM時,就會出現(xiàn)問題。真正雙端口RAM模式支持處理器和DMA控制器同時,這個特性避免了采用仲裁的麻煩,同時極大的提高了系統(tǒng)的帶寬。在由單個M4K RAM塊實現(xiàn)的真正雙端口RAM模式中,能達(dá)到的最寬的數(shù)據(jù)位為256*16-bit或者256*18-bit(包括校驗位),而不支持128*32-bit和128*36-bit(包含校驗位),因為這時輸出驅(qū)動器的個數(shù)與M4K RAM塊的最大數(shù)據(jù)位寬相等,而真正雙端口RAM在兩邊都有輸出端口,這樣真正雙端口RAM的最大數(shù)據(jù)位寬等于輸出驅(qū)動器的一半。然而,可以采用級聯(lián)多個M4K R
8、AM塊的方式實現(xiàn)更寬數(shù)據(jù)位的雙端口RAM。另外,真正雙端口RAM模型也支持混合端口寬度,如表2所示。表2 真正雙端口RAM模型的混合端口配置在真正雙端口RAM模式中,RAM的輸出只能配置成read-during-write模式。這意味著在寫操作執(zhí)行過程中,通過A或B端口寫入到RAM的數(shù)據(jù),可以分別通過輸出端口A或B輸出。當(dāng)輸出寄存器被旁路時,新數(shù)據(jù)在其被寫入的時鐘的上升沿有效。當(dāng)兩個端口同時向同一個地址單元寫入數(shù)據(jù)時,寫沖突將會發(fā)生,這樣存入該地址單元的將是未知的。 要實現(xiàn)有效地向同一個地址單元寫入數(shù)據(jù),A端口和B端口時鐘的上升沿的到來之間必須滿足一個最小寫周期時間間隔。因為在寫時鐘的下降沿,
9、數(shù)據(jù)被寫入M4K RAM塊中,所以A端口時鐘的上升沿要比B端口時鐘的上升沿晚到來1/2個最小寫時鐘周期,如果不滿足這個時間要求,則存入此地址單元的數(shù)據(jù)無效。2.4 RAM用做移位寄存器在DSP應(yīng)用情況中,可以將內(nèi)嵌的RAM塊配置成移位寄存器,例如FIR濾波器、隨機(jī)數(shù)據(jù)產(chǎn)生器、多通道濾波器、自相關(guān)和互相關(guān)功能模塊等,在這些和其他需要本地存儲的DSP系統(tǒng)中,一般是利用觸發(fā)器來實現(xiàn),但是這種方法會耗費很多的邏輯單元,尤其是在實現(xiàn)較大的移位寄存器時。而利用內(nèi)嵌的RAM塊實現(xiàn)移位存儲器,既可以節(jié)約邏輯單元和布線資源,同時也可以提高效率。假設(shè)設(shè)計一個移位寄存器,輸入數(shù)據(jù)寬度為w,抽頭數(shù)為n,抽頭長度為m,
10、如圖4所示。在用RAM塊實現(xiàn)移位寄存器時,需要滿足w*n小于RAM塊的最大支持的數(shù)據(jù)寬度,w×n×m小于RAM塊的最大比特數(shù)。M4K的最大數(shù)據(jù)寬度為36bit,最大比特數(shù)為4608。而如果需要更大的移位寄存器可以用更多的RAM級聯(lián)實現(xiàn)。圖4 移位寄存器2.5 RAM用做ROMM4K RAM塊還可以配置成ROM,可以使用存儲器初始化文件(.mif)對ROM進(jìn)行初始化,在上電后使其內(nèi)部的內(nèi)容保持不變,即實現(xiàn)了ROM功能。2.6 RAM實現(xiàn)FIFO實際上,在FIFO的具體實現(xiàn)時,RAM的部分是采用簡單雙端口模式操作的,一個端口只寫數(shù)據(jù)而另一個端口只讀數(shù)據(jù),另外在RAM周圍加一些控
11、制電路,下面將詳細(xì)介紹由內(nèi)嵌RAM塊配置成的FIFO在FFT算法中的應(yīng)用。3、 FIFO在FFT算法中的應(yīng)用3.1 FFT簡介及其乒乓操作 快速傅立葉變換(FFT)在數(shù)字信號處理中具有非常重要的地位,并且有著廣泛的應(yīng)用,其中FFT的運算速度和占用的存儲單元是設(shè)計中重點考慮的方面,在實現(xiàn)FFT算法的各種方法中,基于FPGA的實現(xiàn)在速度、精度和性價比等方面具有不可比擬的優(yōu)勢3,其倍受設(shè)計者的親睞,其中FPGA內(nèi)嵌RAM使得FFT計算中數(shù)據(jù)的存儲變得方便快捷,同時采用內(nèi)嵌RAM塊能很好的完成“乒乓操作8”,進(jìn)而提高了運算速度?!捌古也僮鳌笔且粋€常常應(yīng)用于數(shù)據(jù)流控制的處理技巧,典型的乒乓操作方法如圖5
12、所示輸入數(shù)據(jù)流選擇單元MUX2選1數(shù)據(jù)緩沖模塊1數(shù)據(jù)緩沖模塊2輸出數(shù)據(jù)流選擇單元MUX2選1數(shù)據(jù)流運算處理模塊圖5 乒乓操作流程圖乒乓操作的處理流程描述如下:輸入數(shù)據(jù)流通過“輸入數(shù)據(jù)流選擇單元”,等時地將數(shù)據(jù)流分配到兩個數(shù)據(jù)緩沖模塊。數(shù)據(jù)緩沖模塊可以是任何存儲模塊,比較常用的存儲單元為雙口RAM(DPRAM)、單口RAM(SPRAM)和FIFO等。在第一個緩沖周期,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”。在第2個緩沖周期,通過“輸入數(shù)據(jù)流選擇單元”的切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊2”,與此同時,將“數(shù)據(jù)緩沖模塊1”緩存的第1個周期的數(shù)據(jù)通過“輸出數(shù)據(jù)流選擇單元”的選擇,送到“數(shù)據(jù)流運
13、算處理模塊”被運算處理。在第3個緩沖周期,通過“輸入數(shù)據(jù)流選擇單元”的再次切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”,與此同時,將“數(shù)據(jù)緩沖模塊2”緩存的第2個周期的數(shù)據(jù)通過“輸出數(shù)據(jù)流選擇單元”的切換,送到“數(shù)據(jù)流運算處理模塊”被運算處理。如此循環(huán),周而復(fù)始。 乒乓操作的最大特點是,通過“輸入數(shù)據(jù)流選擇單元”和“輸出數(shù)據(jù)流選擇單元”按節(jié)拍、相互配合的切換,將經(jīng)過緩沖的數(shù)據(jù)流沒有時間停頓地送到“數(shù)據(jù)流運算處理模塊”被運算和處理。把乒乓操作模塊當(dāng)做是一個整體,站在這個模塊的兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流是連續(xù)不斷的,沒有任何停頓,因此非常適合對數(shù)據(jù)口進(jìn)行流水線式處理。所以采用乒乓操作實現(xiàn)F
14、FT算法可以提高計算速度。3.1 FIFO存儲單元在FFT算法中的應(yīng)用FFT算法的處理過程開始于數(shù)據(jù)輸入過程,此過程中,采樣數(shù)據(jù)被讀入并保存在存儲器中;接下來用存儲的數(shù)據(jù)作FFT計算并輸出結(jié)果。存儲單元RAM是用來存儲輸入數(shù)據(jù)和中間運算結(jié)果的單元,每次蝶形運算都要經(jīng)由RAM讀寫輸入輸出數(shù)據(jù),在進(jìn)行下一級變換的同時,首先應(yīng)將結(jié)果回寫到讀出數(shù)據(jù)的RAM存貯器中,為加快FFT運算速度,構(gòu)造了雙端口FIFO RAM來加大數(shù)據(jù)的吞吐量,并實現(xiàn)乒乓操作,其輸入輸出共用一個時鐘,在時鐘的下降沿寫入數(shù)據(jù),上升沿讀出數(shù)據(jù)。雙端口FIFO RAM可配置在片內(nèi)或片外。內(nèi)置RAM是FPGA的一種新增資源。將RAM設(shè)置
15、在FPAG內(nèi)部不存在驅(qū)動和pad延時問題,速度快且控制簡單,可提高系統(tǒng)的可靠性。為此,本設(shè)計應(yīng)用Atera FPGA的內(nèi)置RAM資源設(shè)計內(nèi)置RAM,提高系統(tǒng)總體速度和可靠性。以下介紹FIFO的具體實現(xiàn)過程。4、 FIFO的實現(xiàn)及其仿真圖Altera公司提供了強(qiáng)大而又便捷的QuartusII和MegaWizard Plug-In Manager工具,可以幫助設(shè)計者簡單快捷地實現(xiàn)FIFO存儲器。啟動QuartusII軟件中MegaWizard Plug-In Manager工具,并選擇plm_fifo,如圖5所示,然后根據(jù)設(shè)計要求,按照向?qū)нM(jìn)一步設(shè)計各個參數(shù),最后形成如圖6所示的模塊,再添加必要的
16、輸入輸出引腳,即完成了FIFO的初步設(shè)計。從上述過程可以看到,Altera公司提供的QuartusII軟件在實現(xiàn)內(nèi)嵌FIFO功能上具有方便快捷的特點,可以加快整個設(shè)計的速度,并保證了設(shè)計的正確性。圖5 MegaWizard工具有plm_fifo 模塊圖6 QuartusII軟件中實現(xiàn)的FIFO模塊 為了驗證其是否符合設(shè)計要求,對其進(jìn)行仿真,得到如圖7所示的圖形。由圖7可以看到,上面設(shè)計的存儲器符合FIFO存儲器的要求,符合FFI算法的實現(xiàn)中對存儲器的要求。圖7 FIFO存儲器仿真圖5、小結(jié)本文總結(jié)了Altera公司FPGA內(nèi)嵌塊RAM的不同配置方法,并詳細(xì)介紹了每種配置方法的特點,同時以由內(nèi)嵌RAM塊實現(xiàn)的FIFO存儲器在FFT算法中的應(yīng)用為例,詳細(xì)的介紹了FIFO存儲器的具體實現(xiàn)過程,并對FFT算法中利用FIFO存儲器實現(xiàn)的乒乓操作進(jìn)行了說明,最后給出了FIFO存儲器的仿真圖。參考文獻(xiàn):1 EDA先鋒工作室,Altera FPGA/CPLD設(shè)計(基礎(chǔ)篇),北京,人民郵電出版社,20052 劉嘉新,付金霞,蘇健民,用FPGA實現(xiàn)快速傅立葉變換,信息技術(shù),2006年第2期3 孫志堅,劉學(xué)梅,在FPGA中實現(xiàn)高速FFT算法的研究,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 16520:2025 EN Tourism and related services - Restaurants and catering - Vocabulary
- 2024年環(huán)境污染治理技術(shù)與工程合同
- 2024年特許連鎖合同:美容護(hù)膚品牌連鎖經(jīng)營
- 船舶英語課程設(shè)計
- 液壓課程設(shè)計集成塊
- 統(tǒng)計表微課程設(shè)計
- 箱蓋機(jī)械制造課程設(shè)計
- 文科課程設(shè)計個人日志
- 背景圖高級課程設(shè)計
- 物體旋轉(zhuǎn)課程設(shè)計思路
- 中國古代文學(xué)史PPT完整PPT完整全套教學(xué)課件
- (完整版)人教版高中物理新舊教材知識對比
- 最好用高速公路機(jī)電維修手冊
- 家庭管理量表(FaMM)
- 土默特右旗高源礦業(yè)有限責(zé)任公司高源煤礦2022年度礦山地質(zhì)環(huán)境年度治理計劃
- 【金屬非金屬礦山(地下礦山)安全管理人員】考題
- 神經(jīng)外科手術(shù)的ERAS管理策略
- mt煤礦用氮氣防滅火技術(shù)
- ASTM-B117-16-鹽霧實驗儀的標(biāo)準(zhǔn)操作規(guī)程(中文版)
- 【超星爾雅學(xué)習(xí)通】《老子》《論語》今讀網(wǎng)課章節(jié)答案
- 配電箱采購技術(shù)要求
評論
0/150
提交評論