性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

FPGA and ICer
認(rèn)證:普通會(huì)員
作者動(dòng)態(tài)
GD(兆易創(chuàng)新)系列FLASH進(jìn)行FPGA和ZYNQ配置固化相關(guān)操作
3星期前
數(shù)字設(shè)計(jì)小思 - 談?wù)劮抢硐霑r(shí)鐘的時(shí)鐘偏差
3星期前
電賽信號(hào)類經(jīng)驗(yàn)總結(jié)-從零基礎(chǔ)到省一不是夢(mèng)(超多電賽程序、電路資料分享)
09-08 10:52
ZYNQ-BOOT介紹與程序固化
08-28 09:14
ZYNQ-搭建實(shí)現(xiàn)helloworld
08-26 10:23

數(shù)字信號(hào)處理-04- FPGA常用運(yùn)算模塊-除法器

寫在前面

本文是本系列的第四篇,本文主要介紹FPGA常用運(yùn)算模塊-除法器,xilinx提供了相關(guān)的IP以便于用戶進(jìn)行開發(fā)使用。

除法器

除法器生成器IP 創(chuàng)建了一個(gè)基于基數(shù) 2 非恢復(fù)除法或具有預(yù)分頻的高基數(shù)除法的整數(shù)除法電路。  Radix-2 算法利用 FPGA 邏輯來實(shí)現(xiàn)一系列吞吐量選項(xiàng),包括單周期,而高基數(shù)算法在較低吞吐量下利用 DSP 切片,但通過重用來減少資源。

該IP符合 AXI4-Stream 的接口。操作數(shù)最大為 64 位寬的整數(shù)除法。提供Radix-2、LUTMult 和High Radix 實(shí)現(xiàn)算法以允許選擇資源和延遲權(quán)衡??蛇x操作數(shù)寬度、同步控制和可選延遲??蛇x的除以零檢測(cè)。

三種除法器實(shí)現(xiàn)方式

LUTMult

除數(shù)倒數(shù)的簡(jiǎn)單查找估計(jì),后跟乘數(shù)。 由于倒數(shù)估計(jì)中需要偏差,因此僅支持余數(shù)輸出類型。 如果用于創(chuàng)建小數(shù)輸出,此偏差會(huì)引入偏移(錯(cuò)誤)。 推薦用于小于或等于 12 位的操作數(shù)寬度。 此實(shí)現(xiàn)方式使用 DSP Slice、塊 RAM 和少量 FPGA 邏輯原語(寄存器和 LUT)。 對(duì)于可以使用 Radix2 或 LUTMult 選項(xiàng)的操作數(shù)寬度,由于使用了 DSP 和塊 RAM 原語,LUTMult 解決方案提供了使用較少 FPGA 邏輯資源的解決方案。

該實(shí)現(xiàn)方式特點(diǎn)如下:

  • 提供了帶有整數(shù)余數(shù)的商;
  • 可以使用流水線并行架構(gòu)以提高吞吐量;
  • 可配置延遲;
  • 2 到 17 位的分頻寬度;
  • 2 到 12 位的除數(shù)寬度(被除數(shù)寬度和除數(shù)寬度之和限制為 23 位);
  • 獨(dú)立的除數(shù)和除數(shù)位寬;
  • 使用單個(gè)時(shí)鐘的完全同步設(shè)計(jì);
  • 支持無符號(hào)或二進(jìn)制補(bǔ)碼有符號(hào)數(shù)。

Radix-2

使用整數(shù)操作數(shù)的基數(shù) 2 非恢復(fù)整數(shù)除法,允許生成小數(shù)或整數(shù)余數(shù)。 對(duì)于小于 16 位左右的操作數(shù)寬度或需要高吞吐量的應(yīng)用程序,建議使用該種實(shí)現(xiàn)方式。 實(shí)現(xiàn)使用 FPGA 邏輯原語(寄存器和 LUT)。Radix2 解決方案不使用 DSP 或塊 RAM 原語,因此當(dāng)其他地方需要這些原語時(shí),建議使用此實(shí)現(xiàn)。

該實(shí)現(xiàn)方式特點(diǎn)如下:

  • 提供整數(shù)或小數(shù)余數(shù)的商;
  • 流水線并行架構(gòu)以提高吞吐量;
  • 減少流水線大小與吞吐量可選;
  • 被除數(shù)寬度從 2 到 64 位;
  • 除數(shù)寬度從 2 到 64 位;
  • 獨(dú)立的被除數(shù)、除數(shù)和小數(shù)位寬;
  • 使用單個(gè)時(shí)鐘的同步設(shè)計(jì);
  • 支持無符號(hào)數(shù)或二進(jìn)制補(bǔ)碼有符號(hào)數(shù);
  • 可以實(shí)現(xiàn) 1/X(倒數(shù))功能。

High Radix

帶有預(yù)縮放的高基數(shù)除法。 對(duì)于大于 16 位左右的操作數(shù)寬度,建議這樣做。  此實(shí)現(xiàn)使用 DSP Slice 和 Block RAM。

該實(shí)現(xiàn)方式特點(diǎn)如下:

  • 通過預(yù)縮放啟用高基數(shù)除法;
  • 提供可選的商和小數(shù)輸出;
  • 可配置寬度、同步控制、可選延遲和除以零檢測(cè);
  • 使用 DSP Slices。

Divider Generator 內(nèi)核使用三種實(shí)現(xiàn)中的一種。  LUTMult 推薦用于非常小的操作數(shù)寬度、高吞吐量以及必須最小化切片使用的情況。 對(duì)于較小的操作數(shù)寬度、高吞吐量或必須最小化 DSP 切片使用的情況,建議使用 Radix-2 解決方案。 對(duì)于較大的操作數(shù)寬度,建議使用高基數(shù)解決方案。

三種實(shí)現(xiàn)方式延遲對(duì)比

分頻器內(nèi)核的延遲是 AXI4-Stream 配置參數(shù)和所選算法延遲的函數(shù)。 當(dāng) AXI4-Stream 模式設(shè)置為非阻塞且核心算法和吞吐量設(shè)置為每個(gè)時(shí)鐘周期輸入一個(gè)樣本時(shí),延遲僅是一個(gè)常數(shù)。 如果選擇了完整的 AXI4-Stream 行為。 這是因?yàn)?FIFO 用于管理此模式的數(shù)據(jù),并且 FIFO 的深度增加了延遲。

LUTMult

完全流水線化的 LUTMult 的延遲為 8。

Radix-2

完全流水線分頻器的延遲(內(nèi)核生成第一個(gè)有效輸出之前所需的啟用時(shí)鐘周期數(shù))是被除數(shù)位寬的函數(shù)。 如果需要小數(shù)輸出,則完全流水線延遲也是小數(shù)位寬的函數(shù)。 一般來說:

  • 對(duì)于整數(shù)余數(shù)除法器,完全流水線延遲的數(shù)量級(jí)為 M,其中 M 是商的寬度。
  • 對(duì)于分?jǐn)?shù)余數(shù)除法器,完全流水線延遲的數(shù)量級(jí)為 M + F,其中 F 是分?jǐn)?shù)輸出的寬度。

下表提供了用于分頻器選擇的完全流水線延遲公式的列表。 通過完整的流水線,可以實(shí)現(xiàn)最大可能的性能。 當(dāng)每格時(shí)鐘數(shù)為 1 時(shí),可以手動(dòng)將延遲設(shè)置為介于 0 和表 2-1 中所示值之間的數(shù)字。 這允許以降低內(nèi)核可以計(jì)時(shí)的最大時(shí)鐘頻率為代價(jià)來減少內(nèi)核的延遲。 減少延遲會(huì)減少使用的寄存器數(shù)量,但 LUT 計(jì)數(shù)保持大致相同。

M = 被除數(shù)和商寬度,F(xiàn) = 小數(shù)寬度,A = AXI 接口的總延遲。

High Radix

表中位寬范圍為被除數(shù)和商寬度 + 分?jǐn)?shù)寬度。

表中行位寬范圍為被除數(shù)和商寬度 + 分?jǐn)?shù)寬度。

三種實(shí)現(xiàn)方式吞吐量對(duì)比

LUTMult

此解決方案始終支持全吞吐量。

Radix-2

Clocks per Division 參數(shù)允許對(duì)吞吐量與資源進(jìn)行一系列選擇。當(dāng) Clocks per Division 設(shè)置為 1 時(shí),內(nèi)核是完全流水線化的,因此每個(gè)時(shí)鐘周期的最大吞吐量為一個(gè)分頻,但使用的資源最多。  Clock per Division 設(shè)置為 2、4 和 8,對(duì)于較小的內(nèi)核尺寸,這些相應(yīng)的因素會(huì)降低吞吐量。AXI 接口為非阻塞提供 0 的額外延遲,無輸出線程的阻塞為 1,輸出線程為阻塞 (m_axis_dout_tready) 為 3。但是,當(dāng)選擇阻塞模式時(shí),延遲會(huì)隨運(yùn)行時(shí)間而變化。

High Radix

迭代過程是作為循環(huán)來實(shí)現(xiàn)的,以減少資源。 這意味著必須推遲新輸入,直到在迭代電路中完成先前的計(jì)算。 因此,最大可能的吞吐量是每個(gè)時(shí)鐘 1/N 分頻,其中 N 是所需的迭代次數(shù)。 然而,為了達(dá)到這個(gè)最大吞吐量,輸入可能需要是突發(fā)的。 這是因?yàn)榈婵梢酝ㄟ^管道的每個(gè)階段進(jìn)行流水線化,為隔行分割提供一個(gè)輪播位置。

添加 AXI4-Stream 接口后,平均吞吐量保持不變。 阻塞模式為數(shù)據(jù)提供了 FIFO 緩沖元素,因此無法對(duì)內(nèi)核何時(shí)準(zhǔn)備好接受新數(shù)據(jù)進(jìn)行確定性預(yù)測(cè)。 對(duì)于 NonBlocking 模式,時(shí)序更可預(yù)測(cè)。  Vivado IDE 中的分頻器生成器接口提供分頻器以恒定間隔連續(xù)接受輸入的速率(N 中的 1)的反饋。 這在接口的吞吐量字段上表示,并表示為每 N 個(gè)啟用的時(shí)鐘周期 1 個(gè)輸入。

IP核圖示及端口介紹

IP核圖示如下圖所示:

運(yùn)算方式區(qū)別

LUTMult

此參數(shù)化解決方案將M位寬的變量除數(shù)除以N位寬的變量除數(shù)。輸出由商和整數(shù)余數(shù)組成。除法的結(jié)果是M位寬的商和N位寬的整數(shù)余數(shù)。

當(dāng)選擇有符號(hào)運(yùn)算時(shí),所有操作數(shù)和結(jié)果都使用兩個(gè)補(bǔ)號(hào),但會(huì)導(dǎo)致結(jié)果的大小減少一位。

LUTMult解決方案支持可選的零除輸出。對(duì)于除零,商和余數(shù)結(jié)果是未定義的。LUTMult解決方案始終支持全吞吐量(每個(gè)時(shí)鐘周期一個(gè)結(jié)果)。延遲可以配置為完全流水線所需的最大值(超過該值,進(jìn)一步的寄存器將無法提高性能)。由于LUTMult解使用倒數(shù)的常數(shù)有限精度估計(jì)乘以被除數(shù),從而獲得結(jié)果,因此除數(shù)的最大寬度是被除數(shù)寬度的函數(shù)。操作數(shù)寬度之和限制為23位。就商和余數(shù)的符號(hào)而言,LUTMult解決方案以與Radix2解決方案相同的方式處理負(fù)操作數(shù)。

Radix-2

此參數(shù)化解決方案將M位寬的變量除數(shù)除以N位寬的變量除數(shù)。輸出由商和整數(shù)余數(shù)或分?jǐn)?shù)結(jié)果(商繼續(xù)超過二進(jìn)制點(diǎn))組成。在整數(shù)余數(shù)情況下,除法的結(jié)果是商的M位寬字段和整數(shù)余數(shù)的N位寬字段。對(duì)于帶整數(shù)余數(shù)的有符號(hào)模式,商和余數(shù)的正負(fù)也對(duì)應(yīng)于下式。

在分?jǐn)?shù)情況下,結(jié)果是商的M位寬字段,結(jié)果的分?jǐn)?shù)部分為F位寬字段。

當(dāng)選擇有符號(hào)運(yùn)算時(shí),所有操作數(shù)和結(jié)果都使用一個(gè)2補(bǔ)符號(hào)位,從而使結(jié)果的大小減少一位。

對(duì)于帶分?jǐn)?shù)輸出的帶符號(hào)模式,在商和分?jǐn)?shù)字段中都有符號(hào)位。對(duì)于除零,商、余數(shù)和分?jǐn)?shù)結(jié)果未定義。IP是高度流水化的。核心的吞吐量是可配置的,可以從每個(gè)分區(qū)1個(gè)時(shí)鐘周期減少到每個(gè)分區(qū)2、4或8個(gè)時(shí)鐘周期,以減少資源??梢元?dú)立設(shè)置被除數(shù)和除數(shù)的位寬度。商的位寬度等于被除數(shù)的位寬度。整數(shù)余數(shù)的位寬度等于除數(shù)的寬度。對(duì)于分?jǐn)?shù)輸出,余數(shù)位寬度與被除數(shù)和除數(shù)無關(guān)。核心處理2到64位的數(shù)據(jù)范圍,用于被除數(shù)、除數(shù)和分?jǐn)?shù)輸出。

除法器可用于實(shí)現(xiàn)X的倒數(shù);這就是1/X函數(shù)。為此,將被除數(shù)位寬度設(shè)置為2,并選擇分?jǐn)?shù)模式。然后,對(duì)于無符號(hào)或有符號(hào)運(yùn)算,被除數(shù)輸入都綁定到01,并且X值通過除數(shù)輸入提供。上電復(fù)位或ARESETn后,IP的輸出商和分?jǐn)?shù)的零,直到出現(xiàn)新結(jié)果。

High Radix Solution

高基數(shù)實(shí)現(xiàn)在采用加速高基數(shù)除法算法之前,通過預(yù)縮放操作數(shù)執(zhí)行除法。該設(shè)計(jì)是完全流水線的最大時(shí)鐘頻率。首先,對(duì)除數(shù)進(jìn)行歸一化,然后對(duì)其倒數(shù)進(jìn)行估計(jì)。兩個(gè)操作數(shù)都乘以此估計(jì)值,使除數(shù)更接近1。預(yù)刻度的精度和精確度決定了在每次后續(xù)迭代中可以解析的商位數(shù)。預(yù)縮放除數(shù)接近于1的事實(shí)允許新商位的估計(jì)正好是上一次迭代剩余的頂部位。迭代操作本身以進(jìn)位保存表示法執(zhí)行,因此沒有長(zhǎng)進(jìn)位鏈限制性能。由于只使用剩余的頂部位作為估計(jì)值,且除數(shù)不完全為1,因此每次迭代的內(nèi)部結(jié)果中都會(huì)出現(xiàn)錯(cuò)誤;因此,在每次迭代中解析的商位與先前解析的位略微重疊,以允許在后續(xù)迭代中校正錯(cuò)誤。 由于迭代計(jì)算由進(jìn)位-保存乘法和減法組成,因此它非常適合于DSP(乘法-加法)切片,從而提供高效、低延遲的迭代。

協(xié)議描述

該內(nèi)核遵循AXI4流規(guī)范。

AXI4-Stream注意事項(xiàng)

轉(zhuǎn)換為AXI4流接口,使得接口協(xié)議更加標(biāo)準(zhǔn)并增強(qiáng)了IP的互操作性。除aclk、ACLKEN和ARESETn等常規(guī)控制信號(hào)外,除法器發(fā)生器的所有輸入和輸出均通過AXI4流通道傳輸。通道由tvalid和tdata always以及幾個(gè)可選端口和字段組成。在除法器中,支持的可選端口為tready、tlast和tuser。tvalid和tready一起執(zhí)行握手以傳輸消息,其中有效負(fù)載為tdata、tuser和tlast。除法器對(duì)tdata中包含的操作數(shù)進(jìn)行操作,并在輸出通道的tdata中輸出結(jié)果。除法器不使用input、tuser和tlast,但提供了以與tdata延遲傳輸?shù)墓δ堋?/p>

除法器使用輸出tuser保持除法零(divide_by_zero)指示信號(hào)。這種將tlast和tuser從輸入傳遞到輸出的功能旨在簡(jiǎn)化系統(tǒng)中除法器的使用。例如,除法器可能對(duì)流式分組數(shù)據(jù)進(jìn)行操作。在此示例中,可以將核心配置為通過打包數(shù)據(jù)通道的tlast,從而減小工作量。

基本握手協(xié)議

下圖顯示了AXI4流通道中的數(shù)據(jù)傳輸。

tvalid 由通道的源(主)端驅(qū)動(dòng),而tready 由接收器(從)驅(qū)動(dòng)。  tvalid 表示有效載荷字段(tdata、tuser 和 tlast)中的值有效。  tready 表示從機(jī)已準(zhǔn)備好接收數(shù)據(jù)。 當(dāng)循環(huán)中 tvalid 和treaty 都為TRUE 時(shí),就會(huì)發(fā)生傳輸。master 和 slave 分別為下一次傳輸適當(dāng)?shù)卦O(shè)置了 tvalid 和tready。

非阻塞模式

除法器提供了一種模式,用于簡(jiǎn)化從該內(nèi)核以前的非 AXI 版本遷移。 非阻塞用于表示一個(gè)輸入通道上缺少數(shù)據(jù)不會(huì)導(dǎo)致另一通道上的傳入數(shù)據(jù)被緩沖。 因?yàn)樵?NonBlocking 模式下,輸出通道沒有不穩(wěn)定的信號(hào)。 并非總是需要 AXI4-Stream 的完整流量控制。 使用 FlowControl 參數(shù)或用戶界面字段選擇阻塞或非阻塞行為。Blocking 或 NonBlocking 的選擇適用于整個(gè)IP,而不是單獨(dú)的每個(gè)通道。 通道仍然具有非可選的 tvalid 信號(hào),這類似于采用 AXI4-Stream 之前許多內(nèi)核上的新數(shù)據(jù) (ND) 信號(hào)。 由于沒有阻止數(shù)據(jù)流的功能,內(nèi)部實(shí)現(xiàn)大大簡(jiǎn)化,因此這種模式需要的資源更少。 對(duì)于希望從 AXI 之前的版本遷移到此版本且更改最少的用戶,建議使用此模式。

當(dāng)所有當(dāng)前的輸入通道都接收到一個(gè)有效的 tvalid(并且tready被斷言),那么這個(gè)操作是有效的。這是為了允許從 v3.0 進(jìn)行最小的遷移。如果一個(gè)通道接收到 tvalid 而另一個(gè)沒有接收,則不會(huì)發(fā)生操作,即使存在和斷言tready也是如此。 因此,與完全符合 AXI4-Stream 的阻塞模式不同,在非阻塞模式下可以忽略單個(gè)通道上的有效事務(wù)。 出于性能考慮,ARESETn 是在內(nèi)部的,這會(huì)將其操作延遲一個(gè)時(shí)鐘周期。效果是在取消置位 ARESETn 之后的循環(huán)中,內(nèi)核仍然復(fù)位并且不接受輸入。  tvalid 在此周期的輸出通道上也處于非活動(dòng)狀態(tài)。

上圖顯示了操作中的非阻塞模式。 內(nèi)核的延遲為零。 正如 s_axis_dividend_tready 和 s_axis_divisor_tready 所指示的,它們最終是相同的信號(hào),內(nèi)核可以每三個(gè)周期接受一次數(shù)據(jù)。 由于 s_axis_divisor_tvalid 被置低,被除數(shù)通道中的數(shù)據(jù) A1 被忽略。 數(shù)據(jù)輸入 A2 和 B1 被接受,因?yàn)?tvalids 和 traily 都被斷言。

阻塞模式

術(shù)語“阻塞”意味著每個(gè)通道都在緩沖數(shù)據(jù)以供使用。  AXI4-Stream 的完整流控制有助于系統(tǒng)設(shè)計(jì),因?yàn)閿?shù)據(jù)流是自我調(diào)節(jié)的。使用 FlowControl 參數(shù)選擇阻塞或非阻塞行為。 背壓(tready)的存在可以防止數(shù)據(jù)丟失,因此只有在下游數(shù)據(jù)路徑準(zhǔn)備好處理數(shù)據(jù)時(shí)才會(huì)傳播數(shù)據(jù)。

除法器有兩個(gè)輸入通道和一個(gè)輸出通道。 當(dāng)所有輸入通道都有可用的有效數(shù)據(jù)時(shí),就會(huì)發(fā)生操作,結(jié)果在輸出上可用。 如果由于 m_axis_dout_tready 為低而阻止輸出裝載數(shù)據(jù),則數(shù)據(jù)會(huì)在內(nèi)部的輸出緩沖區(qū)中累積。當(dāng)這個(gè)輸出緩沖器快滿時(shí),內(nèi)核停止進(jìn)一步的操作。 這可以防止輸入緩沖區(qū)為新操作裝載數(shù)據(jù),以便在輸入新數(shù)據(jù)時(shí)填充輸入緩沖區(qū)。 當(dāng)輸入緩沖區(qū)填滿時(shí),它們各自(s_axis_divisor_tready 和 s_axis_dividend_tready)被置為無效以防止進(jìn)一步輸入。

從某種意義上說,這兩個(gè)輸入通道是相互關(guān)聯(lián)的,每個(gè)通道都必須先接收經(jīng)過有效的數(shù)據(jù),然后才能繼續(xù)進(jìn)行操作。 因此,有一種額外的阻塞機(jī)制,其中一個(gè)輸入通道不接收有效數(shù)據(jù),而另一個(gè)接收。 在這種情況下,經(jīng)過有效的數(shù)據(jù)存儲(chǔ)在通道的輸入緩沖區(qū)中。

在這種情況下,經(jīng)過有效的數(shù)據(jù)存儲(chǔ)在通道的輸入緩沖區(qū)中。 在這種情況的幾個(gè)循環(huán)之后,接收數(shù)據(jù)的通道的緩沖區(qū)被填滿并且該通道的tready被取消斷言,直到饑餓的通道接收到一些數(shù)據(jù)。

上圖顯示了阻塞行為和背壓。 通道 s_axis_dividend 上的第一個(gè)數(shù)據(jù)與通道 s_axis_divisor 上的第一個(gè)數(shù)據(jù)配對(duì),第二個(gè)與第二個(gè)數(shù)據(jù)配對(duì),依此類推。 這展示了“阻塞”的概念。 概念上使用通道名稱 s_axis_dividend 和 s_axis_divisor。 兩者都可以表示除數(shù)或被除數(shù)通道。

并且在圖中進(jìn)一步顯示了數(shù)據(jù)輸出是如何被延遲的,不僅是延遲,還有握手信號(hào) m_axis_dout_tready。 是背壓的。 輸出上的持續(xù)背壓以及輸入上的數(shù)據(jù)可用性最終會(huì)導(dǎo)致核心緩沖區(qū)飽和,從而導(dǎo)致核心發(fā)出信號(hào),表明它無法再通過取消斷言來接受進(jìn)一步的輸入通道的tready信號(hào)。

這個(gè)例子中的最小延遲是兩個(gè)周期,但需要注意的是,Blocking 操作中的延遲并不是一個(gè)有用的概念。 一個(gè)重要的思想是每個(gè)通道都充當(dāng)一個(gè)隊(duì)列,確保每個(gè)通道上的第一個(gè)、第二個(gè)、第三個(gè)數(shù)據(jù)樣本與其他通道上的相應(yīng)樣本配對(duì)以進(jìn)行每次操作。

TDATA包

AXI4-Stream 接口中的遵循特定的命名法。 在該內(nèi)核中,操作數(shù)通過通道 tdata 端口傳入或傳出內(nèi)核。 為了簡(jiǎn)化協(xié)議的互操作性,如果需要時(shí),首先擴(kuò)展 tdata 中可以獨(dú)立使用的每個(gè)子字段,以適應(yīng) 8 位倍數(shù)的位字段。 對(duì)于輸出 DOUT 通道,結(jié)果字段符號(hào)擴(kuò)展到字節(jié)邊界。 由字節(jié)方向添加的位被內(nèi)核忽略并且不會(huì)導(dǎo)致額外的資源使用。

被除數(shù)和除數(shù)通道的 TDATA 結(jié)構(gòu)

輸入通道 Dividend 和 Divisor 僅在其 tdata 字段中攜帶其操作數(shù)。 對(duì)于每個(gè)操作數(shù)占據(jù)最低有效位。tdata 端口寬度本身是包含操作數(shù)所需的字節(jié)寬度的最小倍數(shù)。

輸出(DOUT)通道的TDATA結(jié)構(gòu)

m_axis_dout_tdata 的結(jié)構(gòu)比較復(fù)雜。 此端口包含商和(余數(shù)或小數(shù)輸出如果存在)。當(dāng)余數(shù)類型設(shè)置為余數(shù)時(shí),兩個(gè)輸出被認(rèn)為是分開的,因此在串聯(lián)以形成 m_axis_dout_tdata 信號(hào)之前是面向字節(jié)的。 當(dāng)余數(shù)類型為小數(shù)時(shí),小數(shù)部分被視為商的擴(kuò)展,因此這兩個(gè)字段在填充到下一個(gè)字節(jié)邊界之前連接。

TLAST and TUSER握手

AXI4-Stream 中的 tlast 用于表示數(shù)據(jù)塊的最后一次傳輸。  tuser 用于限定或擴(kuò)充 tdata 中的主要數(shù)據(jù)的輔助信息。 除法器在每個(gè)樣本的基礎(chǔ)上運(yùn)行,其中每個(gè)操作都獨(dú)立于之前或之后的任何操作。因此,不需要在除法器上放置 tlast。

在每個(gè)輸入通道上支持 tlast 和 tuser 信號(hào)純粹是作為系統(tǒng)設(shè)計(jì)的一個(gè)可選輔助,在這種情況下,通過除法器的數(shù)據(jù)流確實(shí)具有一些分組化或輔助字段,但不是與除法器相關(guān)。 傳遞 tlast 或 tuser 的功能消除了通過除法器將延遲匹配到 tdata 路徑的負(fù)擔(dān),該路徑可以是可變的。

當(dāng)選擇Divide_by_zero detect(除以零檢測(cè))時(shí),指示除以零的信號(hào)在輸出通道tuser端口的最低有效位上輸出。

TLAST Options

每個(gè)輸入通道的 tlast 是可選的。 每個(gè)存在時(shí),都可以通過除法器,或者,當(dāng)多個(gè)通道啟用了 tlast 時(shí),可以通過 tlast 輸入的邏輯 AND 或邏輯 OR。 當(dāng)任何輸入通道上不存在 tlasts時(shí),輸出通道也沒有 tlast。

TUSER Options

每個(gè)輸入通道的 tuser 是可選的。 每個(gè)都有用戶可選擇的寬度。  Divider IP也可能生成一個(gè) tuser 位。 這是選擇divide_by_zero 檢測(cè)時(shí)。divide_by_zero 位占據(jù)最低有效位置,然后是來自除數(shù)通道的 tuser,然后是來自最高有效位置的被除數(shù)通道的 tuser。

除法器IP配置

除法器IP配置界面如下:

Common Options

描述了兩種實(shí)現(xiàn)的參數(shù),并允許選擇除法器實(shí)現(xiàn)。

Algorithm Type:  算法類型:這在基數(shù) 2、LUTMult 和高基數(shù)劃分解決方案之間進(jìn)行選擇。

Dividend Channel

Dividend Width: 被除數(shù)寬度,指定在 DIVIDEND (s_axis_dividend_tdata) 和 QUOTIENT(m_axis_dout_tdata 的子字段)上提供的整數(shù)位數(shù)。 這必須設(shè)置為滿足最大可能的商結(jié)果。 由于二進(jìn)制補(bǔ)碼表示的非對(duì)稱性,從被除數(shù)到商的位增長(zhǎng)是可能的,但僅適用于最大負(fù)數(shù)除以負(fù)數(shù)的單個(gè)組合(即 -2(M-1)/-1)。 如果需要適應(yīng)這種情況,被除數(shù)(以及商)的寬度可以擴(kuò)展 1 位。

Has TLAST: 指定此通道是否具有 tlast 端口。  除法器不使用此信息。 該項(xiàng)用于簡(jiǎn)化系統(tǒng)設(shè)計(jì)。tlast信息以和數(shù)據(jù)路徑相同的延遲傳送到輸出通道。

Has TUSER: 指定此通道是否具有 tuser 端口。 與 tlast 一樣, 除法器不使用此信息。 該項(xiàng)用于簡(jiǎn)化系統(tǒng)設(shè)計(jì)。 tuser 位以和數(shù)據(jù)路徑相同的延遲傳送到輸出。

TUSER Width: 當(dāng) Has tuser 為 TRUE 時(shí)可用,這將設(shè)置此通道的 tuser 端口的寬度。

Divisor Channel

Divisor Width: 除數(shù)寬度。指定在 s_axis_divisor_tdata 的 DIVISOR 字段上提供的整數(shù)位數(shù)。 當(dāng)配置有余數(shù)輸出時(shí),余數(shù)的寬度也等于該參數(shù)的值。

Has TLAST: 指定此通道是否具有 tlast 端口。  除法器不使用此信息。 該項(xiàng)用于簡(jiǎn)化系統(tǒng)設(shè)計(jì)。 tuser 位以和數(shù)據(jù)路徑相同的延遲傳送到輸出。

Has TUSER: 指定此通道是否具有 tuser 端口。 與 tlast 一樣, 除法器不使用此信息。 該項(xiàng)用于簡(jiǎn)化系統(tǒng)設(shè)計(jì)。 tuser 位以和數(shù)據(jù)路徑相同的延遲傳送到輸出。

TUSER Width: 當(dāng) Has tuser 為 TRUE 時(shí)可用,這將設(shè)置此通道的 tuser 端口的寬度。

Output Channel

Remainder Type:  余數(shù)類型。這可以在輸出 tdata 端口 (m_axis_dout_tdata) 的 FRACTIONAL 上顯示的余數(shù)類型小數(shù)和余數(shù)之間進(jìn)行選擇。分?jǐn)?shù)余數(shù)類型是高基數(shù)的唯一選項(xiàng)。

Fractional Width: 小數(shù)寬度。如果選擇小數(shù)余數(shù)類型,這將確定在輸出通道 (m_axis_dout_tdata) 的小數(shù)字段上提供的位數(shù)。 選擇高基數(shù)時(shí),總輸出寬度(商部分加小數(shù)部分)限制為 82。

商的寬度等于被除數(shù)的寬度,并在被除數(shù)通道部分設(shè)置。

如果divide_by_zero 檢測(cè)處于有效狀態(tài),tuser 端口的寬度是當(dāng)前輸入通道tuser 字段的總和加上1。 如果任一輸入通道具有 tlast 端口,則該通道也具有 tlast 端口。

Detect Divide-by-Zero: 檢測(cè)被零除。確定內(nèi)核在輸出 tuser 端口 (m_axis_dout_tuser) 中是否有 DIVIDE_BY_ZERO  以在執(zhí)行除以零時(shí)發(fā)出信號(hào)。

Radix-2 Options

Clocks Per Division:  分頻時(shí)鐘。確定 Radix-2 解決方案的吞吐量(輸入(或輸出)之間的時(shí)鐘間隔)。 此參數(shù)的低值會(huì)導(dǎo)致高吞吐量,但也會(huì)導(dǎo)致更多資源使用。

High Radix and LUTMult Options

**Number of iterations (High Radix only)  迭代次數(shù)(僅限高基數(shù)): ** 只讀,報(bào)告高基數(shù)操作模式為每次除法執(zhí)行的迭代次數(shù)。 這設(shè)置了分頻器的最大吞吐量。為實(shí)現(xiàn)此吞吐量,必須在s_axis_dividend_tready 和 s_axis_divisor_tready 輸出請(qǐng)求時(shí)立即提供操作數(shù)。

Number of iterations (High Radix only)吞吐量(僅限高基數(shù)) :只讀,報(bào)告以恒定速率提供操作數(shù)時(shí)除法器可維持的最大吞吐量。 在 AXI 阻塞模式下,由于緩沖,吞吐量可能略高。 當(dāng)FlowControl 設(shè)置為 NonBlocking 并且輸出通道 DOUT 沒有tready  時(shí),此速率適用。

AXI4-Stream Options

Flow Control: 流控制。阻塞或非阻塞。非阻塞模式提供了從之前版本的分頻器生成器內(nèi)核的更簡(jiǎn)單的遷移路徑。 阻塞模式以一些額外的資源和延遲為代價(jià),簡(jiǎn)化了進(jìn)出其他 AXI4-Stream 阻塞模式內(nèi)核的數(shù)據(jù)流管理。

Optimize Goal:  優(yōu)化目標(biāo)。這僅適用于阻塞模式。 選擇ACLKEN并優(yōu)化目標(biāo)設(shè)置為資源時(shí),可能會(huì)降低性能。

Output has TREADY:  選擇輸出通道是否有tready信號(hào)。 這是允許來自下游的背壓所必需的。例如,如果連接到另一個(gè) AXI4-Stream Blocking內(nèi)核。 如果沒有tready,下游電路無法停止來自分頻器的數(shù)據(jù)流,但會(huì)節(jié)省一些資源。

Output TLAST Behavior: 輸出 TLAST行為。選擇輸出通道 tlast 信號(hào)的來源。 當(dāng)沒有或只有一個(gè)輸入通道有 tlast 時(shí),輸出 tlast 不存在或適當(dāng)?shù)貜妮斎?tlast 派生。當(dāng)兩個(gè)輸入通道都有 tlast 時(shí),輸出通道 tlast 可以單獨(dú)從兩個(gè)輸入的邏輯 OR或邏輯 AND 得出。

Latency Options

Latency Configuration: 延遲配置。自動(dòng)(完全流水線)或手動(dòng)。Radix2 解決方案的延遲配置僅在每格時(shí)鐘設(shè)置為 1 時(shí)才可配置。這是由于迭代反饋,因此當(dāng)每格時(shí)鐘大于 1 時(shí)非可選寄存器。

Latency :延遲,當(dāng)Latency Configuration 設(shè)置為Automatic 時(shí),提供從輸入到輸出的延遲,以時(shí)鐘使能時(shí)鐘周期為單位。 手動(dòng)時(shí),此字段用于指定所需的延遲。 當(dāng)不需要高性能(時(shí)鐘頻率)時(shí),該字段中較低的值可以節(jié)省資源。

Control Signals

ACLKEN :確定內(nèi)核是否具有時(shí)鐘使能輸入 (ACLKEN)。信號(hào)ARESETn始終優(yōu)先于ACLKEN,即無論ACLKEN的狀態(tài)如何,ARESETn都生效。

ARESETn :確定內(nèi)核是否具有低電平有效同步清零輸入 (ARESETn)。為低電平有效。信號(hào) ARESETn 應(yīng)保持有效至少兩個(gè)時(shí)鐘周期。 這是因?yàn)?,為了性能,ARESETn 在被饋送到原語的重置端口之前在內(nèi)部注冊(cè)。

reference

PG151

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關(guān)注 20
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧