0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

PSRAM避坑指南-關鍵知識點講解

嵌入式USB開發(fā) ? 來源:嵌入式USB開發(fā) ? 作者:嵌入式USB開發(fā) ? 2023-06-08 11:25 ? 次閱讀

本文轉自公眾號,歡迎關注

PSRAM避坑指南-關鍵知識點講解 (qq.com)

一. 前言

前面的文章https://mp.weixin.qq.com/s/wC79XEXMAK-3SGX8JkrFKw,完整的介紹了PSRAM的相關內(nèi)容,比如接口時序等,但是該文章內(nèi)容較多,需要花費一些時間慢慢閱讀。對于一些開發(fā)人員可能只是想大概了解一下PSRAM的關鍵信息點,或者說遇到問題了不知如何查起,想直接看看有沒有一些常見的坑,來對照排查自己的問題,本文就是針對此而寫。本文重點介紹PSRAM時序中幾個關鍵的點,也是沒有調(diào)試過PSRAM的開發(fā)人員可能會理解錯誤的點,以及時序的training算法等。每一個知識點都是從工程實踐出發(fā),都是真金白銀的干貨,基本上這一些信息就包括了可能遇到的大部分問題了,先看這篇文章,基本就能避免各種坑了。

注意以下以APS256XXN為例,其他芯片不排除略有差異,但是關鍵時序不會有差異都是一樣的。

二.PSRAM關鍵知識點

2.1 總線寬度

默認是x8模式,可以通過寄存器修改為x16模式。

但是命令字和地址的發(fā)送始終是8位模式的,不過抓包可以看到此時高8位內(nèi)容會和低8位的內(nèi)容完全一樣。

2.2 地址空間

對于x16模式,因為其單位是x16bits即2B,所以頁內(nèi)偏移地址即列地址,只需要CA[9:0]10位就足夠,可以表示2048字節(jié),而x8模式需要CA[10:0]11位表示2048字節(jié),行地址則不管是x8還是x16都是RA[13:0]。

又由于是DDR模式,即雙邊沿都傳輸數(shù)據(jù),所以數(shù)據(jù)的最小傳輸單位是一個CLK,一個CLK就對應兩個總線寬度,對于x8模式是2B,對于x16模式就是4B,所以x8和x16模式最小的數(shù)據(jù)傳輸大小就是2B和4B,即列地址的bit0 CA[0]必須始終是0。

寄存器操作沒有以上限制可以從任意寄存器開始,但是也要注意由于是DDR所以一個CLK,PSRAM會發(fā)出連續(xù)兩個寄存器的值,CLK不停則連續(xù)的兩個寄存器重復發(fā)出。

即對應下表

比如讀MA0則依次返回MR0和MR1,CLK不停則MR0和MR1重復返回.

圖片

2.3 命令地址的鎖存

在CE#變?yōu)長OW之后,指令字節(jié)在CE#拉低后**第一****個** **CLK上升沿被鎖存** **,** 注意這里是第一個上升邊沿,如果CE#拉低后首先出現(xiàn)的是CLK的下降沿則這個下降沿會略過,也是沒問題的。

按照時序要求,指令字節(jié)需要一直保持到第一個CLK上升沿之后的下降沿,然后保持一個保持時間tHD,但是實際測試可能只需要保持到第一個CLK上升沿并且保持保持時間tHD就就夠了。實際應用還是建議完全按照手冊要求來,一直保持到下降沿之后的保持時間,這樣確保安全。這里還要注意CE#拉低到CLK拉高有一個最小的tCSP時間(2nS)要求,還有CLK上升沿之前數(shù)據(jù)的最小建立時間tSP。

如下所示

圖片

地址在第三、第四、第五和第六CLK邊沿(第二CLK上升沿、第二CLK下降沿、第三CLK上升邊沿、第三CL下降沿)被鎖存,以上邊沿計數(shù)是從CE#拉低之后的CLK上升沿開始作為第一個CLK邊沿計數(shù)。

如下是一個實際的應用中抓取到的波形,CE#拉低之后首先出現(xiàn)的是CLK的下降沿,這也是沒問題的

圖片

2.4 寫數(shù)據(jù)-DM

注意DM和DQS是復用的,都是發(fā)送方驅動,但是DQS和DM的含義完全是不一樣的。

DQS是讀數(shù)據(jù)時PSRAM驅動,用于表示數(shù)據(jù)就緒,控制器這邊根據(jù)DQS的邊沿延遲一定時間進行數(shù)據(jù)采樣。

而控制器發(fā)送數(shù)據(jù),PSRAM并不是通過DM來采樣的,DM表示的是數(shù)據(jù)是否MASK掉,PSRAM是通過CLK的邊沿來采樣的,CLK的邊沿采樣再來結合此時DM電平表示對應的字節(jié)是否要寫入,如果DM為高則MASK掉指定字節(jié)不寫入。

所以結合DM可以實現(xiàn)單字節(jié)的寫入。

由于寫數(shù)據(jù)時是CLK邊沿采樣,且DM和數(shù)據(jù)是同時變化的,要相對CLK的邊沿有數(shù)據(jù)建立時間和保持時間分別是tDS,tDH。

如圖所示

圖片

2.5 讀數(shù)據(jù)-DQS

注意讀數(shù)據(jù)不一樣不再通過CLK的邊沿鎖存數(shù)據(jù),而是通過DQS來鎖存數(shù)據(jù)了。

讀數(shù)據(jù)時PSRAM同時更新DQS和總線信號,但是兩者信號類型不一樣,一個是時鐘信號一個是總線數(shù)據(jù)信號,所以其物理上經(jīng)過的路徑就是不一樣的,到達引腳時存在時間差,這個時間差就是tDQSQ,比如對于166MHz這個值就是最大不超過0.5nS,所以接收方需要在DQS的邊沿延時該時間之后再采樣才能保證采樣到正確的數(shù)據(jù)。大部分讀不到數(shù)據(jù)基本都是接收方這個時間設置不對,正常來說接收方會有一個PHY可以通過寄存器配置該時間,接收training也就是不斷調(diào)整該時間然后確定一個合適的中間的值。

圖片

圖片

2.6 x8和x16的存儲映射

不管是x8還是x16模式頁的大小都是2K,但是x8模式和x16模式數(shù)據(jù)在頁內(nèi)的放置是不一樣的。

X8模式按照字節(jié)序列寫入頁內(nèi)的0~2047字節(jié)

X16模式則1字節(jié)寫入頁內(nèi)的01022處,另外字節(jié)寫入頁內(nèi)的10232047處。

所以要注意如果動態(tài)切換模式,則讀出的數(shù)據(jù)內(nèi)容就不一樣了。

圖片

2.7 讀寫數(shù)據(jù)的長度

普通模式讀寫數(shù)據(jù)最長由Burst Type決定,不能超過一個PAGE的大??;

寫最小長度是一個CLK對應的長度,x8模式就是一個CLK兩個邊沿2字節(jié),X16模式就是一個CLK兩個邊沿2x2=4字節(jié);讀沒有最小長度限制。寫數(shù)據(jù)可以結合DM來MASK寫入單字節(jié),而讀數(shù)據(jù)沒有MASK。讀寫數(shù)據(jù)的開始地址和長度要是2(x8)或者4(x16)字節(jié)對齊。

讀寫數(shù)據(jù)如果是使能了RXB且使用Linear Burst 讀寫模式則理論上讀寫最長字節(jié)數(shù)沒有限制,但是要受限于tCEM即CE拉低的時間限制

圖片

對于標準溫度最長CE可以拉低4uS,如果算200MHz時鐘,4uS有 800個CLK,不考慮命令地址,延遲等時間,800個CLK最多可以傳輸800x2x2個字節(jié)。

如果是擴展溫度1uS,算200MHz時鐘,4uS有200個CLK,不考慮命令地址,延遲等時間,200個CLK最多可以傳輸200x2x2個字節(jié)。

所以也不多,一般都是一次傳輸讀寫256個字節(jié)。

2.8 training

所謂的training就是針對讀和寫兩個關鍵的時序參數(shù)來進行

讀即DQS延遲tDQSQ時間之后再進行采樣

寫即數(shù)據(jù)在CLK邊沿tDS之前建立,都是數(shù)據(jù)建立時間的概念。

根本原因是因為時鐘信號和數(shù)據(jù)總線信號走的路徑不一樣,所以出現(xiàn)在引腳上的時刻也不一樣(內(nèi)部邏輯電路是時序邏輯電路都是在時鐘的邊沿進行數(shù)據(jù)更新的,理論上數(shù)據(jù)源是同步的)。

對于發(fā)送時,控制器的邏輯電路修改數(shù)據(jù)是在CLK邊沿進行的,但是傳播到引腳上時數(shù)據(jù)較CLK延后了,哪怕不延后數(shù)據(jù)也最多只能和時鐘保持同步,不能滿足數(shù)據(jù)建立時間要求,所以就要人為的在CLK的輸出路徑上加上延遲,以滿足建立時間的要求。

對于接收,同樣的道理,數(shù)據(jù)在出現(xiàn)在引腳上時已經(jīng)滯后DQS了,這個時間就是tDQSQ,所以不能DQS邊沿采樣了,需要延遲一段時間采樣,所以需要在DQS的輸入路徑上人為的添加延遲。

這兩個延遲是由PHY去控制的,會提供寄存器接口給軟件控制,軟件就是控制這兩個延遲時間來進行training。

所謂的training就是,不斷嘗試讀寫,通過判斷讀是否正確,來判斷參數(shù)是否合適,得到一個范圍的參數(shù),取中間值。修改這兩個時序如果能正確讀寫就認為這個參數(shù)可行,然后在所有可行的參數(shù)中取中間值,以獲得較高的冗余度。讀寫是否正確一般通過讀某個有固定值的寄存器來確定。

具體算法如下:

由于有兩個參數(shù),一個決定發(fā)送,一個決定接收,由于一次傳輸比如讀寄存器,需要先發(fā)送命令地址,然后讀,涉及到兩個過程,任意一個過程錯誤都不能讀到正確的數(shù)據(jù)。

所以兩個參數(shù)都需要遍歷嘗試,實際就是兩層嵌套遍歷。

一般可以讀內(nèi)容是固定的寄存器,比如廠商ID對應的寄存器,假設CLK延遲參數(shù)可以配置為099,DQS延遲參數(shù)可配置為099

那么組合就有100*100次嘗試,也可以增加遞增間隔以減少嘗試次數(shù)。

先固定CLK延遲,遍歷DQS延遲,記錄能讀到正確數(shù)據(jù)的DQS延遲范圍

再遞增CLK延遲,遍歷DQS延遲,記錄能讀到正確數(shù)據(jù)的DQS延遲范圍

在所有能讀到正確數(shù)據(jù)的DQS延遲范圍中選擇范圍最寬的,取其范圍的中間的DQS延遲值作為最終的DQS延遲值。

在所有能讀到正確數(shù)據(jù)的CLK延遲中取中間的CLK延遲值作為最終的CLK延遲值。

三. 實測波形

如下地址有使用邏輯分析抓包的實際PSRAM讀寫寄存器和數(shù)據(jù)的波形記錄,可以參考。

注意這些記錄波形是實際測試過程中抓取的,不是最終的最好狀態(tài),不能作為標準波形參考,標準波形需要參考手冊。

鏈接:https://pan.baidu.com/s/1HHGEvwz_NHT_tra4ONe-RQ?pwd=45b9

提取碼:45b9

四. 總結

以上分享了PSRAM接口一些關鍵的知識點,大部分是容易理解錯誤,且導致問題的點,基本上理解這些點就能解決大部分問題了,作為入門參考也可以先看這篇,先有個大概了解。作為遇到問題不知如何解決時也可以參考這篇文章,基本上能解決大部分問題。
審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5046

    文章

    18817

    瀏覽量

    298563
  • 接口
    +關注

    關注

    33

    文章

    8257

    瀏覽量

    149956
  • PSRAM
    +關注

    關注

    0

    文章

    34

    瀏覽量

    13259
  • 時序
    +關注

    關注

    5

    文章

    370

    瀏覽量

    37186
收藏 人收藏

    評論

    相關推薦

    【信盈達】C語言知識點的總結

    : | || ^ ~等 知識點5: 9條基本語句和32個關鍵知識點6:函數(shù)組成和函數(shù)關鍵兩句話知識點7:數(shù)組組成和數(shù)組典型應用
    發(fā)表于 10-08 14:41

    【視頻課程】MATLAB知識點講解1

    大家下午好!今天給大家?guī)碲w云老師的MATLAB知識點講解視頻,本次視頻為第一期,全部免費公開。我們會持續(xù)進行更新,有問題可以留言一同交流討論。
    發(fā)表于 04-22 15:33

    數(shù)控電源的知識點講解

    話說最近做了一個數(shù)控電源首先原理圖來一個 看看原理既然講到數(shù)控電源,難免講解一下數(shù)控電源的知識點,升降壓 MOS管,我所做的是BUCK降壓電路 一、Buck電路原理圖    Buck電路,又稱
    發(fā)表于 10-28 07:51

    STM32學習中會遇見的C語言基礎知識點講解

    C語言是單片機開發(fā)中的必備基礎知識,這里就列舉部分STM32學習中會遇見的C 語言基礎知識點。01位操作下面我們先講解幾種位操作符,然...
    發(fā)表于 02-28 07:11

    計算機組成原理考研知識點歸納

    計算機組成原理考研知識點歸納 寫在前面的話:理科知識重在于理解知識點本身,對于每一個知識點,大家都有自己理解的方式。這篇
    發(fā)表于 04-13 14:06 ?1914次閱讀

    高一數(shù)學知識點總結

    高一數(shù)學知識點總結高一數(shù)學知識點總結高一數(shù)學知識點總結
    發(fā)表于 02-23 15:27 ?0次下載

    高二數(shù)學知識點總結

    高二數(shù)學知識點總結高二數(shù)學知識點總結高二數(shù)學知識點總結
    發(fā)表于 02-23 15:27 ?0次下載

    PWM知識點詳解

    PWM知識點
    發(fā)表于 03-16 08:00 ?44次下載

    C51語言的基礎知識點實例講解

    本文檔的主要內(nèi)容詳細介紹的是C51語言的18個基礎知識點實例講解包括了:C51控制語句和C51數(shù)組和指針
    發(fā)表于 06-04 17:52 ?12次下載
    C51語言的基礎<b class='flag-5'>知識點</b>實例<b class='flag-5'>講解</b>

    嵌入式知識點總結

    嵌入式知識點總結(arm嵌入式開發(fā)led過程)-嵌入式知識點總結? ? ? ? ? ? ? ? ? ??
    發(fā)表于 07-30 14:20 ?23次下載
    嵌入式<b class='flag-5'>知識點</b>總結

    電力基礎知識點合集

    電力基礎知識點合集
    發(fā)表于 03-14 16:35 ?0次下載

    詳解射頻微波基礎知識點

    詳解射頻微波基礎知識點
    的頭像 發(fā)表于 01-29 10:28 ?2153次閱讀

    PCB設計指南

    本文就重點講解PCB設計指南,99%的PCB工程師容易忽略的進來
    的頭像 發(fā)表于 03-20 18:20 ?974次閱讀
    PCB設計<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>

    數(shù)字電路知識點總結

    本文整理了數(shù)字電路課程中的相關基本的知識點和較為重要的知識點,用于求職的數(shù)電部分的知識準備,差缺補漏。
    的頭像 發(fā)表于 05-30 15:07 ?4230次閱讀
    數(shù)字電路<b class='flag-5'>知識點</b>總結

    STM32 RTOS知識點

    電子發(fā)燒友網(wǎng)站提供《STM32 RTOS知識點.pdf》資料免費下載
    發(fā)表于 08-01 14:28 ?3次下載
    STM32 RTOS<b class='flag-5'>知識點</b>