一种基于FPGA的PXA270外设时序转换接口设计
1 引言
ARCNET协议应用于高速动车组列车通信网络时,产生中央控制单元处理器PXA270与专用协议控制器件COM20020相连的时序不匹配问题,若用通用数字电路模块进行时序转换,PXA270需占用PXA270专门的资源(CPU时间片)对 COM20020的寄存器、数据包缓冲区进行低速读写访问(对COM20020的相邻两次读操作相隔至少300 ns),这样将增加处理器的负担。基于这种现状,提出一种基于FPGA的PXA270外设时序转换接口设计方案,以FPGA为桥梁进行时序转换,并增加存储器直接访问DMA(Direct Memory Aeeess)功能,即FPGA自动完成数据包的收发工作,PXA270则只需高速读写访问FPGA中的同步双口RAM。
2 时序转换接口整体设计
2.1 FPGA对外接白
采用FPGA连接PXA270处理器与外设以解决PXA270处理器与外设直接连接时的时序不匹配问题。如图1所示,FPGA从PXA270处理器获得地址总线(ADDRBUS[17..14], ADDRBUS[9..0]),片选信号(SYSCS5),读允许(SYSOE),写允许(SYSWE),并提供双向数据端口DATABUS[7..0] (可根据实际应用修改为32位或16位等),中断(interrupt);同时,FPGA向COM20020提供特定的总线接口,包括 COM20020_DS,COM20020_CS,COM20020_DIR,COM20020_DATABUS [7..0],COM20020_ADDRBUS[2..0]等。
2.2 内部功能实现
PXA270和外设之间的连接是将FPGA中的双口RAM作为数据中转站,以此间接相连。该设计由以下4个功能模块组成。(1)PXA270对外设指定寄存器单次写操作PXA270先将所要写的数据送人双口RAM,然后PXA270向FPGA的命令寄存器写入对该外设指定寄存器的单次写指令,然后FP-GA根据接收到的命令将RAM中的数据输出到外设数据总线,同时给出对外设的写时序。
(2)PXA270对外设指定寄存器单次读操作PXA270先向FPGA的命令寄存器写入对该外设指定寄存器的单次读指令,此时,FPGA给出对外设的读时序,并驱动RAM的地址总线、写时钟等信号,将外设数据总线上的数据传送到RAM中。再延时1μs,PXA270从RAM中读出数据。
(3)PXA270对外设批数据写操作与单次写操作不同的是,PXA270需先将所要写入的数据存储到RAM的连续空间,然后向FPGA的命令寄存器写入批数据写操作指令,FP-GA根据接收到的命令将RAM中的数据分次送至外设数据总线,且需保证向COM20020的写时序与之同步。
(4)PXA270对外设批数据读操作 由FPGA给出对外设的连续多次读时序将外设中的数据送人RAM,完成存储工作。PXA270等待批数据读完成中断发生后对RAM进行连续读。
3 功能模块设计
3.1 时序发生模块设计
读写时序的共同要求为:片选信号CS必须先于DS至少5 ns,并且只允许在DS无效之后CS才能恢复为高电平;读写方向信号DIR应在DS有效前至少10 ns建立;DS高电平宽度不小于20 ns。两者的不同要求:写时序的地址总线先于操作脉冲DS至少15 ns建立,DS低电平不小于20 ns,数据总线有效数据必须在DS变高之前至少30 ns建立,保持至DS变高后至少10 ns;而读时序的地址总线先于片选信号至少15 ns建立,DS低电平不小于60 ns,DS变低到数据总线数据有效的间隔最大为40 ns,DS变高到数据总线高阻抗的间隔最大为20 ns,这是COM20020作为数据输出方给访问设备提供的特性。针对以上读写时序的要求,具体设计如下:DIR在一次操作中只有高或低电平一种可能,通过命令寄存器在操作前事先给出,而后给出使能信号,DS在CS有效之后变低,而在CS无效之前变高,以便数据可靠锁存。
图3为COM20020的时序原理图,从时序分析可得出如下设计方案:DIR用于指示操作是读还是写,DIR=‘1’为读,否则为写。在操作前先对DIR 赋值;在EN有效时选择CS,CLK的下一次上升沿变为有效。这样是给写操作对COM20020数据总线准备数据之用,不影响读操作;DS选择在CS有效的下一个CLK上升沿变为有效,但在CS无效前两个时钟周期给出上升沿,以满足"片选信号CS必须先于DS至少5 ns,并且只能在DS无效之后恢复为高电平",并且DS中间应有至少60ns的时钟宽度,因而保持3个CLK周期有效。图4为CommandGenerator时序仿真图。采用计数器进行时序同步。以下给出VHDL源代码。
图5为批数据从WRRAM向外设传送的连续时钟产生和自动地址生成原理图。其中,lpm_counter0为带有异步清零和进位信号的增计数; AutoAccessDataNumsOnce在EN='1'时,产生一次批传送时钟,根据COM20020的长短数据包传送要求,在CCESSTYPE =‘1’时传送长数据包(512 B),否则传送短数据包(256 B)。FRE信号同时提供WRRAM的rdclock和lpm_counter0的clock信号。
- 用大电流LDO为FPGA供电需要低噪声、低压差和快速瞬态响应(08-17)
- 基于FPGA 的谐波电压源离散域建模与仿真(01-30)
- 基于FPGA的VRLA蓄电池测试系统设计(06-08)
- 降低从中间总线电压直接为低电压处理器和FPGA供电的风险(10-12)
- FPGA和功能强大的DSP的运动控制卡设计(03-27)
- DE0-Nano-SoC 套件 / Atlas-SoC 套件(10-30)