Xilinx 常用模塊匯總(verilog)【01】


作者:桂。

時間:2018-05-07  19:11:23

鏈接:http://www.cnblogs.com/xingshansi/p/9004492.html 


前言

該文私用,不定期更新,主要匯總記錄Xilinx常用的基本模塊,列出清單,方便查閱。

關於原語,主要參考【原語時序為什么好,一個猜想是:我吃不同的食物,要去不同的餐廳,跑的路程自然多一些;而如果我有這些原材料,自己動手,費點功夫但跑的路少,路程長短對應時間長度、對應時序特性,這個是自己想當然,需要結合CLB特性。 此處待驗證】:

7series_scm.pdf

7series_hdl.pdf

一、模塊匯總

  • 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可查看:

                     
 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM