歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

DM9000時序設置

想了解一下DM9000的移植修改原理,所以分析了一下時序圖和引腳連接

首先看一下DM9000的引腳和MINI2440的引腳連接

DM9000  MINI2440 功能描述

SD0   DATA0  數據信號

|          |

SD15  DATA15  數據信號

CMD  ADDR2  識別為地址還是數據

INT   EINT7  中斷

IOR#   nOE   讀命令使能

IOW#  nWE   寫命令使能

AEN   nGCS4  片選使能

可以看出連接了16條數據線,1條地址線,而這唯一的一條地址線用於判斷數據線傳輸的是地址還是數據,所以這16條數據線為數據和地址復用

而片選信號使用的BANK4,則訪問0x2000 0000 – 0x27FF FFFF這個范圍的地址時會激活片選使能信號nGCS4

而在MINI2440提供的內核中,DM9000的地址IO地址為0x2000 0000,數據IO為0x2000 0004

則向地址IO寫數據的時候不會激活ADDR2,所以向DM9000傳送的數據為地址,而向數據IO寫數據的時候會激活ADDR2,所以向DM9000傳送的數據為數據

現在看看DM9000和S3C2440的時序信號

DM9000的寫時序

IO16,IO32這兩個引腳在MINI2440並沒有連接,所以不看這兩個引腳的時序

呢麼整理如下:

還有就是寫命令使能結束後到下一個寫命令使能需要最少84ns的間隔時間,為T6

然後是S3C2440的寫時序,由於DM9000是連接在BANK4上的,而BANK的寫時序如下

由於DM9000在MINI2440上只需要片選使能,寫命令使能和數據信號,所以我們不看ADDR和nBE信號,呢麼整理如下

呢麼這些值為多少呢?~

來看看BANKCON4

這裡的值以時鐘為周期,而BANKCON是接在Memory Controller上的(參考S3C2440A數據手冊的表1-4),而Memory Controller使用的是Hclk總線時鐘信號(參考S3C2440A數據手冊的圖7-1,感謝kasim大大指點),根據S3C2440手冊,Hclk是由Fclk分頻來的,具體的分頻比每個板子的設置不一樣,所以這裡頻率的設定要自己根據板子的設置來分析,假設主頻為400MHz,然後 Fclk,Hclk,Pclk的分頻比為1:2:4,呢麼Hclk就是200MHz,呢麼每個時鐘周期就是5ns

開始和DM9000的時序圖進行對比,計算

Tcos對應T1,呢麼最少應該為5ns,也就是1個clock

Tacc對應T2,呢麼最少應該為22ns,呢麼我們這裡最少也要選6個clock,也就是30ns

Toch對應T5,在這裡無設置,不過根據字面意思,我認為Tcoh就是Toch,Toch最少應該為5ns,也就是1個clock

Tcah對應T4,由於之前已經有Toch了,呢麼這裡可以設置為0ns,也就是0個clock

在S3C2440中,一個寫命令使能結束到下一個寫命令使能開始的時間間隔為Toch + Tcah + Tacp + Tacs + Tcos

Tacs是地址信號之後片選信號的起始間隔,我們這裡先設為0ns,也就是0個clock

Toch + Tcah + Tacp + Tacs + Tcos應該 > 84

5 + 0 + Tacp + 0 + 5 > 84

Tacp > 74

但是Tacp的最大值為6個clock,也就是30ns,還少了44ns,大概9個clock

只要修改Toch Tcah Tacs和Tcos了,雖然我們給的都是最小值,但是為了信號穩定,可以放寬其范圍,

將Tcos和Toch設置為4個clock

將Tacs和Tcah設置為2個Clock

這樣總時間為 (4 + 2 + 6 + 2 +4)*5 = 90ns

最後DM9000 1個周期只能處理1個數據,所以PMC應該為normal(1data)

寫時序分析完了,現在來看看讀時序

DM9000的讀時序如下

呢麼整理如下:

讀命令使能結束後到下一個讀命令使能需要最少80ns的間隔時間,為T6

然後是S3C2440的讀時序,時序如下

整理如下:

Tcos對應T1,呢麼最少應該為5ns,也就是1個clock,這裡設置為和寫操作一樣的4個clock

Tacc對應T2,呢麼最少應該為22ns,這裡設置為和寫操作一樣的6個clock

Toch對應T5,呢麼最少應該為5ns,也就是1個clock,這裡設置為和寫操作一樣的4個clock

其它時間間隔先設置和寫操作一樣

Tcah為2個clock

Tacp為6個clock

Tacs為2個clock

PMC為normal(1data)

然後看看滿足讀命令使能結束後到下一個讀命令使能的時間間隔80ns不

還是Toch + Tcah + Tacp + Tacs + Tcos

(4 + 1 + 6 + 1 + 4) * 5 = 15 * 5 = 90ns,能符合條件

呢麼BANKCON4的設置如下

Tacs = 2個clock = 10

Tcos = 4個clock = 11

Tacc = 6個clock = 100

Tcoh = 4個clock = 11

Tcah = 2個clock = 10

Tacp = 6個clock = 11

PMC = normal(1data) = 00

也就是0x5CEC

再來看BWSCON,這個寄存器負責配置BANK的帶寬和等待狀態

我們接的是nGCS4,呢麼主要就看ST4,WS4和DW4這幾個字段

DW4的描述為BANK4的帶寬,DM9000接了16條地址線,呢麼帶寬就是16,這裡選01

WS4的描述為是否為BANK4使用等待狀態,DM9000沒有接WAIT引腳,所以可以不管這個字段

ST4的描述為是否為BANK4使用UB/LB(寫高/低字節使能),DM9000沒有接nWBE[3:0]這4個引腳,所以也不管這個字段

Copyright © Linux教程網 All Rights Reserved