本发明涉及嵌入式计算机系统设计技术领域中的总线协议转换的设计方法,尤其是一种实现60x总线与lbe总线转换的设计方法。
背景技术:
60x总线是一种powerpc处理器独有的总线接口标准,nxp公司的60x,7xx,82xx,85xx系列的powerpc处理器都提供了60x总线接口。60x总线是一种标准总线,具有32位地址线,数据线16到64位可选,支持多powerpc芯片互连。
lbe(localbusextent局部总线扩展)总线是一种32位机载计算机总线,包括系统信号区、用户信号区和测试信号区等,它必须且仅能包含一个第一主设备,支持最多三个第二主设备,最多可支持8个设备之间的互联。
现有的lbe总线一般通过pci总线或者localbus局部总线转换而来,这种设计方法需要增加桥芯片,存在着电路设计复杂、电路板布线复杂等不足。
技术实现要素:
本发明的目的在于弥补现有技术的不足之处,提供一种实现60x总线与lbe总线转换的设计方法。本发明采用的60x总线与lbe总线转换的设计方法,电路设计大大简化,具有集成度高、实用性强等特点。
本发明的目的是通过以下技术手段实现的:
一种实现60x总线与lbe总线转换的设计方法,其特征在于:
在fpga内部设计状态机,利用状态机实现60x总线和lbe总线之间的传输协议转换,转换的具体步骤如下:
步骤一,状态机启动,进入总线空闲状态;
步骤二,等待总线主设备发起总线访问;
步骤三,总线访问计数开始;
步骤四,等待外部总线应答。
而且,步骤一所述的状态机启动,进入总线空闲状态:
总线空闲状态下,60x总线地址、数据线都不被占用,lbe总线命令信号无效,数据、地址线都不被占用。
而且,步骤二所述的等待总线主设备发起总线访问:
fpga采集60x总线的ts信号,在ts信号有效的时钟上升沿,对地址进行译码,产生decode_cs信号;对tt进行译码产生读写信号;
使能cmd信号,将cmd延迟一个周期,产生cmd_rd信号;decode_cs有效且cmd有效的时钟上升沿,产生selected_cs信号,分发给各个设备;cmd信号有效且读有效时,使能local_rd信号;从设备在收到有效的selected_cs和local_rd后开始准备数据放到60x总线上。
而且,步骤三所述的总线访问计数开始:
计数器开始计数,确认满足从设备读操作所需要的时间后(1微秒)产生wait信号。
而且,步骤四所述的等待外部总线应答:
在wait信号有效的时钟上升沿结束cmd信号,使能ta信号,cpu收到ta信号后结束dbb信号;
cpu在ta有效的时钟上升沿采集数据总线上的数据;fpga在ta有效的时钟上升沿结束cmd_rd信号、selected_cs信号、local_rd信号和xcmd信号,此时从设备结束驱动数据总线,由fpga产生ack信号,通知cpu停止驱动地址总线,该访问周期结束,总线回到空闲状态;若从设备此时无响应,则进入外部总线超时计时,当访问超时,总线回到空闲状态。
本发明的优点和积极效果是:
本发明采用fpga实现60x总线与lbe总线转换,省去了桥芯片的使用,无须增加任何外围扩展电路,可简化设计流程,增加实用性。
本发明采用ta信号实现外部设备访问握手,可实现异步双口ram等外部设备的可靠读写访问。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合附图详细叙述本发明的实施例,需要说明的是,本实施例是叙述性的,不是限定性的,不能以此限定本发明的保护范围。
一种实现60x总线与lbe总线转换的设计方法,其特殊之处在于:在fpga内部设计状态机,利用状态机实现60x总线和lbe总线之间的传输协议转换,转换的具体步骤如下:
步骤一,状态机启动,进入总线空闲状态(bus_idle);
总线空闲状态下,60x总线地址、数据线都不被占用,lbe总线命令信号无效,数据、地址线都不被占用。
步骤二,等待总线主设备发起总线访问;
fpga采集60x总线的ts信号,在ts信号有效的时钟上升沿,对地址进行译码,产生decode_cs信号;对tt进行译码产生读写信号;
使能cmd信号,将cmd延迟一个周期,产生cmd_rd信号;decode_cs有效且cmd有效的时钟上升沿,产生selected_cs信号,分发给各个设备;cmd信号有效且读有效时,使能local_rd信号;从设备在收到有效的selected_cs和local_rd后开始准备数据放到60x总线上。
步骤三,总线访问计数开始;
计数器开始计数,确认满足从设备读操作所需要的时间后(1微秒)产生wait信号。
步骤四,等待外部总线应答。
在wait信号有效的时钟上升沿结束cmd信号,使能ta信号,cpu收到ta信号后结束dbb信号;
cpu在ta有效的时钟上升沿采集数据总线上的数据;fpga在ta有效的时钟上升沿结束cmd_rd信号、selected_cs信号、local_rd信号和xcmd信号,此时从设备结束驱动数据总线,由fpga产生ack信号,通知cpu停止驱动地址总线,该访问周期结束,总线回到空闲状态;若从设备此时无响应,则进入外部总线超时计时,当访问超时,总线回到空闲状态。