SDRAM驅動需要兩個時鍾,一個是控制時鍾,一個是驅動時鍾,這兩個時鍾有一個相位差,如何產生高精度的時鍾是SDRAM能夠正常工作的關鍵,采用FPGA內部動態可重置PLL生成SDRAM所需要的時鍾頻率。
1.PLL
上圖是PLL的 官方文檔中的內容。PLL主要由前N分頻計數器(pre-divider counter),相位頻率檢測(PFD) ,電荷泵和環路濾波器,VCO(壓控振盪器),反饋乘法器計數器(M計數器)和一個后分頻計數器。
PFD檢測參考時鍾信號(fREF)和補償時鍾信號(feedback)在相位和頻率的差,然后控制電荷泵和環路濾波器,並且將相位差轉換成一個控制電壓信號,進而控制VCO。當PFD產生上升信號,VCO就增加,反之VCO下降。
上圖中電荷泵是接收PFD輸出的上升信號和下降信號給CP,CP收到上升信號,電流注入LF增大,反之減小。
LF主要是將上升和下降信號轉換為電壓,作為VCO的偏置電壓。LF還消除了CP的干擾,防止電壓過沖,最小化減少VCO的抖動。LF電壓決定了VCO的操作速度。
上圖是輸出頻率的計算公式,M和N在quartus II中類似於倍頻和分頻概念。PLL的精度由M和N的位數決定。
精簡結構如下圖所示:
2.quartus II 配置PLL操作
在PLL官方手冊中可以找到如上圖手冊,對於其他cyclone XX系列芯片,操作都是類似的。
上圖中解釋了對於cyclone xx系列最高可以跑到多大時鍾頻率。
上面公式定義了 fout時鍾和VCO時鍾,且VCO時鍾必須在300~1000Mhz之間。手冊有如下解釋。
上圖是PLL中所需要的信號接口,有些信號可以進行選擇性的使用。
inclk為時鍾輸入引腳,pllena信號在高電平時可以使能和復位PLL。當pllena為低電平時,PLL不工作,高電平PLL開始鎖相。
areset引腳要特別注意,此引腳我們經常用,此引腳是高電平復位,低電平時PLL不工作。
3.PLL時鍾補償模式
PLL支持四種補償模式,正常模式(normal mode),零延時緩沖模式(zero delay buffer mode),非補償模式(no compensation mode),源同步模式(source synchronous mode)。上述的幾種模式都支持倍頻和分頻,相移以及占空比的可調。
(1)正常模式(normal mode)
在正常模式下,PLL將輸入時鍾與參考時鍾進行鎖存對齊,輸出時鍾或者提前或者延后與PLL的輸入時鍾。
(2)零延時緩沖模式(zero delay buffer mode)
再此模式下,PLL的輸入時鍾的相位和PLL的輸出時鍾相位對齊,但是內部時鍾會延時或提前於外部輸出時鍾。在此模式下,altera推薦輸入引腳和輸出引腳必須是相同的I/O標准。
(3)非補償模式(no compensation mode)
在此模式下,PLL不會對任何的相位進行補償。輸出時鍾相位超前或遲滯內部時鍾。
(4)源同步模式(source synchronous mode)
這種情況適用於輸入數據和時鍾同時到達的情況。
4.多個頻率輸出情況
上述三個輸出時鍾都可以驅動全局時鍾網絡。c2可以驅動一個專用外部I/O引腳(PLL<#>_OUT) 。那么對於多個利用PLL輸出的頻率,VCO在處理時會倍頻。然后在輸出時再降頻,如從PLL輸出需要33MHz和66MHz,那么VCO會被設定到330MHz(這個設定需要在VCO范圍內,即300Mhz~1000Mhz)。













