一、引 言 近年来,现场可编程门阵列(FPGA)技术以其独有的优势,在电子设计领域得到越来越广泛的应用。FPGA除具有集成度高、体积小、功耗低、电路简单、可靠性高等优点外,还有自身突出的优点,即“现场可编程性”,用户可以很方便地通过相应的软件,在较短时间内对FPGA内部逻辑反复设计或修改,直到满意为止。这就大大缩短了开发周期,提高了最终产品的性能。 以太网是最广泛使用的网络标准。它成为最受欢迎的技术,不仅因为其在市场上最低的NIC(网络接口卡)和HUB端口价格,还因为它具有维护简单、易于扩充等优点。 本文介绍的视频广播接收系统是基于标准以太网(10 Mbps)和快速以太网(100 Mbps)的系统。由于系统的主要部分采用了FPGA设计技术,使得系统的成本较低和开发周期较短,而且由于前端采用的是具有10M/100M兼容的芯片,并同时支持两种特性的以太网(全双工和半双工),有助于实现全双工和半双工以太网之间的无缝连接,从而使得该系统具有广阔的应用前景和实用性。 二、基本原理 系统实现中涉及到网络方面的许多相关技术和各种相关的协议、标准,下面作一简要介绍。 1.CSMA/CD协议 以太网用载波侦听多路访问/冲突检测(CSMA/CD)作为它的媒体访问控制协议,CSMA/CD定义了以太网节点为传输数据如何获得对网络媒体的访问。其工作过程如下: (1)如果介质空闲,则传输数据,否则,转(2); (2)如果介质忙,则坚持侦听,直到介质空闲,立即传送数据; (3)如果在传送过程中,检测到冲突发生,发送一个短的阻塞码,以确保让所有终端都检测到冲突发生,然后停止发送; (4)发送完阻塞码后,等待一个随机时间,再试图重新发送,即转(1)。 目前,实际使用较多的冲突检测方法是终端发送器把数据发送到线缆上,终端接收器又把数据接收回来和发送的数据比较,判别是否一致,若一致,没有冲突;若不一致,表示冲突发生。 2.以太网帧格式 当应用程序用UDP(TCP)传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络,其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。UDP传给IP的数据单元称作UDP报文段或简称为UDP段,IP传给网络接口层的数据单元称作IP数据报。 在OSI模型中,数据链路层传输的数据单位是帧。同样,以太网CSMA/CD也是通过帧来发送实际数据的。以太网802.3u的MAC子层的帧结构中,前导码用于物理信号的同步,为7个字节的10101010序列和1个字节的10101011序列;目的地址和源地址使用的是MAC地址,前3个字节称为Block ID,它标志生产设备的厂家并由IEEE赋值;后3个字节称为设备ID,它由厂家赋值,而且总是唯一的;数据长度指要传送的数据的总长度;数据和填充字符可以从0到1 500字节不等,若实际数据小于所需的最小长度,MAC将追加一些可变的填充字符(PAD),以维持64字节的最小帧规模。若数据比1 500字节长,则更高层(一般是第三层)将把数据字段分成不同的帧进行传送;帧校验用来确保进行正确的传送,循环冗余校验(CRC)用来进行有效帧的检查。在以太网数据包的数据部分,包含了各种上层协议的首部。在本文的系统中,包含了IP首部和UDP首部。 3.介质无关接口(MII) MII是一个用于互连控制器和收发器的全新介质无关接口,它是100 Mbit/s快速以太网开发工作的一个组成部分。此接口提供了新的物理连接机制以及控制器和收发器的功能划分。该接口主要由以下一些信号组成: (1)发送信号 包括半字节宽(Nibble-wide)的发送数据信号,加上相关的发送时钟、发送允许信号和发送差错信号。数据用时钟同步,时钟率是数据率的1/4 (即100 Mbit/s以太网用25 MHz的时钟),发送信号用于将数据从控制器移动到收发器,然后编码并发送到LAN上。 (2)接收信号 包括半字节宽的接收数据,加上相关的接收时钟、接收数据有效信号和接收差错信号。数据用时钟同步,时钟率是数据率的1/4。接收信号用于将解码的数据从收发器移动到控制器。 (3)以太网控制信号 这些信号是由收发器生成的载波侦听和冲突检测信号,用于控制器做介质访问控制。它们只用于半双工模式,在全双工模式中被忽略。 (4)管理信号 包括一个串行管理I/O信号和相关的时钟信号。用于在控制器和收发器之间双向交换配置和控制的管理信息。 三、系统设计 该系统实现的总体框图如图2所示。 其中以太网接口采用的是传统的RJ45接口,10M/100M收发器可以采用DM9101 单片实现,FPGA部分采用的是Xilinx公司的Spartan II系列的芯片,MPEG-1解码芯片采用了C-Cube公司的解码芯片。10M/100M收发器到FPGA之间采用MII标准的接口,FPGA到 MPEG-1解码芯片之间采用I2S形式的接口。 1.DM9101 DM9101是一个物理层的、单片、低功耗的100Base-TX和10Base-T操作的转换器。在介质这一边,它既为用于100Base -TX快速以太网的非屏蔽双绞线对(5类同轴电缆)提供一个直接的接口,也为用于10Base-T以太网的UTP5/UTP3提供直接的接口。通过 IEEE802.3u介质无关接口(MII),DM9101可以与介质接入控制(MAC)层相连接,确保了在不同生产商的产品之间的高度互操作性。 该芯片集成了MII标准接口、100Base-TX发送/接收器、10Base-T发送/接收器、自动协商、冲突检测、载波侦听、4B5B编/解码器、加/解扰器、串口和并口之间的转换等功能。 由于采用了MII标准接口,使得设计者可以通过该接口的管理信号线对该芯片的寄存器进行设置,从而完成对10 Mbps和100 Mbps两种速率的选择,突出了设计的灵活性。 2.FPGA设计 由于要使数据能在以太网上传输,服务器端的发送程序应该把要传输的数据进行打包(或封装)。本系统中所要传输的数据为视频数据(VCD数据),而VCD数据一般是以dat格式存放在光盘中的。因而在接收端应对接收到的数据包进行解包,并同时完成数据格式转换的功能,使得送到MPEG-1解码芯片的数据格式为dat格式的数据,从而进行解码,最后用普通的电视机就能够接收。 因而该部分主要要实现的功能是:先完成对接收到的以太网数据帧进行解包,取出封装在以太网数据帧中的数据部分,然后再分别解IP数据包和UDP数据包,把真正的具有VCD播放格式的数据取出来,经过一个先进先出(FIFO)缓冲器输出到MPEG-1解码芯片进行解码。其中在解包的过程中,要对数据进行校验,校验正确的数据包才进行传送,对于校验不正确的数据包采用了直接丢弃的方法,所采用的校验算法是循环冗余校验算法(CRC)。 设计框图如图3所示。 (1)前导检测:当系统检测到连续出现了15个nibble的1010,同时随后的一个nibble为1011时,说明一个以太网数据帧开始了,应该对该部分的数据作进一步的处理。 (2)组字节:由于从DM9101芯片出来的数据信号是以一次四位元组(nibble)的形式传输的,因而要对它进行组字节操作,每2个nibble组成一个字节,具体操作过程依据的是MII帧结构中的字节组成格式进行。 (3)CRC校验:对以太网帧中的目的地址、源地址、长度、数据进行CRC校验,并与帧的最后四个字节进行比较,如果一致,即为正确的以太网数据;若不一致,则丢弃这一帧。 (4)MPEG-1数据:取出以太网帧中的长度字节的值,用这个值来预置一个计数器,从而对数据进 行计数控制,取出其中的MPEG-1格式的有效数据。 (5)FIFO:由于普通的以太网的数据传输速率是10 Mbps或100 Mbps,而进行MPEG-1解码时的速率一般为1.5 Mbps左右,因而要对数据流进行速率调整。该FIFO直接利用了Spartan II系列芯片内部的存储模块进行缓存。 (6)同步头检测:dat格式的数据帧有一个同步头为:00FFFFFFFFFFFFFFFFFFFF00(十六进制),当检测到该同步头时,表明一个dat数据帧开始了,应将其后的数据连同该同步头信息一起输出至解码芯片。 (7)串行输出:把最后得到的数据转换为串行数据,并以I2S的格式将数据和时钟等信号输出到 MPEG-1解码芯片中进行解码。 四、仿真结果 1.组字节仿真结果 数据从2个nibble组成一个字节的仿真结果如图4所示。其中,CLK信号是25 MHz的时钟信号,DA是由4位数据组成的数据信号,它们由DM9101芯片输出;DATA为组成字节后的8位数据信号,CLK—B是由CLK信号二分频所得到的Byte时钟信号。 2.I2S格式仿真结果 以I2S格式输出的数据的仿真结果如图5所示。仿真中采用的格式是:32位BCK,MSB最先,右通道为低电平。其中BCK是位时钟信号,LRCK是左右时钟选择时钟,DATA是VCD格式的MPEG-1视/音频数据。 五、小 结 本系统所采用的FPGA芯片为Xilinx公司的Spartan II系列芯片,用Foundation软件工具开发。设计输入完成后,进行整体的编译和逻辑仿真,然后进行转换、布局、延时仿真生成配置文件,最后下载至 FPGA器件,实现其硬件功能。由于系统的很多功能由一块FPGA实现,外围器件很少,所以系统体积小、可靠性高,且器件的可编程性使得系统功能易于完善。仿真结果表明,各信号的逻辑功能和时序配合完全达到了设计要求。
|