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是這個學科最重要的專業基礎課程之一,但實際上,很多朋友對這...