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个引脚,所以也不管这个字段
DM9000时序设置的更多相关文章
- s3c2440裸机-内存控制器(三、norflash初始化-时序设置)
1.norflash与2440的硬件连接 2.初始化nor,配置nor时序 1.如图是S3C2440的内存控制器的可编程访问周期读写时序,里面的时间参数要根据外部设备的性能进行配置,这里先列出时间参数 ...
- dm9000网口收发控制以及mac地址过滤设置
目的 :完成网口收发调试 过程 : 1.网口初始化,根据芯片数据手册配置 2.网口发数,先向DM9000中的TX FIFO存入数据,然后出发发送寄存器完成发送: 3.网口接收 . ...
- Tiny6410 LCD设置
1.注意LCD的硬件连接 2.LCD初始化 2.1 初始化步骤 LCD时序设置 LCD芯片 2.2 引脚初始化 2.3 配置 MIFPCON 寄存器及SPCON 寄存器 2.4 配置VIDCONx 2 ...
- SDRAM 之时序收敛(学习了特权老师)
到现在我还是不太理解SDRAM的时序设置,但是可能蒙对了.(呵呵) 开发环境: quartus II 13.0 板子: DE2 EP2C35F672C6N 时序约束step 1:create cl ...
- NAND Flash结构及驱动函数
目标:以NAND Flash K9F2G08U0M为例介绍其结构及其驱动程序的书写 1. 结构 由芯片手册中的图可知:K9F2G08U0M大小为2112Mbits(即 256MB = 2Gb ) 共有 ...
- SAM4E单片机之旅——14、LCD之SMC的配置
在上个例子中,已经在ASF添加了ILI93xx模块,并做好了相关的声明.这次就做好SMC的配置,然后使用ASF提供的API在屏幕上打印出”Hello World!”字样. 一. 电路图 开发板的LCD ...
- msm8916 lcd 相关调试点指导
主要代码:LINUX\android\kernel\arch\arm\boot\dts\qcom\dsi-panel-trust-hx8379c-fwvga-video.dtsiLINUX\andro ...
- ARM2440换lcd
将原来的3.5寸分辨率为240x320换为480x272所需要修改的地方 时序设置: CLKVAL=4 (VCLK =10) 5< VCLK <12 每个点扫描周期 ...
- 重学STM32---(十) ——CAN通信(二)
CAN协议是非常难的,但是在stm32中却是简单的,只需要我们配置寄存器即可,,,即使这样,我在学习的时候也遇到了许多困难 1.开时钟,不用说 2.设置GPIO口,,CAN_TX复用推挽输出,CAN_ ...
随机推荐
- 微服务架构组件梳理之Netflix停更之后该何去何从
自2018年底,Netflix陆续宣布Eureka.Hystrix等框架进入维护状态,不再进行新功能的开发. 恰逢最近我打算对公司的办公项目进行微服务架构升级,所以恶补了一番微服务相关知识,在这里进行 ...
- 【Flutter 实战】各种各样形状的组件
老孟导读:Flutter中很多组件都有一个叫做shape的属性,类型是ShapeBorder,比如Button类.Card等组件,shape表示控件的形状,系统已经为我们提供了很多形状,对于没有此属性 ...
- WebApi 接口传参接参
阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.“怪异”的get请求 二.post请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.后台发送请求参数的 ...
- XmlAnalyzer1.00 源码
此工程用途:将xml同级属性/子节点按字母序排列重新输出. 源码下载: https://files.cnblogs.com/files/heyang78/XmlAnalyzer-20200526-1. ...
- stackoverflow的ret2syscall利用
ret2syscall 系统调用 ret2syscall,即控制程序执行系统调用,获取shell.Linux将内核功能接口制作为系统调用(system call),可在程序中直接调用.程序中存在int ...
- 修改mysql、sqlserver数据库默认用户,不允许为root、sa等
1.mysql cmd进入dos命令,输入mysql -u root -P 1202 -h localhost -p敲回车输入密码 use mysql; 修改用户名root为其他用户 update u ...
- unittest单元测试执行用例的顺序
打印结果如下:
- 【二叉树-最长路径系列(任意路径)】直径、最长同值路径、 最大路径和(DFS、树形DP)
总述 这类题目都是求一个最长路径,这个路径可以不经过根节点. 使用dfs(即递归地遍历树)的方法.维护一个全局最长路径max作为最终结果,而递归方法dfs返回的是含根节点的最长路径.(若不使用全局变量 ...
- 分布式系统监视zabbix讲解四之可视化
图形 概述 随着大量的监控数据被采集到Zabbix中,如果用户可以以可视化的表现形式来查看发生了什么事情,那么和仅仅只有数字的表现形式比起来则更加轻松. 以下是进行图形设置的地方.图形可以一目了然地掌 ...
- PooledByteBuf内存池-------这个我现在不太懂
转载自:http://blog.csdn.net/youaremoon/article/details/47910971 http://blog.csdn.net/youar ...