基于ARM920T设计的SMC接口研究与PC/104总线仿真

时间:2010-12-13来源:网络

地址总线及访问控制信号均由CPU驱动,外部设备始终处于被动接收状态,正确设定数据流向即可.

数据总线信号是时分双向传输的,为遍免出现总线冲突,必须保证除非CPU 透过该收发器对外设进行读访问,否则收发器的CPU 侧应始终处于高阻状态.为此,16T245等具有输出使能端的器件只需使输出无效即可,而对于无使能端的收发器则应使CPU侧处于输入状态(高阻).

确认CPU 已向兼容PC/104总线发起读操作的有效方法是检查RDn的下降沿是否发生.一旦RDn下降,应立即将收发器置成从外设流向CPU方向,且输出使能有效,并至少保持至RDn上升沿之后,以保证可靠读取.

3.2 端口映射

SMC的存储器分组片选信号CSn可作为高位地址线参加这址译码.任取CSi和CSj组用于兼容总线,即可分别实现O-0x3FFFFFF的独立存储器地址和IO端口地址.可用地址数量已经远超出XT系统中的1 M(存储器)和1 K(IO端口).

在Linux系统中,io.h文件中声明了函数iore—map(),用于将兼容总线上外部资源的物理地址映射到核心虚地址空间中.iounmap()函数用于取消ioremap()所做的映射.上述操作都应在设备驱动程序中执行.在外部资源成功映射到核心虚地址后,使用指向核心虚地址的指针就可访问相应设备资源,但显然这种访问方式与在X86平台下差异较大.

将兼容总线视为一个独立的字符设备,为其编写驱动程序,实现对指定偏移地址的读写函数,此处的偏移地址即对应PC/104总线中的物理地址 .

对inb(),outb()等X86平台下的常见的底层端口操作函数,可用宏替换的方式转由驱动中的相应读写函数实现.

3.3 总线时序控制

综合前文所述,尽管SMC的SRAM 访问时序非常接近PC/lO4总线,但是要实现高兼容性的PC/lO4,仍有两方面问题需要解决,一是SMC驱动的SRAM 读写速度远高于PC/104总线,二是为解决电平兼容问题引入的总线收发器,其数据流向和输出使能需要适当的控制.

以下VHDL代码根据SMC输出的RDn和WRn设置EIOR和EIOW 时序,并适时输出信号EXIDR,EXOE控制收发器数据流向和输出使能.

ECLK是频率为27 MHz是时钟脉冲.

If ECLK’EVENT and ECLK一‘1’then

if( )then __地址无效

EXoE 一:1’;

EXDlR 一‘1’;

EIOR 一‘1’;

rdreg 一0;

else

if rdreg 1 l then

rdreg 一rdreg+ 1;

EXOE 一‘0’;

else

rdreg 一0;

EXDIR 一‘1’;

EXoE 一‘1’;

1 2 3 4

关键词: PC/104 总线 仿真 研究 接口 ARM920T 设计 SMC 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版