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系统的总体设计[1-2]
系统硬件主要由信号采集模块、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 硬件设计[3]
系统中的FPGA输入时钟由外部晶振提供,为20MHz。FPGA的复位信号通过SEP3203的I/O口实现。本系统有2个触发信号:硬件触发信号和软件触发信号。硬件触发信号低电平有效,软件触发信号高电平有效。首先,SEP3203处理器产生复位信号复位FPGA内部的逻辑电路;当FPGA检测到任何一个有效触发信号后,会按照SEP3203处理器配置的分频因子,将in_clk分频后输出p_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软件设计[4]
一旦软件使能系统,FPGA就会输出p_clk给A/D采样电路。p_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/p_clk)×1024,数据从FIFO读入到结果输出的时间为580μs左右,所以当用1.7 MHz以下的频率采样A/D数据时,系统工作正常。若需要更高的A/D采样频率,则可通过优化数据处理过程来实现。
另外,为了提高软件的执行速度,将代码放在SEP3203处理器的eSRAM中执行。它是片上SRAM,实现了单周期数据读/写,可以提供比外存高得多的性能(0.89 MIPS/MHz),极大地缩短了软件执行时间,提高了系统性能。
6 总结
本文给出了SEP3203处理器的FPGA数据通信接口设计,限于篇幅,具体的硬件电路和软件源代码未能详细列出。目前,该系统已在东南大学ASIC中心GE02实验板上调试通过,可以正常工作。