将兼容总线视为一个独立的字符设备,为其编写驱动程序,实现对指定偏移地址的读写函数,此处的偏移地址即对应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’;
www.55dianzi.com
end if;
if rdreg< 2 or rdreg> 6 then
EIOR< 一‘1’;
EIOW < 一‘1’;
elsif rdreg一2 or rdreg= 3 then
if RDn一‘1’then
EIOR< 一‘1’;
EXDIR< 一‘1’;
elsif W Rn一‘1’then
EIOW < 一‘0’;
EXDIR< 一‘1’;
end if;
end if;
上述代码适当延迟了关闭双电源收发器的输出使能和数据流向重设时间,保证数据总线稳定,使CPU 和外设有足够的时间进行输入输出操作.
图4中曲线2是兼容PC/104地址空间内任意地址信号经收发器缓冲后的译码结果,曲线1和曲线3是对该地址进行读操作时的RDn和IOR信号.
图4中RDn由EP9315直接驱动,原始逻辑电平为3.3 V,实验电路对该信号电平进行了无时延的处理.
目前主流元器件在速度上都已能兼容PCI总线,因此尽管SMC驱动的SRAM 读写速度高于标准PC/104总线,但只要保证各控制信号问关系清晰(图4b),是不会造成总线访问失败的.
4 结束语
利用ARM 系统成本较低,功耗更小,启动速度快,指令效率高的的特点,兼取PC/AT系统和PC/104总线设备在产业化基础方面的优势,在ARM平台上构建PC/104总线,有助于利用现有资源,保护已有投资.由于ARM 与PC/AT模型在处理器架构上有本质性的差异,在ARM 平台上构建的PC/104总线在所有的具体应用中要做到与标准PC/104规范完全兼容几乎是不可能,但是在特定的应用需求及确定的操作系统下这种努力是完全可行并且有效的。对于特定的应用而言,通常只需顾及PC/104总线时序的一个子集,这就大大降低了系统现实的难度。兼容PC/104总线在使用遵守ISAPNP(Plug and Play)规范的设备时有较多的困难。另外在使用包含中断请求和DMA需求的设备时也需要专门的考虑。
本文关键字:接口 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术