Xilinx 經常使用模塊彙總(verilog)【01】

做者:桂。html

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

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


前言ide

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

關於原語,主要參考【原語時序爲何好,一個猜測是:我吃不一樣的食物,要去不一樣的餐廳,跑的路程天然多一些;而若是我有這些原材料,本身動手,費點功夫但跑的路少,路程長短對應時間長度、對應時序特性,這個是本身想固然,須要結合CLB特性。 此處待驗證】:this

7series_scm.pdfspa

7series_hdl.pdfcode

1、模塊彙總component

  • 1- adder

路徑:印象筆記-1/0019/001htm

描述:三個數加、減混合運算

  • 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迭代便可。

 印象筆記目錄:

2、原語簡介

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

相關文章
相關標籤/搜索