LVDS系列20:Xilinx 7系ISERDESE2原語(一)

Xilinx 7系FPGA bank的io單元如下:
在這里插入圖片描述
在這里插入圖片描述
Hr bank比hp bank少odelaye2組件,兩者的idelaye2組件后面,都有iserdese2組件;
iserdese2組件是一種專用的串并轉換器或稱解串器,用于高速源同步應用,如大部分LVDS信號解析就屬于高速源同步應用;
組件是專用的解串器,避免了fpga邏輯實現,支持單數據數率SDR和雙數據速率DDR模式;
SDR模式下,支持2/3/4/5/6/7/8位寬并行轉換;
DDR模式下,支持4/6/8位寬并行轉換;
使用兩個級聯的iserdese2時,還可以生成10/14位寬的并行轉換;
組件還包含Bitslip子模塊,bitslip可以讓用戶重新排序拼接并行數據流,方便接收數據的訓練和檢測調整;

? 原語框圖:
左側輸入管腳,右側輸出,
在這里插入圖片描述
在這里插入圖片描述
? 原語例化:
ISERDESE2 #(
.DATA_RATE(“DDR”), // DDR, SDR
.DATA_WIDTH(4), // Parallel data width (2-8,10,14)
.DYN_CLKDIV_INV_EN(“FALSE”), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)
.DYN_CLK_INV_EN(“FALSE”), // Enable DYNCLKINVSEL inversion (FALSE, TRUE)
// INIT_Q1 - INIT_Q4: Initial value on the Q outputs (0/1)
.INIT_Q1(1’b0),
.INIT_Q2(1’b0),
.INIT_Q3(1’b0),
.INIT_Q4(1’b0),
.INTERFACE_TYPE(“MEMORY”), // MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE
.IOBDELAY(“NONE”), // NONE, BOTH, IBUF, IFD
.NUM_CE(2), // Number of clock enables (1,2)
.OFB_USED(“FALSE”), // Select OFB path (FALSE, TRUE)
.SERDES_MODE(“MASTER”), // MASTER, SLAVE
// SRVAL_Q1 - SRVAL_Q4: Q output values when SR is used (0/1)
.SRVAL_Q1(1’b0),
.SRVAL_Q2(1’b0),
.SRVAL_Q3(1’b0),
.SRVAL_Q4(1’b0)
)
ISERDESE2_inst (
.O(O), // 1-bit output: Combinatorial output
// Q1 - Q8: 1-bit (each) output: Registered data outputs
.Q1(Q1),
.Q2(Q2),
.Q3(Q3),
.Q4(Q4),
.Q5(Q5),
.Q6(Q6),
.Q7(Q7),
.Q8(Q8),
// SHIFTOUT1, SHIFTOUT2: 1-bit (each) output: Data width expansion output ports
.SHIFTOUT1(SHIFTOUT1),
.SHIFTOUT2(SHIFTOUT2),
.BITSLIP(BITSLIP), // 1-bit input: The BITSLIP pin performs a Bitslip operation synchronous to
// CLKDIV when asserted (active High). Subsequently, the data seen on the Q1
// to Q8 output ports will shift, as in a barrel-shifter operation, one
// position every time Bitslip is invoked (DDR operation is different from
// SDR).

// CE1, CE2: 1-bit (each) input: Data register clock enable inputs
.CE1(CE1),
.CE2(CE2),
.CLKDIVP(CLKDIVP), // 1-bit input: TBD
// Clocks: 1-bit (each) input: ISERDESE2 clock input ports
.CLK(CLK), // 1-bit input: High-speed clock
.CLKB(CLKB), // 1-bit input: High-speed secondary clock
.CLKDIV(CLKDIV), // 1-bit input: Divided clock
.OCLK(OCLK), // 1-bit input: High speed output clock used when INTERFACE_TYPE=“MEMORY”
// Dynamic Clock Inversions: 1-bit (each) input: Dynamic clock inversion pins to switch clock polarity
.DYNCLKDIVSEL(DYNCLKDIVSEL), // 1-bit input: Dynamic CLKDIV inversion
.DYNCLKSEL(DYNCLKSEL), // 1-bit input: Dynamic CLK/CLKB inversion
// Input Data: 1-bit (each) input: ISERDESE2 data input ports
.D(D), // 1-bit input: Data input
.DDLY(DDLY), // 1-bit input: Serial data from IDELAYE2
.OFB(OFB), // 1-bit input: Data feedback from OSERDESE2
.OCLKB(OCLKB), // 1-bit input: High speed negative edge output clock
.RST(RST), // 1-bit input: Active high asynchronous reset
// SHIFTIN1, SHIFTIN2: 1-bit (each) input: Data width expansion input ports
.SHIFTIN1(SHIFTIN1),
.SHIFTIN2(SHIFTIN2)
);

? ISERDESE2端口介紹:
端口O:
1bit,組合輸出,該端口為組件未經過寄存器的輸出,可以直接來自輸入D端口或DDLY端口,從組件的框圖可以看出O端口的產生結構,來自一個由OFB、DDLY、D端口輸入的IOB多路復用器的輸出,沒有經過ISERDESE2的組件;
在這里插入圖片描述
端口Q1~Q8:
iserdese2組件的8bit寄存器輸出,1個組件最多支持1:8的串轉并,大于8位僅在DDR模式下支持,且最大14bit;
一個并行數據的最先輸入的1個bit數據,將會出現在最高位的Q8上;
在這里插入圖片描述
上圖是OSERDESE2和ISERDESE2組件的輸入輸出順序,
可以看到,OSERDESE2輸出端位序與ISERDESE2輸入端的位序相反,OSERDESE2輸入一個D1~D8,對應ABCDEFGH的數據,輸出時,按D1到D8,也就是A到H的并行數據種低位先發的順序發送數據,
而在ISERDESE2中,先接收到的A放入了最高位Q8,最后接收到的H放入了Q1。

端口SHIFTOUT1、SHIFTOUT2、SHIFTIN1、SHIFTIN2:
想要實現大于8bit的并行轉換,需要兩個ISERDESE2級聯,shift接口用于寬度擴展時ISERDESE2級聯,后續仿真時詳細講解位寬擴展結構;

端口BITSLIP:
1bit,高電平有效時執行位滑動操作,與CLKDIV同步;執行后Q1~Q8的輸出接口上數據將移動一個bit數據,后續仿真時詳細講解位滑動操作;

端口RST:
高電平有效復位,復位有效時,大部分組件內部觸發器將被異步驅動為低,除了Q1Q4這4個接口,因為這4個輸出接口復位時驅動的值由參數INIT_Q1 INIT_Q4設置;當把復位信號與CLKDIV同步取消置位,內部邏輯會把取消置位重新定為第一個CLK上升沿,多個ISERDESE2組件的復位信號應該使用同一個復位信號,復位信號需至少保持兩個CLKDIV時鐘周期,且復位取消后兩個CLKDIV時鐘周期后輸出數據才有效;

端口CLK:
高速時鐘輸入,該時鐘應該與高速串行輸入數據同步;

端口CLKB:
高速次級時鐘對輸入串行數據流進行同步;當INTERFACE_TYPE設置為除MEMORY_QDR的模式下,CLKB與CLK反相,在MEMORY_QDR模式下,CLKB連接到特定相位偏移的時鐘;

端口CLKDIV:
分頻時鐘輸入,通常是CLK的分頻版本,該時鐘與組件輸出的并行數據Q1~Q8同步,還與CE模塊,Bitslip子模塊同步,其頻率取決于解串行化的寬度;

端口CLKDIVP:
只在使用MIG工具,也就是DDR控制器時使用該端口,其他模式將其置0;

端口CE1、CE2:
都是時鐘使能輸入端口,內部有一個輸入時鐘使能模塊:
在這里插入圖片描述
可以看到模塊中,有CE1和CE2時鐘使能輸入,
當NUM_CE=1(NUM_CE為組件例化參數)時,不使用CE2輸入,CE1輸入是直接連接到ISERDESE2中輸入寄存器的高有效時鐘使能信號;
當NUM_CE=2時,同時使用CE1和CE2輸入,CE1在CLKDIV周期的一半啟用ISERDESE2,CE2在另一半啟用ISERDESE2。

端口OCLK、OCLKB:
高速時鐘輸入,用于基于選通的存儲器接口和過采樣模式,當INTERFACE_TYPE設置為為NETWORKING時不使用OCLK;OCLK可用于將基于選通的存儲器數據傳輸到自由運行的時鐘域,不適用存儲器模式時,端口不使用,OCLKB為OCLK反相時鐘;

端口D:
高速串行數據輸入端口,僅與IOB配合使用,數據來自IOB;

端口DDLY:
高速串行數據輸入端口,僅與IDELAYE2配合使用,輸入的數據來自IDLEAYE2延時后的輸出;

端口OFB:
OFB端口用于將OSERDESE2上傳輸的數據反饋回ISERDESE2,且同時需要將參數OFB_USED設置為TRUE,且OSERDESE2和ISERDESE2的DATA_RATE和DATA_WIDTH需要設置相同;
在這里插入圖片描述
端口DYNCLKDIVSEL、DYNCLKSEL:
DYNCLKDIVSEL置1且DYN_CLKDIV_INV_EN設置TRUE時,CLKDIV反轉相位;DYNCLKSEL置1且DYN_CLK_INV_EN設置為TRUE時,CLK和CLKB反轉相位;且該操作僅在MEMORY_DDR3和MEMORY_QDR模式下受支持;

例化參數和其他細節下一節講解;
本文章由威三學社出品
對課程感興趣可以私信聯系

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88354.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88354.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【U-Boot】Shell指令

目錄 U-Boot 三個Shell U-Boot Shell Linux Shell shell腳本 總結 U-Boot Shell命令 幫助命令 部分命令分類與功能說明 一、基礎操作與信息查詢 二、內存操作 三、啟動管理 四、文件系統操作 五、設備與分區管理 六、環境變量 七、診斷與調試 八、特殊功能 九…

《Revisiting Generative Replay for Class Incremental Object Detection》閱讀筆記

摘要Abstract部分 原文 Generative replay has gained significant attention in class-incremental learning; however, its application to Class Incremental Object Detection (CIOD) remains limited due to the challenges in generating complex images with precise …

Mysql: Bin log原理以及三種格式

目錄 一、什么是 Binlog? 二、Binlog 的應用場景與案例 1. 數據恢復 (Point-in-Time Recovery) 2. 主從復制 (Master-Slave Replication) 3. 數據審計 三、Binlog 的三種格式 1. STATEMENT 模式 (Statement-Based Logging - SBL) 2. ROW 模式 (Row-Based Log…

LiteHub之文件下載與視頻播放

文件下載 前端請求 箭頭函數 //這個箭頭函數可以形象理解為,x流入(>)x*x, //自然而然>前面的就是傳入參數,>表示函數體 x > x * x//相當于 function (x) {return x * x; }//如果參數不是一個,就需要用括號()括起來…

QT5使用cmakelists引入Qt5Xlsx庫并使用

1、首先需要已經有了Qt5Xlsx的頭文件和庫,并拷貝到程序exe路徑下(以xxx.exe/3rdparty/qtxlsx路徑為例,Qt5Xlsx版本為0.3.0); 2、cmakelist中: # 設置 QtXlsx 路徑 set(QTXLSX_ROOT_DIR ${CMAKE_CURRENT_SOU…

醋酸鐠:閃亮的稀土寶藏,掀開科技應用新篇章

一、什么是醋酸鐠醋酸鐠是一種鐠的有機鹽,鐠是稀土金屬元素之一。作為一種重要的稀土化合物,醋酸鐠通常以水合物的形式存在,呈現淡黃色或無色結晶。鐠元素本身因其獨特的物理化學特性,在工業和科技領域有著廣泛應用,而…

深入解析JVM內存結構與垃圾回收機制

java是強類型高級語言JVM(Java Virtual Machine,Java虛擬機)是Java平臺的核心組件,它是一個虛擬的計算機,能夠執行Java字節碼(bytecode)。1、區域劃分JVM對Java內存的管理也是分區分塊進行&…

Java 流程控制詳解:從順序執行到跳轉語句,掌握程序邏輯設計

作為一名Java開發工程師,你一定知道,流程控制(Flow Control) 是編寫任何程序的核心。它決定了代碼的執行路徑、分支走向和循環次數。本文將帶你系統梳理 Java中的所有常用流程控制結構,包括:順序結構分支結…

面試150 環形鏈表

思路 采用雙指針法,slow指針每次走一步,fast指針每次走兩步,如果相遇的情況下,slow指針回到開始的位置,此時快慢指針各走一步,當相遇的時候也就是說明鏈表中有環。 # Definition for singly-linked list. # class ListNode: # def __init…

AI技術正在深度重構全球產業格局,其影響已超越工具屬性,演變為推動行業變革的核心引擎。

一、AI如何重塑AI的工作與行業(AI助手領域)能力升級理解與生成:基于LLM(大語言模型),AI能處理開放式問題、撰寫報告、翻譯代碼,替代部分人類知識工作。個性化交互:通過用戶歷史對話分…

Kafka的無消息丟失配置怎么實現

那 Kafka 到底在什么情況下才能保證消息不丟失呢? Kafka 只對“已提交”的消息(committed message)做有限度的持久化保證。 第一個核心要素是“已提交的消息”。什么是已提交的消息?當 Kafka 的若干個 Broker 成 功地接收到一條…

集成CommitLInt+ESLint+Prettier+StyleLint+LintStaged

代碼可讀性低代碼 代碼規范落地難代碼格式難統一代碼質量低下 配置 ESLint ESLint 是一個用來識別 ECMAScript 并且按照規則給出報告的代碼檢測工具,使用它可以避免低級錯誤和統一代碼的風格。它擁有以下功能: 查出 JavaScript 代碼語法問題。根據配置…

尋找兩個正序數組的中位數(C++)

給定兩個大小分別為 m 和 n 的正序(從小到大)數組 nums1 和 nums2。請你找出并返回這兩個正序數組的 中位數 。算法的時間復雜度應該為 O(log (mn)) 。示例 1:輸入:nums1 [1,3], nums2 [2] 輸出:2.00000 解釋&#x…

Expected Sarsa 算法的數學原理

🌟 一、Expected Sarsa 算法的數學原理 1. 什么是 Expected Sarsa? Expected Sarsa 是一種基于 時序差分(Temporal Difference, TD)學習 的強化學習算法,用于估計 動作值函數 ( q_{\pi}(s, a) )。它是 Sarsa 算法的一種…

Vue的watch和React的useEffect

參考文章:https://zhuanlan.zhihu.com/p/686329898

idea中合并git分支

1.把本地dev代碼合并到本地master代碼在提交代碼之前,先確保dev和master都拉取了最新的代碼都進行了Git->pull了這時候確保Local的第一個分支是master分支,然后選擇dev分支 ,鼠標右鍵-》Merge dev into master這時候會提示 有合并到本地master最新的代…

《Spring 中上下文傳遞的那些事兒》Part 7:異步任務上下文丟失問題詳解

📝 Part 7:異步任務上下文丟失問題詳解 在現代 Java 應用中,異步編程已經成為提升性能、解耦業務邏輯的重要手段。無論是使用 CompletableFuture、線程池(ExecutorService)、定時任務(ScheduledExecutorSe…

大語言模型驅動智能語音應答:技術演進與架構革新

在智能客服、電話銀行等場景中,用戶時常遇到這樣的困境:“請描述您的問題...抱歉沒聽清,請重試...正在為您轉接人工”。傳統語音應答(IVR)系統受限于規則引擎與淺層語義理解,難以應對復雜多變的自然語言表達…

【Linux】內存管理

要求:1、編寫程序,實現如下功能。(1)隨機生成 1000000 個 0~1 之間的數;(2)統計分析這些數據,計算均值、方差和分布情況,分布情況按0.01 的步長進行統計;&…

蒼穹外賣—day1

文章目錄前言一、接口文檔導入與生成二、前端環境搭建三、后端環境搭建1. 了解項目結構2. 環境搭建常見問題總結前言 (簡要說明筆記的目的:記錄搭建過程、關鍵配置和結構理解) 一、接口文檔導入與生成 Apifox 導入 使用工具:https…