作者:桂。
時間:2018-05-07 19:11:23
鏈接:http://www.cnblogs.com/xingshansi/p/9004492.html
前言
該文私用,不定期更新,主要匯總記錄Xilinx常用的基本模塊,列出清單,方便查閱。
關於原語,主要參考【原語時序為什么好,一個猜想是:我吃不同的食物,要去不同的餐廳,跑的路程自然多一些;而如果我有這些原材料,自己動手,費點功夫但跑的路少,路程長短對應時間長度、對應時序特性,這個是自己想當然,需要結合CLB特性。 此處待驗證】:
一、模塊匯總
- 1- adder
路徑:印象筆記-1/0019/001
描述:三個數加、減混合運算
- 2- rtldelay
路徑:印象筆記-1/0019/002
描述:數據延拍,延遲delayval-1拍
- 3- addsub_premitive
路徑:印象筆記-1/0019/003
描述:兩個數的加、減運算(實數)
- 4- abs
路徑:*/003
描述:求絕對值(實數),與addsub_premitive類似,符號位作為標志位,正數x = 0 + x,負數x = 0 - x,輸出即為絕對值。
- 5- selmax
路徑:*/004
描述:求兩個數據的最大值
- 6- amp_cal
路徑:*/005
描述:復數幅度近似估計。
借助復數幅值近似估計一文的思路,進行復數幅度的近似計算,其中以上幾個模塊,此處被調用。
- 7- neg_primitive
路徑:*/006
描述:求相反數-原語, 0 latency.
- 8- 常用延拍思路
路徑:*/007
描述:4種常用延拍思路
- 9- 復數乘法
路徑:*/008
描述:主要借鑒FFT節省資源的思路一文的思路,一個復數乘法需要3個乘法器。latency:0
乘法位寬的特性:
實數: 對於無符號數:n_bit x m_bit <= m+n_bit,有符號各添加1bit符號位
復數:有符號數,(n+1_bit x (m+1)_bit <= (m+n+2)_bit
output signed [2*width-1:0] outr; output signed [2*width-1:0] outi; assign outr = (ar-ai)*bi+(br-bi)*ar; assign outi = (ar-ai)*bi+(br+bi)*ai;
- 10- cplxmult_conj
路徑:*/009
描述:復數共軛相乘,與復數相乘類似,bi換做-bi即可。直接處理內部也是調用DSP48,此處采用IP核(DSP48)進行硬件描述。 latency:4 clocks
關於DSP48,可參考:基礎004_V7-DSP Slice,各IP核具體參數設置,參考印象筆記*/009截圖。
- 11- cplxdelay
路徑:*/010
描述: 復數數據移位,本質上:1)[實部, 虛部]拼成一個長數據,直接按實數移位的思路移位即可; 2)實部、虛部分別按照實數移位思路移位即可; 這里單獨列出來,主要是改用shift_ram進行移位操作,思路上並無新意。 shift RAM參數設置可參考印象筆記*/010截圖。depth即為延遲的拍數。
wire [datwidth*2-1:0] din = {din_i, din_r};
- 12- CORDIC
路徑:*/011
描述:CORDIC計算幅度、相位,cordic原理可參考:Cordic算法簡介。
主要分為:象限判定(-pi/2 ~ pi/2,因此根據xin符號位判定即可。)
其中(補碼數據讀取參考:FIR基本型仿真_03)
x_new = x+y*2^-i;%此處移位寄存器實現 y_new = y-x*2^-i;%此處移位寄存器實現可借助3- addsub_premitive模塊求解,標志位由y符號位給出,generate迭代即可。
印象筆記目錄:
二、原語簡介
primitive 與 macro:
A primitive is the most basic FPGA element that can be instantiated with out any extra logic.
A macro is basically a combination of different primitives that requires logic beyond the most basic components. Primitives can be instantiated while macros cannot be instantiated in HDL.
We can add a macro to a schematic and generate the HDL so you can view combination of logic inside of the macro. We can then use this HDL in our design.
以一個基本的加法器舉例:
查看schematic:
其中LUT為查找表,實現邏輯功能,由於LUT是基本單元,可調用原語,以LUT3為例:
原語在hdl.pdf或language template可查看: