当前位置:首页 > 芯闻号 > 技术解析
[导读]芯片设计的重要性大家都知道,我国也正在大力发展芯片设计。业界内,如华为,都在自主探讨芯片设计。为增进大家对芯片设计的了解,本文将为大家带来芯片设计的示例,主要在于讲解以太网控制器芯片设计与实现。如果你对本文的内容存在一定兴趣,不妨继续往下阅读哦。

芯片设计的重要性大家都知道,我国也正在大力发展芯片设计。业界内,如华为,都在自主探讨芯片设计。为增进大家对芯片设计的了解,本文将为大家带来芯片设计的示例,主要在于讲解以太网控制器芯片设计与实现。如果你对本文的内容存在一定兴趣,不妨继续往下阅读哦。

网络控制器芯片的功能与设计实现

IEEE 802.3协议是针对以太网CSMA/CD标准的传输介质物理层(PHY)和介质访问控制协议(MAC、Media Access Control)来定义的。芯片由PHY、发送模块、接收模块、FIFO、控制模块组成,其中控制模块包括寄存器堆、DMA(Direct Memory Access)模块、流量控制模块、接收缓冲区和发送缓冲区组成。网络控制器芯片的功能框图如图1所示。

图1 以太网控制器芯片的功能框图

1 IEEE 802.3以太网MAC数据帧结构

在发送数据时,发送模块自动在待传数据前加上7字节的前导码和1字节的帧起始定界符,紧随的是6字节的目的地址和6字节的源地址,然后长度/类型为2字节,接着是数据区,然后是46~1500字节的数据。若发送时,数据长度小于最短长度46字节,发送模块自动填补,以达到最小长度,最后是4个字节的循环冗余校验码。

2 发送模块

发送模块的作用就是按照CSMA/CD协议发送数据包。发送模块状态机控制协调各个发送子模块的时序,发送模块状态机如图2所示。

图2 发送模块状态转换图

S_defer状态表示网络忙,若网络空闲了,经过最小的帧间隙时间,进入网络空闲状态S_idle。若需要发送数据包,经过S_pre,S_data,S_pad,S_crc等状态发送,在这当中若检测到冲突信号,就进入S_jam状态。在S_jam状态判断是local collision还是late collision,若是local collision就进入S_back状态,按照退避算法重发当前数据帧,否则直接进入网络忙状态,放弃该帧的发送。

3 接收模块

接收模块的任务就是接收数据帧。物理接口收发器PHY将收到的网络数据变成二进制数据送给接收模块,接收模块再把正确的数据经过接收FIFO和DMA的控制送给接收缓冲区。接收模块的功能还包括移除接收到帧的前导码/帧分隔符;比较目的地址,判断是否丢弃当前数据帧;对接收到的数据包做CRC校验,判断传输过程中数据是否出错。接收模块状态机是接收模块的核心,控制协调接收模块的各个子模块的工作与时序。接收模块状态机如图3所示。

图3 接收模块状态转换图

复位后,状态机进入S_idle状态,若数据是无效的,就停留在S_idle状态,否则进入S_pre状态。S_pre状态和S_sdf状态的作用就是去掉前导码和帧间隔符。当帧间隔符全部检测到,进入S_data状态,在S_data状态使用字节计数器,记录所收到数据的字节个数,用于比较目的地址。若目的地址匹配则将接收到的数据写入到接收FIFO,否则丢弃该帧,不写入到FIFO。字节计数器的作用还有判断接收到的数据包是否超过帧的最大长度。若在S_pre状态、S_sdf状态或S_data状态出现数据有效信号无效的情况,都进入到S_drop状态。

图4 核心模块的功能仿真

4 控制模块

控制模块包含DMA(direct memory access)模块、流量控制模块、缓冲区模块、寄存器堆模块和总线接口模块。DMA模块的功能是将接收FIFO的数据搬运到接收缓冲区,以及发送缓冲区的数据搬运到发送FIFO。流量控制模块端口阻塞的情况下丢帧,这种方法是当接收缓冲区开始溢出时,通过将阻塞信号发送回源地址实现的。流量控制可以有效地防止由于网络中瞬间的大量数据对网络带来的冲击,保证用户网络高效而稳定地运行。两种控制流量的方式:(1)在半双工方式下,流量控制是通过反向压力(backpressure),即我们通常说的背压计数实现的,这种计数是通过向发送源发送jamming信号使得信息源降低发送速度。(2)在全双工方式下,流量控制一般遵循IEEE 802.3X标准,是由交换机向信息源发送“pause”帧令其暂停发送。缓冲区模块由一块32KB的SRAM组成,分为接收缓冲区和发送缓冲区,接收缓冲区和发送缓冲区的大小可以由用户编程决定。缓冲区以分页的方式来管理,256B为一页。主机通过总线接口与芯片交换数据,通过读写寄存器堆来控制芯片的工作。

设计验证

本文给出核心功能的验证过程。把这些核心功能模块连接成一个环路(发送模块直接与接收模块相连接),发送模块按照802.3协议发出数据包,接收模块按照802.3协议处理这些数据包,符合要求的数据包送到(接收缓冲区),这些模块在Mentor公司的ModelsimSe5.8里面功能仿真波形如图5所示。

图5 芯片的实现流程

图中,clk为系统时钟;rst为复位信号;tx_req为发送FIFO请求信号,让DMA从发送缓冲区搬运数据到发送FIFO;tx_fifo_data_out是从发送FIFO里面出来的8数据,发送模块封装这些数据,发送给PHY;这里没有对PHY进行验证,把发送模块发出的数据TXD和数据使能TXEN直接与接收模块数据端和数据有效信号分别相连接;接收模块把TXD进行串并转换,得到8为rx_data;byte_cnt为接收到rx_data的个数。

功能仿真通过之后,把核心模块连接成一个整体(SRAM直接调用Quartus II的IP Core),通过Quartus II综合以后,下载到FPGA开发板里面。用FPGA模拟网络控制器芯片,与计算机进行通信。FPGA与PC通过RJ-45相连。应用软件发一数据包给FPGA,接收模块接收到数据包后,通过DMA将数据从FIFO搬运到接收缓冲区。一包数据接收完成后,通过附加逻辑,让FPGA发送出刚刚接收到的数据包,附加逻辑还完成了把接收到的数据按位取反的功能。应用软件显示PC收到的数据包,通过比较PC发给FPGA的数据包和FPGA发送给PC的数据包,验证了核心模块的功能正确(FPGA的附加逻辑将接收到的数据包进行了按位取反操作)。

芯片实现

设计验证通过以后,经过图5所示的流程,得到整个芯片的版图。

本次流片采用华虹NEC 0.35μm CMOS工艺,芯片面积为5640μm×5480μm(不计划片槽和缓冲区),芯片有100个管脚。芯片的右上部分是实现MAC层的数字区,左下区域是华虹NEC提供的IP Core--32KB的SRAM,用作缓冲区,右下区域完成PHY功能,周围是管脚。

以上便是此次小编带来的“芯片设计”相关内容,希望大家对本文的内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对二极管的认识,本文将对续流二极管、续流二极管的工作原理以及二极管在工业产品中的应用予以介绍。

关键字: 二极管 指数 续流二极管

通过本文,您将了解到二极管反接是否有电压以及二极管在电子电路中的应用。

关键字: 二极管 指数 稳压电路

为增进大家对二极管的了解,本文将对ESD二极管和TVS二极管之间的区别予以介绍。

关键字: ESD TVS 二极管 指数

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术

为增进大家对LED显示屏的认识,本文将对节能LED显示屏的设计予以介绍。

关键字: LED 指数 显示屏

为增进大家对LED显示屏的认识,本文将对LED显示屏的部件组成、LED显示屏的选型技巧予以介绍。

关键字: LED 指数 显示屏

LED显示屏的身影。为增进大家对LED显示屏的认识,本文将对LED灯珠对LED显示屏的影响予以介绍。

关键字: LED 指数 显示屏

为增进大家对双电层电容器的认识,本文将对双电层电容器物料、双电层电容器的优缺点予以介绍。

关键字: 电容器 指数 双电层电容器
关闭
关闭