首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一种基于FPGA的PXA270外设时序转换接口设计

一种基于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 时序发生模块设计
  COM20020有80xx-like和68xx-like两种总线访问方式。这里中实现68xx-like访问方式,图2为其读写访问时序。

  读写时序的共同要求为:片选信号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源代码。
返回列表