天线|RF射频
直播中

陈杰

7年用户 1405经验值
私信 关注
[问答]

请问怎样去设计一种FPGA数据通信接口?

怎样去设计FPGA数据通信接口的硬件部分?
怎样去设计FPGA数据通信接口的软件部分?

回帖(1)

邢东

2021-5-27 13:50:56
  SEP3203处理器是由东南大学国家专用集成威廉希尔官方网站 系统工程技术研究中心设计的16/32位RISC微控制器,面向低成本手持设备和其他通用嵌入式设备。该处理器内嵌ARM7TDMI处理器内核,为用户提供了面向移动终端应用的丰富外设、低功耗管理和低成本的外存配置,整个芯片可以运行在75 MHz。数据通信系统使用的主要功能模块如下:20 KB片上零等待静态存储器(eSRAM);外部存储器接口控制器(EMI);中断控制器(INTC);DMA控制器(DMAC)。
  系统中使用的FPGA为Altera公司的Cyclone系列中的EP1C6Q240C8,拥有丰富的I/O资源和逻辑资源,外部接口遵循SRAM时序。它主要负责提供信号的A/D采样频率,并将A/D转换后的数据存储到一组FIFO中,待FIFO的FF(Full Flag)端口有效后,将FIFO中的数据读回,同时使能另一组FIFO的写时序,实现了信号不间断的采样和存储。
  FPGA将一组数据处理完毕后,以中断的方式通知SEP3203,处理器以DMA方式将运算后的结果存储到片外的SDRAM中。由于数据写满FIFO的时间大于FPGA处理数据的时间,所以整个系统实现了流水线操作。
  1 系统的总体设计
  系统硬件主要由信号采集模块、FIFO、FPGA和SEP3203处理器组成。信号采集模块主要包括信号接收器和A/D转换模块。接收到的信号首先要通过NE5534进行放大,NE5534采用±5 V供电。图1为系统总体框图。
  
  系统中的A/D转换芯片使用了ADI公司的AD1672,它采用4级流水线结构,在3 Msps采样速度下精度为12位。FIFO选用了IDT公司的IDT7202。它具有输入和输出两套数据线,独立的读/写地址指针在读/写脉冲的控制下顺序地从双口FIFO读/写数据,读/写地址指针均从第一个存储单元开始,直到最后一个存储单元,然后又回到第一个存储单元。为了支持9位数据宽度的存储,系统采用了2片IDT7202将数据宽度扩展为16位,共使用了4片IDT7202实现了FIFO的协同工作。在系统工作时,IDT7202内部的仲裁威廉希尔官方网站 通过对读指针和写指针的比较,相应给出FIFO的空(EF)和满(FF)状态指示;FPGA可以根据所获得的FIFO状态标志控制FIFO的读/写时序,实现对FIFO的读/写操作。
  Cyclone系列的FPGA支持多种I/O电平标准,包括3.3 V、2.5 V和1.8 V的LVTTL和LVCMOS电平。SEP3203处理器的I/O电平为3.3 V,与工作在3.3 V的FPGA电平兼容,可以直接相连。由于FIFO必须是5 V供电,所以FPGA将数据从FIFO读入内部存储器时,需要经过一个电平转换芯片。系统选用了IDT公司的IDT74LVC16245,它支持8/16位数据的双向传输。
  2 SEP3203与FPGA的接口威廉希尔官方网站 设计
  2.1 硬件设计
  系统中的FPGA输入时钟由外部晶振提供,为20MHz。FPGA的复位信号通过SEP3203的I/O口实现。本系统有2个触发信号:硬件触发信号和软件触发信号。硬件触发信号低电平有效,软件触发信号高电平有效。首先,SEP3203处理器产生复位信号复位FPGA内部的逻辑威廉希尔官方网站 ;当FPGA检测到任何一个有效触发信号后,会按照SEP3203处理器配置的分频因子,将in_clk分频后输出div_clk给A/D采样威廉希尔官方网站 。硬件实现框图如图2所示。
  
  A/D采样数据在采样时钟有效后短时间内可能会是无效的,所以SEP3203要配置一定的延时值给FPGA。当延时满足后,FPGA才将FIFO的写时序输出到IDT7202的写端口。确保采集到的数据为有效数据。
  图3是SEP3203处理器输入到FPGA内部的控制信号的仿真波形图。in_rst_n_a是复位信号,in_we_n和in_cs_n是SEP3203的写信号和片选信号。系统中FPGA接到了处理器的CSB片选上,该片选的地址映射默认为0x24000000~0x27FFFFFF,in_addr是地址线,in_data为输入数据。这里将延时设为2,分频因子设为10,之后通过往地址0x24000804写1,用软件使能系统。in_trig为硬件触发信号。
  
  2.2 软件设计
  一旦软件使能系统,FPGA就会输出div_clk给A/D采样威廉希尔官方网站 。div_clk可以通过软件灵活配置,这里Div_clk为1 MHz。
  
  3 FPGA与FIFO的数据通信接口设计
  在FPGA与FIFO数据通信接口设计中,FPGA主要输出控制时序到IDT7202的复位、写和读端口,实现A/D转换数据到FIFO的存储,并将数据从FIFO读入FPGA的内部存储器。一旦延时满足,FPGA就输出写时序给FIFO的写端口(nW),同时检测FIFO的nFF(Full Flag)信号。若该信号为低,则说明FIFO已经写满1 024个半字(16位)。此时,FPGA输出读时序给该组FIFO,同时输出写时序给另一组FIFO,以不间断地存储A/D采样数据。
  这部分威廉希尔官方网站 在硬件实现上比较简单,IDT7202的输出数据通过电平转换芯片IDT74LVC16245输出给FPGA,FPGA输出控制时序到FIFO。由于FPGA输出逻辑“1”时的最低电压Uoh为2.4 V,输出逻辑“0”时的最高电压Uol为0.4 V,而IDT7202输入逻辑“1”时的最低电压为2.2 V,输入逻辑“0”时的最高电压为0.8 V,所以FPGA到FIFO的控制时序无须进行电平转换,控制端口可以直接相连。
  系统中FPGA输出完全符合FIFO读写时序的脉冲,控制FIFO的读写操作。图4是仿真波形图。
  
  IDT7202的异步读写操作时序如图5所示。
  
  表1是IDT7202异步读写操作时序的参数及说明。
  
  当FPGA检测到in_ff_n_1为低时,fifo_ff_pulse就产生一个50 ns的高脉冲;检测到该脉冲后,out_wr_n_1持续高电平,out_rd_n_1输出有效读时序;同时out_wr_n_1输出有效写时序。写时序以1 MHz的频率输出持续100ns低电平的脉冲;读时序低电平持续100 ns,高电平持续50 ns。FPGA根据out_FPGA_rd信号来采集FIFO输出的数据。
  4 SEP3203与FPGA的数据通信接口设计
  数据经FPGA做算法处理后,由SEP3203处理器将结果存储到片外SDRAM中,SDRAM使用的是Winbond公司的W981216BH。硬件实现框图如图6所示。
  
  SEP3203对FPGA的访问遵循SRAM时序,图7为SEP3203读数据时的信号仿真波形图。
  
  通过DMA方式传输数据时,in_cs_n和in_rd_n信号一直为低,所以只有通过in_addr信号来控制FPGA的内部存储器地址。处理后的A/D数据扩展为32位。
  SEP3203处理器默认的AHB总线宽度是32位。当使用DMA传输时,源和目的数据可以是不同的宽度,可以等于或小于总线的物理宽度,DMAC会对数据进行适当的打包和解包,以满足AHB总线宽度。由于FPGA与SEP3202处理器之间只有16位数据总线,所以设计中源地址数据宽度设为16位,目的地址数据宽度设为32位。程序如下:
  
  5 性能分析
  为了实现系统的流水线操作,使用了EP1C6Q240C8中的PLL模块。FPGA的外部晶振频率为20 MHz,PLL提供70 MHz的时钟,主要用于A/D数据的处理和结果输出。采集1 024个16位数据的时间为(1/div_clk)×1024,数据从FIFO读入到结果输出的时间为580μs左右,所以当用1.7 MHz以下的频率采样A/D数据时,系统工作正常。若需要更高的A/D采样频率,则可通过优化数据处理过程来实现。
  另外,为了提高软件的执行速度,将代码放在SEP3203处理器的eSRAM中执行。它是片上SRAM,实现了单周期数据读/写,可以提供比外存高得多的性能(0.89 MIPS/MHz),极大地缩短了软件执行时间,提高了系统性能。
  6 总结
  本文给出了SEP3203处理器的FPGA数据通信接口设计,限于篇幅,具体的硬件威廉希尔官方网站 和软件源代码未能详细列出。目前,该系统已在东南大学ASIC中心GE02实验板上调试通过,可以正常工作。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分