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

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

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

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!

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭