周悦芝,董代洁
(清华大学计算机科学与技术系,北京 100084)
FPGA 可编程器件在硬件设计中的应用越来越广泛,特别是随着FPGA 器件性能不断提高、容量和密度的不断增大,其应用覆盖到了通信、电子、多媒体处理、汽车、医疗等行业。我校开设的计算机系统接口硬件实验课程从90 年代就采用了EDA 的设计方法。随着计算机接口技术的不断发展和演化,原来基于低端FPGA 芯片的实验平台已经不能满足教学的需求,亟须更新换代。之前作者使用自制的以XC2S300E为主芯片的实验装置能够满足大部分接口设计的需求,包括网络和USB接口设计,但是在用EDK 嵌入式开发系统设计USB接口时,片内存储器的容量和逻辑单元已用到了极限,不可能再做更多的扩展,因为综合性的设计有时需要更多的逻辑密度和存储空间。在这样的背景下,需要将实验平台的FPGA 片内逻辑密度和存储容量提高;其次,FPGA 也需要增加更多的特性和功能,如更强的DSP处理的能力等;同时,还需要对一些外围器件进行更换,使接口功能更接近目前的功能需求。因此,新的实验平台除了够让学生用一般逻辑设计接口以外,还能够让学生在使用EDK 方式做系统一级的综合设计时不受到逻辑资源和存储资源的限制,同时也可以做DSP 信号处理方面的设计。因此,作者重新设计并开发了新一代的基于高性能的计算机系统接口实验平台。
1.1.1 功能设计
FPGA 的生产厂家在提供硬件芯片的同时还会与合作商推出配套的开发设计平台。FPGA 生产厂商Xilinx公司提供的新一代软件设计平台Xilinx ISE Design Suite 12支持3种设计方式:一种是在集成环境Xilinx ISE Design Suite 12 下的软件平台ISE Design Tools,它支持用HDL 硬件描述语言来设计硬件;第二种是EDK 嵌入式开发工具,支持设计片上系统,可以将系统的模块或自设计的模块调入其中;第三种是DSP 开发工具,采用System Generator 工具与Matlab 工具绑定,进行信号处理、数据算法方面的开发,然后形成HDL 模块。另外还集成了仿真工具ModelSim、在线逻辑分析仪ChipScope、嵌入式固件调试工具SDK 等。作者在设计实验时进行了多方面的考虑:首先让学生通过一些基本的训练来熟悉各种工具的使用,HDL 语言的用法等;然后再增加一些比较基本的接口设计,这些设计可以采用HDL 逻辑设计也可以用EDK 的方式进行,如LCD 显示、RS232串行通信和SRAM 输入输出等,这些模块是常用的接口,在后来设计的实验中可能要用到,使学生得到阶梯形的训练;最后,由学生选做一个大实验,综合运用EDK和上述的小模块完成一个综合性的接口设计,加深对接口技术的理解,提高自己的接口设计和实现能力。据此,作者共设计并验证了8 类实验,每类实验的内容、实验目的和设计方法如表1[1]所示。
表1 目前已验证的实验
1.1.2 平台模块设计
总体设计方案的确定要根据教学的需求决定实验装置包含哪些待设计接口及这些接口具备的性能参数。根据教学的需求,最复杂的接口设计是嵌入式主USB,需要54 767个逻辑单元、1.08 MB的存储容量。首先确定主芯片的型号是 Spartan6 系列的XC6SLX45T,该芯片系统时钟可达1GHz,有150 000个逻辑单元,片内存储器BRAM 最高为4.8MB,内含1个PCI Express硬核,以及足够的硬DSP处理片[2]。这种芯片不但能够满足实验平台的参数需求,并且Spartan6系列的FPGA 在成本上也是属于商业型高性价比的产品。每一个接口的设计基本上都是一个外围接口器件与FPGA 的结合,外围器件的选择主要根据接口性能的要求。在主芯片和接口器件选定的情况下,决定供电方案和系统时钟。板上还需要设计配置电路,以供编程FPGA 用。
实验平台和实验设计是在原有的实验装置上进行改进的,并且新开发的实验一般会在厂家推出的对应主芯片的开发板上先做相近的验证,因此Xilinx 公司推出的SP605开发板也是作者方案设计及实验验证的参考平台,新实验平台的型号定为EDK-SP6ADSPTXMFI00。
实验板上主要的功能分为5个部分:供电、系统时钟、配置电路、主FPGA 器件和接口(如图1 所示)。供电部分对板上所有电路提供电源;系统时钟主要是对FPGA 提供时钟源;配置电路用于对FPGA 编程;接口部分一般采用专用接口器件和FPGA 连接,通过对FPGA 内部的设计与外部接口器件共同组成一个完整的接口电路,每一个接口都配有一个外部接口器件。这些功能模块的详细设计将在后面阐述。
图1 实验装置硬件结构框图
1.2.1 主芯片、供电及系统时钟
这部分的设计如图2 所示,前面已经提及XC6SLX45T 作为主FPGA 芯片,这种FPGA 内部包含4个BANK,各个BANK 的IO 可以单独供电,但一个BANK 内部的IO 供电必须一致,IO 供电与外部接口器件的供电要求必须一致。所以需要将供电要求一致的接口安排在一个BANK 上,这里以IO 电压3.3 V 为主,只有BANK2采用了3.3V 和2.5V 可选的设计。BANK2上主要连接FMC扩展接口,实际上是待定的接口。
在设计上电源部分采用了220V 交流转12V 电源模块,然后用4个TPS54620器件将12V 分别转换成5V、3.3V、2.5V 和1.2V 电压;FPGA 的IO 和配置供电选择3.3V;核电压为1.2V,2.5V 作为备用;5V 用作音频接口放大电路的供电。
FPGA 内部提供了大量的时钟网络,包括全局和局部时钟布线,内部有6个CMT 时钟管理器,能够进行0°~270°移相、倍频和2~16分频。在设计中作者选用了100 MHz的主频时钟输入到FPGA 的全局时钟输入端,同时还设计了一个备用时钟连接接口。各个外部接口器件上的时钟输入都是通过FPGA 分频后再接入的。
图2 主芯片、供电及系统时钟结构图
1.2.2 配置电路
系统设计了3个配置通道:通过主机经USB/Jtag编程;先将配置文件下载到SPI Flash,然后上电自动编程FPGA;ACE配置控制器,通过它的控制外部CF卡可以配置FPGA 或与之通信[3]。3个可配置器件以菊链方式串接,其结构如图3所示。
图3 FPGA配置电路结构图
1.2.3 接口
系统包含各种较通用的接口,如VGA、音频、网络、USB 接口等,详见表1。VGA 和音频接口分别选用了较简洁的器件AD7125 和AK4520,AD7125 器件的RGB各颜色分量最高可以采用8位数据宽度,像数点时钟可以高达240 MHz,支持显示多种高清模式[4]。音频器件AK4520可以有3种主频模式和4种串行数据流模式,采用双声道播放[5]。在USB接口的设计方案中,保留了以往的PDIUSBD12作为从设备接口设计外围器件。该器件的好处是体积小,器件内包含了USB底层的部分硬件协议,如串行接口引擎、端点FIFO、基本数据包的接收、发送,以及针对不同数据包发出不同的中断指示,这些功能都通过2个寄存器及1个MPU 接口与外部控制器通信,并且厂商还提供了对该器件底层访问的命令代码[6]。而FPGA承担了初始化外部USB控制器、接收并识别从主机经PDIUSBD12传来的命令或数据,并作相应的回应,使用这种器件作外围器件可以让学生在设计中接触到USB协议的具体细节。同时还增加了另一款Cypress公司的嵌入式USB 器件,作为嵌入式主USB 接口设计。该器件具有USB2.0及以下协议的功能,器件内部包含一个CPU 和配套的软硬件体系[7]。设计包含对Cy7c67300的编程和FPGA 内部硬件搭建以及软件的编程,这是一种综合性较强的设计,且可以不涉及USB协议的细节。网络接口采用88E1111,该器件可以用于千兆网络传输,具有网络物理层的硬件功能[8]。PCIE接口是采用了FPGA 内部的PCIE硬核,外部连接只是连线接口。
1.2.4 布线
FPGA 是484管脚的BGA 封装,88E1111是96管脚的BCC封装,其他的器件有LQFP、TQFP等封装,PCB布线采用了8 层板工艺。在上述设计和研制方案完成后,作者完成了逻辑图的设计,并委托依元素科技有限公司进行了布线和生产。图4是研制完成的EDK-SP6ADSP-TXMFI00 实验平台实物样机。
图4 实验平台实图(实物尺寸:34cm×17cm×12cm)
网络接口实验是以一个IP 协议栈为基础的、用VHDL实现的工程,该工程具有多层次的结构,基本上是以功能来划分,功能模块分为3个层次:传输层、网络层和以太层。实验一般根据学生的情况设计1个或2个层次的内容,多数情况是完成以太层的设计,包括接收和发送模块。可以1个学生单独设计或2~3个学生协作完成,最后把各自的部分连接起来,通过Ping命令检测实现的正确性。
网络接口设计较复杂,以设计以太层为例:首先要把该层次的输入输出模块与其他层次的接口关系给出来;然后再给学生一个参考设计流程,学生在此基础上进行设计和仿真。该模块与物理层的关系是通过FPGA 的IO 输入输出与外部网络物理层器件88E1111的管脚连接,与IP 协议栈的其他模块有关联的有IP层的输入输出模块、差错检测CRC模块、ARP地址解析模块以及SRAM 存储器模块。
在以太网发送接收模块的设计时,因为要和其他模块衔接,相互之间的接口关系至关重要,如果只是通过对协议的了解,那么就需要完全读懂其他模块的程序,因此在给出待设计模块与其他模块的信号关联时,同时将仿真波形直观表达给学生,这样在设计的时候更便利一些,也更有利于学生对网络协议的认识。图5和图6分别是以太层接收和发送模块的流程图[9]。
USB接口实验是利用嵌入式开发平台EDK 在实验板上实现USB 主设备的设计,在实验板上连接了USB键盘以后能在LCD 上显示USB键盘的输入值。
2.2.1 硬件设计
硬件设计的方案是在FPGA的内部、采用SOPC的方式搭建一个带有软核CPU 的片内系统,以及能够和外部Cy67300通信、显示从Cy67300传来的键盘输入数据的接口控制器,另外还有几个基本的IP,比如时钟分频器、RS232、中断控制器等,这个工程的各个控制模块采用的是系统提供的IP。FPGA 与Cy67300通信通过Cy67300的HPI接口,HPI包含4个对外通信的端口,这4个端口分别是地址、数据、命令和状态端口。FPGA片内硬件系统构成如图7所示。
图5 以太层接收模块流程图
图6 以太层发送模块流程图
系统建好以后每个模块需要进行信号连接和参数配置。模块之间的信号连接只需定义相同的信号名,信号从FPGA 输入和输出需要一个后缀为UCF的文件来定义。
图7 FPGA片内硬件系统构成
2.2.2 软件设计
软件分为2个部分:一部分是FPGA 片内CPU 的指令,负责控制xps_epc与CY7C67300进行通信,以及控制LCD的显示等;另一部分的代码就是USB控制芯片的代码,包括BIOS的汇编代码和应用程序,汇编代码存入与cy7c67300相连接的eeprom 中。应用程序先要编译成BIN 文件,再通过一个转换程序转换成文本文件,把它作为FPGA 固件程序的头文件,这个应用程序是通过FPGA 内部的固件程序再经xps_epc控制器送到cy7c67300的RAM 中。CY7C67300在启动后会从自己的BIOS中调用基本的任务,包括初始化任务、空闲任务和回收任务,然后进入等待中断状态,当有中断发生时会启动相应的中断程序和应用程序。
上述只是简述了2个典型实验的基本过程,详细的实验介绍可参见文献[10]。
作者在研究生的微型计算机系统接口技术课程的教学中使用该平台已经2个学期,收到了良好的效果。该平台目前已在全国各大学进行推广,配套的教材被列入“十一五”国家级规划教材。通过在该平台上的教学和实验过程,学生一方面接触了如何用硬件编程语言设计接口,另一方面也从全局的角度理解了FPGA嵌入式设计的流程,包括软件层次和硬件层次,熟悉了最新的EDA 开发工具以及仿真、测试的方法,能够更加透彻地理解各种接口技术。因为新平台提供了更大的容量、速度以及更多的软硬资源,改善了学生创新实验的条件,在培养学生的动手能力和扩大了学生知识面的同时,能够激发他们的创新能力。有的学生将自己所学专业的知识应用到了接口设计中,每一次课程实验完成后都有很多创新点,学生感觉收获很大,这也推进了实验课程的不断改革和深化。
(
)
[1]全成斌,管晓培,李山山,等.计算机硬件实验统一平台设计[J].计算机教育,2008(18):3.
[2]Xilinx.Spartan-6 Family Overview[EB/OL].(2011-10-25).http://www.xilinx.com/support/documentation/data_sheets/ds160.pdf.
[3]Xilinx.System ACE CompactFlash Solution[EB/OL].(2008-10-1).http://www.xilinx.com/support/documentation/data_sheets/ds080.pdf.
[4]Analog Devices.CMOS,330 MHz Triple 8-Bit High Speed Video DAC ADV7125/(Rev.C)[EB/OL].(2002—2011).http://www.analog.com/static/imported-files/data_sheets/ADV7125.pdf.
[5]ASAHI KASEI.AK4520A/100dB 20Bit Stereo DS ADC & DAC[EB/OL].[2012-07-07].http://www.ic5.cn/p_AK4520A_ausM.html.
[6]Philips.PDIUSBD12 USB interface device with parallel bus[EB/OL]. (2001-12).http://www.gaw.ru/pdf/Philips/usb/PDIUSBD12.pdf.
[7]Cypress.EZ-Host?Programmable Embedded USB Host/Peripheral Controller[EB/OL].(2003-05-28).http://www.cypress.com/?docID=30079.
[8]Marvell Semiconductor.88E1111 Datasheet Integrated 10/100/1000Ultra Gigabit Ethernet Transceiver[EB/OL].(2006-02-10).http://www.marvell.com/transceivers/assets/Marvell-Alaska-Ultra-88E1111-GbE.pdf.
[9]史蒂文斯.TCP/IP 详解(卷1:协议)[M].范建华,译.北京:机械工业出版社,2007.
[10]周悦芝,董代洁.微型计算机系统接口技术实验教程:基于FPGA设计[M].北京:清华大学出版社,2011.