FPGA數字訊號處理基礎 使用HLS生成訊號

2021-10-25 10:00:44 字數 2941 閱讀 4288

hls 是xilinx推出的高層次綜合工具,可以用來加速演算法的設計。我在之前,用這玩意兒做了些簡單的影象演算法的處理的,感覺還是比手擼verilog**要來的快一點,正好現在在學習數字訊號處理,先拿hls來進行一些簡單的演算法驗證還是可以的。

產生正余弦訊號的波形,其中取樣頻率40mhz,正余弦的頻率為1.25mhz。生成將乙個週期內的正余弦資料進行儲存。

clear all; close all; clc;

fs =40*

10^6;

%取樣頻率

fcarrier =

1.25*10

^6;%載波速率

fsymbol =

100*19^

3;%符號速率

t =0

: fcarrier/fs :

1- fcarrier/fs;

% 乙個週期內的的訊號

y1 =

255*

sin(

2*pi*t)

;y2 =

255*

cos(

2*pi*t)

;y1 =

round

(y1)

;y2 =

round

(y2)

;fid =

fopen

('./rom.txt'

,'w+');

%開啟乙個檔案並寫入

fprintf

(fid,

'%d ,'

, y1)

;fprintf

(fid,

'\r\n');

fprintf

(fid,

'%d ,'

, y2)

;subplot

(211);

plot

(t,y1)

;title

('正弦訊號');

subplot

(212);

plot

(t,y2)

;title

('余弦訊號'

先把套路搞起來,hls的主要步驟就是c**,c綜合,c-rtl的聯合**

c**就是對c**進行**,比如自己寫了乙個c的演算法函式的實現,可以先給乙個c的激勵,來測試演算法是否正確。c**通過後,就可以進行c綜合。

c綜合就是把c**通過在hls新增約束,最終能夠對應上fpga內部的資源。同時能夠生成電路上對應的介面。

c-rtl cosimulation就是通過c**的**,和rtl電路進行聯合的**。這個過程,就和在fpga開發中進行**是類似的。

首先搞個頭檔案,這裡面引入比較重要的資料型別ap_int.h這個標頭檔案。在c/c++當中,儲存資料都是以位元組為單位的,因此,乙個資料最少就需要使用8bit來表示。在fpga中,可以對這個進行更加靈活的表示,位寬可以是任意的,這個「ap_int.h」就是這麼乙個可以自定義位寬的標頭檔案。通過模板的形式,傳遞模板引數,生成不同的資料型別。

#ifndef __ask_tx_h_

#define __ask_tx_h_

#include

"ap_int.h"

void

ask_mod

(ap_uint<

1> symbol, ap_int<

16>

*sin, ap_int<

16>

*cos)

;#endif

這個實現的檔案,就是實現整個演算法模組的主要部分。通過hls的directive,新增對應的約束,可以調節介面的型別,時序的優化,內部資源的占用等等。。。

#include

"tx_ask.h"

void

ask_mod

(ap_uint<

1> symbol, ap_int<

16>

*sin, ap_int<

16>

*cos)

;#pragma hls resource variable=sin_table core=rom_1p_bram latency=1

ap_int<

16> cos_table[32]

=;#pragma hls resource variable=cos_table core=rom_1p_bram latency=1

if(symbol ==1)

else

// counter self increase

counter +=1

;// clear the counter

if(counter ==32)

}

**比較簡單啊,就是產生一些符號,然後呼叫前面的函式,實現不同波形的輸出。

#include

"tx_ask.h"

intmain()

; ap_int<

16> sin, cos;

for(

int i =

0; i <

64; i ++)}

return0;

}

最後就可以把**的結果拿出來看一看。

可以看到,當符號為1的時候,就產生了正余弦波形,為0的時候,就沒有正余弦產生。其實這個就有點ask調製那味兒了。

數字訊號處理

1.乙個切比雪夫i型模擬帶阻濾波器用下面的指標設計 通帶截止頻率為 和 阻帶截止頻率為 和 峰值通帶紋波是 最小阻帶衰減為 相應的模擬低通濾波器的頻帶截止頻率和階次是多少?帶阻濾波器的階次是多少?用matlab函式cheblord來驗證濾波器階次結果 寫出程式關鍵步驟 matlab驗證 n 3 fs...

數字訊號處理

一 訊號處理的典型過程 1 模擬濾波 x t xa t 觀測訊號經過前置模擬器ha s 去掉一些帶外成分和干擾 2 取樣 xa t xa nt 以取樣週期t對xa t 進行取樣,得到時域離散訊號xa nt 將時間離散化 3 a d 變換 xa nt x n 把原先訊號幅值連續變換 量化幅值 將幅值離...

數字訊號處理與數字訊號處理器

數字訊號處理與數字訊號處理器 數字訊號處理 digital signal processing,dsp 與數字訊號處理器 digital signal processor,dsp 兩者的縮寫都是dsp,但凡是電子資訊類專業的同學,都知道dsp是這個學科最重要的專業基礎課程之一,但實際上,很多朋友對這...