如何連線nios ii和sdram
sdram和nios ii連線的典型電路框圖如下圖所示。sdram和system使用同乙個pll輸出時鐘,可以保證system clock和sdram clock的相對抖動比較小。外部晶振的時鐘送入pll,然後由pll產生兩個同頻的時鐘乙個供給nios ii系統使用,另乙個供給sdram使用。(把pll設定成zero buffer mode可以比較方便地控制sdram clock和輸入時鐘extern clock的相位關係。)nios ii系統中的sdram控制器和sdram通過雙向資料線以及其它的單向控制線和sdram相連。
sdram clock通常是e0輸出或者c2輸出,e0和c2都是pll專用於輸出外部時鐘的,有比較小的抖動。由於乙個fpga中通常有若干個pll,綜合後使用哪個pll是由輸入時鐘extern clock決定的,所以sdram clock必須和extern clock是同乙個pll的專用輸入管腿和專用輸出管腿。除錯sdram和nios ii的最關鍵是調整sdram clock的相位。下面推導sdram clock和extern clock的相位關係。
用實線向上箭頭表示extern clock的上公升沿,用虛線向上箭頭表示sdram clock的上公升沿。先看第一種情況:fpga輸出資料,而sdram取樣資料。fpga在extern clock上公升沿的時候送出資料,經過最大tcoutmax(fpga)的時間在fpga的管腿輸出,由於sdram的輸入建立時間為tsu(sdram),所以sdram clock的取樣時機必須在訊號到達sdram後再等tsu(sdram)。忽略pcb板傳輸延時,有:
tlead=t-(tcoutmax(fpga)+ tsu(sdram));其中tlead為sdram clock相對extern clock的最大提前量,t為時鐘週期。
在下乙個時鐘上公升沿來了後,fpga會驅動新的訊號,在經過最小tcoutmin(fpga)的時間(相當於輸出保持時間)可能把先前驅動的訊號沖掉,而sdram要求輸入訊號要求在取樣的時候保持tih(sdram)的時間,所以sdram的取樣時機必須在tcoutmin(fpga)到來之前tih(sdram)。忽略pcb板傳輸延時,有:
tlag=tcoutmin(fpga)-tih(sdram);其中tlag為sdram clock相對extern clock的最大落後量,tih(sdram)為sdram輸入保持時間。
第二種情況:sdram輸出資料,fpga取樣資料。分析和上面類似,最後有:
tlead=tcoutmin(sdram)-tih(fpga);
選取最小的tlead和最小的tlagsdram clock的允許最大提前量和最大的落後量。舉個例子:nios ii和sdram(mt48lc4m32b2-7)相連主頻100mhz。其資料如下:
- data in: tsu= 2 ns, tih= 1 ns
- data out: toh(tcoutmin)= 2.5 ns, thz/tac(tcoutmax)= 5.5 ns (cl=3)
l 2.5–5.5 ns (data undefined)
fgpa的資料可以在編譯報告的時序分析部分得到,tcoutmax(fpga),tsu(fpga),tih(fpga)分別可以從tco,tsu,th部分得到各個sdram相關訊號的最大值。而tcoutmin(fpga)則可以執行fast timing model timing analyzer來得到。
比如:- data in: tsu= 1.75 ns, tih= 0 ns
- data out: tcoutmin(fpga) = 2 ns, tcoutmax(fpga)=5.5 ns
tlead=t-(tcoutmax(fpga)+ tsu(sdram))=10ns-5.5ns-2ns=2.5ns
tlead=tcoutmin(sdram)-tih(fpga)=2.5ns-0ns=2.5ns
選乙個小的,仍然是2.5ns。即tlead=2.5ns
tlag=tcoutmin(fpga)-tih(sdram)=2ns-1ns=1ns
tlag= t-(tcoutmax(sdram)+ tsu(fpga))=10-5.5ns-1.75ns=2.75ns
選乙個小的,即tlag=1ns。
所以sdram clock的相對external clock相位為-2.5ns~+1ns之間。在生成pll時指定在這個範圍內的相位偏移就可以了。
注意:因為fpga的時序分析報告都是以external clock來算的,所以我們並沒有使用system clock來分析。
有關FPGA網口的開發(nios版)《一》
對於nios的網口開發相對於直接用vhdl語言編寫網口驅動要簡單很多,依靠我的專案的,研究了nios很久,現在將其整理一下以便大家共享。我使用的de2的板子上面的網絡卡晶元是dm9000a,在nios的外設中沒有這塊網絡卡晶元外設,要自己新增。首先從網上找到dm9000a的驅動和外設描述 這些網上都...
有關FPGA網口的開發(nios版)《二》
有關dm9000a驅動和外設描述新增的問題講過了,在其中我遇到在新增lwip時nios軟體報錯 沒有找到mac 我換成較低版本的編譯就沒有這個問題了,可能de2上帶有的原始碼版本比較低不太好使用。我也致電給賣我的de2的 商詢問了這個問題,他們說網口開發,他們都是6.0編譯的。在這個其中 商給我的網...
58266裡用到的ec標籤
items list var list的代號 action pricebacks.do?method parentpayfeeviewall action路徑,必須在web.xml中能找到 proprietorpayback imagepath images table gif 路徑,必須在webr...