如何在PYNQ中創(chuàng)建FIR濾波器并與之交互
掃描二維碼
隨時(shí)隨地手機(jī)看文章
FPGA設(shè)計(jì)的關(guān)鍵要素之一是數(shù)字濾波器的實(shí)現(xiàn),事實(shí)上,去年我們研究了如何使用帶有Zmods的eclipse Z7板來實(shí)現(xiàn)數(shù)字濾波器。
但是,該項(xiàng)目需要使用信號(hào)發(fā)生器等形式的外部硬件。我認(rèn)為創(chuàng)建一個(gè)使用PYNQ的示例可能是一個(gè)好主意,它使我們能夠使用Python生成任意信號(hào),過濾它并繪制結(jié)果波形。
在使用PYNQ的項(xiàng)目中,我們將能夠可視化輸入和輸出波形。
Vivado設(shè)計(jì)
為了開始這個(gè)項(xiàng)目,我們將在Vivado實(shí)現(xiàn)一個(gè)設(shè)計(jì)。本設(shè)計(jì)將FIR編譯器連接到可編程邏輯中的DMA。這將允許我們通過FIR濾波器傳輸大量的樣本。
為此,我們需要以下IP塊
?Zynq ultrascale + MPSOC處理系統(tǒng)
?中斷控制器
?AXI直接存儲(chǔ)器存取
?冷杉編譯器
?智能互聯(lián)
?AXI互連
?處理器復(fù)位系統(tǒng)
?Concat塊
這些塊需要按如下方式配置
Zynq UltraScale+ MPSoC處理系統(tǒng)-為Avnet ZU板配置,在此IP塊上,我還啟用了saxi HPC連接,以及PL PS IRQ
對(duì)于FIR編譯器,我將實(shí)現(xiàn)一個(gè)簡(jiǎn)單的低通濾波器,采樣率為100 Msps,時(shí)鐘速率為100MHz。這意味著我們將能夠處理高達(dá)50兆赫的信號(hào)。
為了設(shè)計(jì)濾波器,我再次使用TFilter設(shè)計(jì)低通濾波器,通帶定義為0-25MHz,阻帶定義為30MHz以上。
生成的系數(shù)可以復(fù)制到FIR編譯器中
由于我們正在使用16位輸入,輸出將增長(zhǎng)到33位,然而,為了確保DMA更容易工作,我們將截?cái)嘟Y(jié)果為32位。
如果我們?cè)敢?,我們可以修改設(shè)計(jì),使過濾器系數(shù)能夠在飛行中上傳。
由于我們正在使用DMA,我們需要確保FIR編譯器AXI流接口具有正確的信號(hào)數(shù)量。我們特別需要DMA的TLast信號(hào)。
當(dāng)涉及到DMA時(shí),我們需要配置它以支持最多26位的緩沖區(qū)長(zhǎng)度寄存器。同時(shí)確保讀通道是16位,寫通道是32位。
完成的解決方案應(yīng)該如下圖所示(TCL腳本附屬于下面的項(xiàng)目)
圖完成后,我們可以構(gòu)建獲得硬件切換(HWH)文件和位流的項(xiàng)目。
PYNQ
要開始創(chuàng)建筆記本,我們首先需要獲取ZU板的PYNQ映像(在這里可用),并將ISO映像寫入SD卡。一旦SD卡準(zhǔn)備好了,我們就可以啟動(dòng)主板了。
通過將ZU板連接到以太網(wǎng),我們可以將該板映射為網(wǎng)絡(luò)位置,并將生成的HWH和位文件傳輸?shù)絑U板。
確保使用不同的憑據(jù)檢查連接,密碼是xilinx, xilinx。
確保當(dāng)您上傳比特和HWH時(shí),它們的名稱相同。
筆記本創(chuàng)造
為了開始創(chuàng)建筆記本,我們將完全在python中執(zhí)行過濾。
這將顯示下面的信號(hào)
如果我們對(duì)這個(gè)信號(hào)做FFT
我們可以在FFT中看到信號(hào)的頻率
為了在硬件上執(zhí)行過濾,我們可以使用下面的代碼,而不是這個(gè)信號(hào)應(yīng)該通過過濾器。
我們將使用pynq allocate來定義發(fā)送和接收緩沖區(qū)所需的連續(xù)內(nèi)存分配。我們將使用上面生成的相同信號(hào)
繪制FFT也給出
現(xiàn)在讓我們生成一個(gè)應(yīng)該被過濾掉的信號(hào)
如果我們要運(yùn)行過濾器
運(yùn)行硬件示例提供
總結(jié)
本項(xiàng)目展示了如何使用PYNQ輕松學(xué)習(xí)FIR濾波器,我們可以使用PYNQ環(huán)境創(chuàng)建簡(jiǎn)單的信號(hào)處理演示。
本文編譯自hackster.io