AD9253鏈路訓練

  • 傳統方式

? ? ? ? 參考Xilinx官方文檔xapp524。對于AD9253器件 - 125M采樣率 - DDR模式,ADC器件的DCO采樣時鐘(500M?Hz)和FCO幀時鐘是中心對齊的,適合直接采樣。但是DCO時鐘不能直接被FPGA內部邏輯使用,需要經過BUFIO和BUFR緩沖后,得到s_bit_clk和s_frame_clk。此時,s_bit_clk和DCO時鐘不是相位對齊的。如果s_bit_clk直接采樣數據總線,則不能保證采樣到正確的數據。故需要進行鏈路訓練。

參考之前博客:? AD9253 LVDS 高速ADC驅動開發_lvds adc-CSDN博客??

step1:

? ? ? ?大概流程為:s_bit_clk采樣DCO時鐘信號,通過調節IDELAY,配合ISERDES原語,先穩定得到8'b11111111或8'b00000000(根據ADC器件手冊時鐘和數據相位關系來選擇),則表明s_bit_clk和DCO處于固定的相位關系,但不是邊沿對齊。然后再調節IDELAY,使得s_bit_clk采樣DCO時鐘信號,得到的結果為一個不確定值,則表明DCO和FCO時鐘信號已邊沿對齊,即鏈路s_bit_clk和DCO時鐘信號的相位關系已訓練完畢。

step2:每個數據點比特位的鏈路訓練,用于對齊采樣時鐘和每個數據點的比特順序。

s_bit_clk采樣FCO幀時鐘信號,通過調節ISERDES的bitslip,使得采樣到特定pattern,對于ADC9253器件而言,特定pattern為8'hf0。則表明每個數據點比特位的鏈路訓練完畢。

  • 本文方式

傳統方式存在一個問題:需要DCO,FCO,多路DOUT走線和阻抗均需要保持完全一致,才能滿足手冊的時序關系。

在實際項目中,遇到一個問題:ADC9253的2個通道,有一個通道很穩定,另一個通道存在偶發的數據值跳變。于是修改訓練方案:

核心思路是每路數據總線和采樣時鐘s_bit_clk配合來單獨訓練,從而可以避免不同通道的差異性。因為傳統方法通過調節采樣時鐘s_bit_clk,使之與DCO對齊,這種調節類似于全局調節,DCO對每個通道都會起作用,如果兩個通道存在硬件設計差異,就會導致上述問題。

Step1:AD9253器件配置為test mode模式,test pattern為標號1所示。

通過調節IDELAY,配合ISERDES原語(可以使用selectio這個IP更方便),使得采樣時鐘s_bit_clk能采樣到穩定的值,比如10ms內采樣值都不變。說明:該值通常不會恰好等于測試pattern。

step2:每個數據點比特位的鏈路訓練,用于對齊采樣時鐘和每個數據點的比特順序。

對于每路數據總線,通過調節ISERDES的bitslip,使得采樣到預先設定的pattern,見標號1。當所有路數據總線均穩定采樣到預先設定的pattern,則表明AD9253鏈路訓練OK。

Step3:驗證環節。AD9253器件配置為test mode模式,test pattern為標號2所示。因為鏈路已經訓練OK,那么此時改變test pattern,所有通道,理論上也應該正確采樣到該test pattern值。實際項目測試,也驗證了該理論猜想。

  • 補充說明:對于鏈路訓練,通常只訓練一次。但是如果受到溫度等因素干擾,鏈路可能失效。此時需要自適應的檢測到,并重新進入鏈路訓練環節。鏈路失效檢測方法:鏈路訓練OK后,可以用采樣時鐘s_bit_clk采樣FCO幀時鐘信號,當采樣值突然穩定的發生改變,不等于當前值,則表明鏈路失效。

  • AD9253器件支持test mode。數據管腳可以輸出固定的 test pattern序列。

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

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

相關文章

解決方案:遠程shell連不上Ubuntu服務器

服務器是可以通過VNC登錄,排除了是服務器本身故障 檢查服務是否在全網卡監聽 sudo ss -tlnp | grep sshd確保有一行類似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回無結果,表明系統里并沒有任…

關于大數據的基礎知識(四)——大數據的意義與趨勢

成長路上不孤單😊😊😊😊😊😊 【14后😊///計算機愛好者😊///持續分享所學😊///如有需要歡迎收藏轉發///😊】 今日分享關于大數據的基礎知識(四&a…

智能指針(weak_ptr )之三

1. std::weak_ptr 1.1 定義與用法 std::weak_ptr 是一種不擁有對象所有權的智能指針,用于觀察但不影響對象的生命周期。主要用于解決 shared_ptr 之間的循環引用問題。 主要特性: 非擁有所有權:不增加引用計數。可從 shared_ptr 生成&…

學習海康VisionMaster之卡尺工具

一:進一步學習了 今天學習下VisionMaster中的卡尺工具:主要用于測量物體的寬度、邊緣的特征的位置以及圖像中邊緣對的位置和間距 二:開始學習 1:什么是卡尺工具? 如果我需要檢測芯片的每一個PIN的寬度和坐標&#xff…

Java面試實戰:從Spring Boot到微服務的深入探討

Java面試實戰:從Spring Boot到微服務的深入探討 場景:電商場景的面試之旅 在某互聯網大廠的面試間,面試官李老師正襟危坐,而對面坐著的是傳說中的“水貨程序員”趙大寶。 第一輪:核心Java與構建工具 面試官&#x…

深入理解 Spring @Configuration 注解

在 Spring 框架中,@Configuration 注解是一個非常重要的工具,它用于定義配置類,這些類可以包含 Bean 定義方法。通過使用 @Configuration 和 @Bean 注解,開發者能夠以編程方式創建和管理應用程序上下文中的 Bean。本文將詳細介紹 @Configuration 注解的作用、如何使用它以及…

密碼學中的鹽值是什么?

目錄 1. 鹽值的基本概念 2. 鹽值的作用 (1) 防止彩虹表攻擊 (2) 防止相同的密碼生成相同的哈希值 (3) 增加暴力破解的難度 3. 如何使用鹽值? (1) 生成鹽值 (2) 將鹽值附加到密碼 (3) 存儲鹽值和哈希值 (4) 驗證密碼 4. 鹽值如何增加暴力破解的難度 在線暴…

基于瑞芯微RK3576國產ARM八核2.2GHz A72 工業評估板——Docker容器部署方法說明

前 言 本文適用開發環境: Windows開發環境:Windows 7 64bit、Windows 10 64bit Linux開發環境:VMware16.2.5、Ubuntu22.04.5 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-6.1.115 LinuxSDK:LinuxSDK-[版本號](基于rk3576_linux6.1_release_v1.1.0) Docker是一個開…

大數據技術全解析

目錄 前言1. Kafka:流數據的傳輸平臺1.1 Kafka概述1.2 Kafka的應用場景1.3 Kafka的特點 2. HBase:分布式列式數據庫2.1 HBase概述2.2 HBase的應用場景2.3 HBase的特點 3. Hadoop:大數據處理的基石3.1 Hadoop概述3.2 Hadoop的應用場景3.3 Hado…

mcpo的簡單使用

1.安裝依賴 conda create -n mcpo python3.11 conda activate mcpo pip install mcpo pip install uv2.隨便從https://github.com/modelcontextprotocol/servers?tabreadme-ov-file 找一個mcp服務使用就行,我這里選的是爬蟲 然后安裝 pip install mcp-server-f…

uniapp-商城-32-shop 我的訂單-訂單詳情和組件goods-list

上面完成了我的訂單,通過點擊我的訂單中每一條數據,可以跳轉到訂單詳情中。 這里就需要展示訂單的狀態,支付狀態,物流狀態,取貨狀態,用戶信息,訂單中的貨物詳情等。 1、創建一個訂單詳情文件 …

XCVU13P-2FHGA2104I Xilinx Virtex UltraScale+ FPGA

XCVU13P-2FHGA2104I 是 Xilinx(現為 AMD)Virtex UltraScale? FPGA 系列中的高端 Premium 器件,基于 16nm FinFET 工藝并采用 3D IC 堆疊硅互連(SSI)技術,提供業內頂級的計算密度和帶寬?。該芯片集成約 3,…

【Python3】Django 學習之路

第一章:Django 簡介 1.1 什么是 Django? Django 是一個高級的 Python Web 框架,旨在讓 Web 開發變得更加快速和簡便。它鼓勵遵循“不要重復自己”(DRY,Don’t Repeat Yourself)的原則,并提供了…

Python 設計模式:模板模式

1. 什么是模板模式? 模板模式是一種行為設計模式,它定義了一個操作的算法的骨架,而將一些步驟延遲到子類中。模板模式允許子類在不改變算法結構的情況下,重新定義算法的某些特定步驟。 模板模式的核心思想是將算法的固定部分提取…

【后端】構建簡潔的音頻轉寫系統:基于火山引擎ASR實現

在當今數字化時代,語音識別技術已經成為許多應用不可或缺的一部分。無論是會議記錄、語音助手還是內容字幕,將語音轉化為文本的能力對提升用戶體驗和工作效率至關重要。本文將介紹如何構建一個簡潔的音頻轉寫系統,專注于文件上傳、云存儲以及…

音頻base64

音頻 Base64 是一種將二進制音頻數據(如 MP3、WAV 等格式)編碼為 ASCII 字符串的方法。通過 Base64 編碼,音頻文件可以轉換為純文本形式,便于在文本協議(如 JSON、XML、HTML 或電子郵件)中傳輸或存儲&#…

240422 leetcode exercises

240422 leetcode exercises jarringslee 文章目錄 240422 leetcode exercises[237. 刪除鏈表中的節點](https://leetcode.cn/problems/delete-node-in-a-linked-list/)🔁節點覆蓋法 [392. 判斷子序列](https://leetcode.cn/problems/is-subsequence/)🔁…

MYSQL之庫的操作

創建數據庫 語法很簡單, 主要是看看選項(與編碼相關的): CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 1. 語句中大寫的是…

Git Flow分支模型

經典分支模型(Git Flow) 由 Vincent Driessen 提出的 Git Flow 模型,是管理 main(或 master)和 dev 分支的經典方案: main 用于生產發布,保持穩定; dev 用于日常開發,合并功能分支(feature/*); 功能開發在 feature 分支進行,完成后合并回 dev; 預發布分支(rele…

【Spring】依賴注入的方式:構造方法、setter注入、字段注入

在Spring框架中,除了構造器注入(Constructor Injection)和Setter注入(Setter Injection),還有一種依賴注入方式:字段注入(Field Injection)。字段注入通過在Bean的字段上…