网卡的组成工作原理

网卡工作原理 1.认识网卡,我们上网必备组件之一。       网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个 阅读详情
网卡的组成工作原理

作者:不详

1.认识网卡,我们上网必备组件之一。
   
    网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分是做到一起的。他们之间的关系是pci总线接mac总线,mac接phy,phy接网线(当然也不是直接接上的,还有一个变压装置)。

    下面继续让我们来关心一下PHY和MAC之间是如何传送数据和相互沟通的。通过IEEE定义的标准的MII/GigaMII(Media Independed Interfade,介质独立界面)界面连接MAC和PHY。这个界面是IEEE定义的。MII界面传递了网络的所有数据和数据的控制。
而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(Serial Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。

    我们看到了,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。

    一片网卡主要功能的实现就基本上是上面这些器件了。其他的,还有一颗EEPROM芯片,通常是一颗93C46。里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等东西。

    很多网卡上还有BOOTROM这个东西。它是用于无盘工作站引导操作系统的。既然无盘,一些引导用必需用到的程序和协议栈就放到里面了,例如RPL、PXE等。实际上它就是一个标准的PCI ROM。所以才会有一些硬盘写保护卡可以通过烧写网卡的BootRom来实现。其实PCI设备的ROM是可以放到主板BIOS里面的。启动电脑的时候一样可以检测到这个ROM并且正确识别它是什么设备的。AGP在配置上和PCI很多地方一样,所以很多显卡的BIOS也可以放到主板BIOS里面。这就是为什么板载的网卡我们从来没有看到过BOOTROM的原因。

2.工作过程

    PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则(10Based-T的NRZ编码或100based-T的曼彻斯特编码)把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。现在来了解PHY的输出后面部分。一颗CMOS制程的芯片工作的时候产生的信号电平总是大于0V的(这取决于芯片的制程和设计需求),但是这样的信号送到100米甚至更长的地方会有很大的直流分量的损失。而且如果外部网现直接和芯片相连的话,电磁感应(打雷)和静电,很容易造成芯片的损坏。

    再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致很大的电流从电势高的设备流向电势低的设备。我们如何解决这个问题呢?
这时就出现了Transformer(隔离变压器)这个器件。它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。

    隔离变压器本身就是设计为耐2KV~3KV的电压的。也起到了防雷感应(我个人认为这里用防雷击不合适)保护的作用。有些朋友的网络设备在雷雨天气时容易被烧坏,大都是PCB设计不合理造成的,而且大都烧毁了设备的接口,很少有芯片被烧毁的,就是隔离变压器起到了保护作用。

发送数据时,网卡首先侦听介质上是否有载波(载波由电压指示),如果有,则认为其他站点正在传送信息,继续侦听介质。一旦通信介质在一定时间段内(称为帧间缝隙IFG=9.6微秒)是安静的,即没有被其他站点占用,则开始进行帧数据发送,同时继续侦听通信介质,以检测冲突。在发送数据期间,如果检测到冲突,则立即停止该次发送,并向介质发送一个“阻塞”信号,告知其他站点已经发生冲突,从而丢弃那些可能一直在接收的受到损坏的帧数据,并等待一段随机时间(CSMA/CD确定等待时间的算法是二进制指数退避算法)。在等待一段随机时间后,再进行新的发送。如果重传多次后(大于16次)仍发生冲突,就放弃发送。
    接收时,网卡浏览介质上传输的每个帧,如果其长度小于64字节,则认为是冲突碎片。如果接收到的帧不是冲突碎片且目的地址是本地地址,则对帧进行完整性校验,如果帧长度大于1518字节(称为超长帧,可能由错误的LAN驱动程序或干扰造成)或未能通过CRC校验,则认为该帧发生了畸变。通过校验的帧被认为是有效的,网卡将它接收下来进行本地处理


网卡的原理及测试技术
网卡充当计算机和网络缆线之间的物理接口或连线将计算机中的数字信号转换成电或光信号,称为nic( network interface card )。数据在计算机总线中传输是并行方式即数据是肩并肩传输的,而在网络的物理缆线中说数据以串行的比特流方式传输的,网卡承担串行数据和并行数据间的转换。网卡在发送数据前要同接收网卡进行对话以确定最大可发送数据的大小、发送的数据量的大小、两次发送数据间的间隔、等待确认的时间、每个网卡在溢出前所能承受的最大数据量、数据传输的速度。
一、网卡的基本构造
网卡包括硬件和固件程序(只读存储器中的软件例程),该固件程序实现逻辑链路控制和媒体访问控制的功能网卡包括硬件和固件程序(只读存储器中的软件例程),该固件程序实现逻辑链路控制和媒体访问控制的功能,还记录唯一的硬件地址即mac地址,网卡上一般有缓存。网卡须分配中断irq及基本i/o端口地址,同时还须设置基本内存地址(base memory address)和收发器(transceiver)
网卡的控制芯片
是网卡中最重要元件,是网卡的控制中心,有如电脑的cpu,控制着整个网卡的工作,负责数据的的传送和连接时的信号侦测。早期的10/100m的双速网卡会采用两个控制芯片(单元)分别用来控制两个不同速率环境下的运算,而目前较先进的产品通常只有一个芯片控制两种速度。
晶体震荡器
负责产生网卡所有芯片的运算时钟,其原理就象主板上的晶体震荡器一样,通常网卡是使用20或25hz的晶体震荡器。
boot rom插槽
如无特殊要求网卡中的这个插槽处在空置状态。一般是和boot rom芯片搭配使用,其主要作用是引导电脑通过服务器引导进入win9x。
boot rom
就是启动芯片,让电脑可以在不具备硬盘、软驱和光驱的情况下,直接通过服务器开机,成为一个无硬盘无软驱的工作站。没有软驱就无法将资料输出,这样也可以达到资料保密的功能。同时,还可以节省下购买这些电脑部件的费用。在使用boot rom时要注意自己使用何种网络操作系统,通常有boot rom for nt,boot rom for unix,boot rom for netware等,boot rom启动芯片要自行购买。
eprom
从前的老式网卡都要靠设置跳线或是dip开关来设定irq、dma和i/o port等值,而现在的网卡则都使用软件设定,几乎看不见跳线的存在。各种网卡的状态和网卡的信息等数据都存在这颗小小的eeprom里,通过它来自动设置。
内接式转换器
只要有bnc接头的网卡都会有这个芯片,并紧邻在bnc接头旁,它的功能是在网卡和bnc接头之间进行数据转换,让网卡能通过它从bnc接头送出或接收资料。
rj-45和bnc接头
rj-45是采用双绞线作为传输媒介的一种网卡接口,在100mbps网中最常应用。bnc是采用细同轴电缆作为传输媒介
信号指示灯
在网卡后方会有二到三个不等的信号灯,其作用是显示目前网络的连线状态,通常具有tx和rx两个信息。tx代表正在送出资料,rx代表正在接收资料,若看到两个灯同时亮则代表目前是处于全双工的运作状态,也可由此来辨别全双工的网卡是否处于全双工的网络环境中(见上图两个接口的中间部分)。也有部分低速网卡只用一个灯来表示信号,通过不同的灯光变换来表示网络是否导通。
二、网卡的分类
以频宽区分网卡种类
目前的以太网卡分为10mbps、100mbps和1000 mbps三种频宽,目前常见的三种架构有10baset、100basetx与base2,前两者是以rj-45双绞线为传输媒介,频宽分别有10mbps和100mbps。而双绞线又分为category 1至category 5五种规格,分别有不同的用途以及频宽,category通常简称cat,只要使用cat5规格的双绞线皆可用于10/100mbps频宽的网卡上。而10base2架构则是使用细同轴电缆作为传输媒介,频宽只有10mbps。这里提到的频宽10或100mbps是指网卡上的最大传送频宽,而频宽并不等于网络上实际的传送速度,实际速度要考虑到传送的距离,线路的品质,和网络上是否拥挤等因素,这里所谈的bps指的是每秒传送的bit(1个byte=8个bit)。而100mbps则称为高速以太网卡(fast ethernet),多为pci接口。因为其速度快,目前新建的局域网络绝已大多数已采用100mbps的传输频宽,已有渐渐取代10mbps网卡的趋势。当前市面上的pci网卡多具有10/100mbps自动切换的功能,会根据所在的网络连线环境来自动调节网络速度。1000 mbps以太网卡多用于交换机或交换机与服务器之间的高速链路或backbone。
以接口类型区分网卡种类
以接口类型来分,网卡目前使用较普遍的是isa接口、pci接口、usb接口和笔记本电脑专用的pcmcia接口。现在的isa接口的网卡均采用16bit的总线宽度,其特性是采用programmed i/o的模式传送资料,传送数据时必须通过cpu在i/o上开出一个小窗口,作为网卡与pc之间的沟通管道,需要占用较高的cpu使用率,在传送大量数据时效率较差。pci接口的网卡则采用32bit的总线频宽,采用bus master的数据传送方式,传送数据是由网卡上的控制芯片来控制,不必通过i/o端口和cpu,可大幅降低cpu的占用率,目前产品多为10/100mbps双速自动侦测切换网卡。
以全双工/半双工来区分网卡种类
网络有半双工(half duplex)与全双工(full duplex)之分,半双工网卡无法同一时间内完成接收与传送数据的动作,如10base2使用细同轴电缆的网络架构就是半双工网络,同一时间内只能进行传送或接收数据的工作,效率较低。要使用全双工的网络就必须要使用双绞线作为传输线才能达到,并且也要搭配使用全双工的集线器,要使用10base或100basetx的网络架构,网卡当然也要是全双工的产品
以网络物理缆线接头区分网卡
目前网卡常用的网线接头有rj-45与bnc两种,有的网卡同时具有两种接头,可适用于两种网络线,但无法两个接头同时使用。另外还有光纤接口的网卡,通常带宽在1000 mbps。
其他功能wol
有些网卡会有wol的功能,wol网络开机的功能(wake on lan)。它可由另外一台电脑,使用软件制作特殊格式的信息包发送至一台装有具wol功能网卡的电脑,而该网卡接收到这些特殊格式的信息包后,就会命令电脑打开电源,目前已有越来越多的网卡支持网络开机的功能。
其它网卡
从网络传输的物理媒介上还有无线网卡,利用2.4ghz的无线电波来传输数据。目前ieee有两种规范802.11和802.11b,最高传输速率分别为2m和11m,接口有pci、usb和pcmcia几种。
三、网卡测试技术
基于操作系统的测试
网卡一个重要的性能是看其是否支持多种网络操作系统,比较流行的网络操作系统有windowsnt、unix(linux、freebsd、sco、solaris、hp厎)、novell、dec等。同时网卡应能够支持多种的网络协议,如tcp/ip、ipx/spx、apple、netbeui等。
基于主机的兼容性测试
硬件上的兼容性也是非常重要的一个方面,尤其在笔记本电脑上兼容性问题比较突出,根据本人的实际经验,甚至某些名牌的网卡在一些笔记本电脑上也存在较为严重的兼容性问题。在服务器或台式电脑方面这些问题不常出现。
网卡传输速率测试(数据吞吐量)
测试网卡的传输速率一般有硬件和软件两种方法,硬件是利用一些专用的仪器如网络分析仪、smartbits smartcards等其他一些设备,利用icmp echo请求和udp数据包来检测数据流量。通常测试的项目有以下几方面:
autonegotiation test
测试网卡速率、全双工/半双工和流控协商。协商决定着是否通过“暂停桢pause frame”来允许流量控制。
arp test
测试网卡是否能对arp请求做出正确回应及是否在规定时间内应答。这个时间由测试者进行设置。
error test
测试网卡处理错误frame的能力,通常在较低的传输速率下进行此项测试(0.5%传输速率),有以下几个方面的测试:
网卡接收正确的frame,作出处理。
网卡接收到存在crc校验错的frame,网卡将其丢弃。
网卡接收到传输顺序错误的frame,网卡将其丢弃。
网卡接收到含有少量错误bits的frame,网卡应全部接收并处理。
网卡接收到超小frame,网卡应将其丢弃。
网卡接收到超长frame,网卡应将其丢弃。
packets loss test
rfc规定测试网卡在各种传输带宽利用率下的处理frame的能力,从初始化数据传输到传输速率的不断变化一直到传输结束,检查frame的丢失情况。
throughput test
数据吞吐量的测试也是rfc规定的一项测试内容,测试的结果反映出传输的最大带宽的利用率,每秒处理的frame和每秒处理的bits数量。
back-to-back test
同样此项测试也为rfc-2544的规定,测试在一个设定的最大传输速率下网卡可处理的并发frame的数量。最终反映出在不丢失数据包的情况下可并发传输的最大frame数量。
利用软件测试通常是利用zd的netbench来测试,一般只利用其测试网卡的最大传输速率。测试时要组成一个网络结构,一台windowsnt server服务器,若干个windows9x或windowsnt station客户端,传输大容量的文件如100mbps,测试的结果将反映出网卡的最大传输速率。另一个测试项目是测试网卡对较小的数据包请求的回应能力,这里有必要讨论一下tcp/ip的ping命令的机制。ping是利用发送和接收icmp echo报文,来检测链路状态和协议设置。数据链路层封装的是frame,大小在64k~1518k之间,当发送frame时,网卡接受到frame时首先要读取桢头和桢尾的mac地址,当mac地址相匹配时再接封装读取ip地址。当网卡连续接收到frame时,要对每一个frame做出处理,当网卡或是系统无法处理这些数据包时,这些数据包将被丢弃。这种情况多发生在连续发送非常小的frame时。ping的机制是发送一个icmp报文,接收到一个icmp echo后再发送下一个icmp报文。所以较小的连续的frame会对网卡和系统造成较大的压力。在netbench中,有一项测试就是测试网卡或系统对连续的小数据包的处理能力。
稳定性测试
一块好的网卡应该具有良好的稳定性,具体讲就是在不同的工作环境下和不同的工况下应具有稳定的表现。通常测试主要是高温和传输大文件测试。
高温测试一般是在30~35摄氏度下连续运行网卡的测试程序达一定的时间比如2小时以上,检测网卡高温下的稳定性。pcmcia接口的网卡一般有两种32位的和16位的,前者又称为cardbus网卡,数据带宽由16位增加到32位,使得pcmcia的网卡发热量成为一个显著的问题。
另一个测试是传输大的文件,某些品质较差的网卡在传输大容量的文件比如2gbps以上的文件时容易出错。
综上所述,在测试一块网卡时要进行全面的软、硬件及兼容性测试,可根据具体的应用和不同的要求,有机的选择测试项目,正确反映网卡的性能指标。
SAP AI Core 高阶能力实战参考 文章摘要:本文探讨了在企业SAP架构中整合GenAI技术的工程化实践,重点分析了SAP AI Core的高阶能力应用。作者指出,企业级AI应用需解决多轮对话管理、Git同步工作流、提示词治理等核心问题,而非简单接入大模型API。技术方案展示了如何通过SAP AI Core的orchestration service管理对话历史,利用GitOps实现AI资产版本控制,并强调prompt template在审计合规中的治理价值。全文以SAP技术栈(ABAP/RAP/Fiori)为背景,阐释了AI能力与企业核心系 阅读详情

相关推荐

常见消息队列:ActiveMQ、RabbitMQ、RocketMQ、Kafka的区别总结

常见消息队列:ActiveMQ、RabbitMQ、RocketMQ、Kafka的区别。

qq_30713721的博客 3471

Linux下Broadcom 43xx系列无线网卡适配方法

在linux系统下, 各种无线网卡驱动都有两部分组成,一部分是内核模块,另一部分是无线网卡固件。所谓的内核模块,是指在Linux内核kernel中存在的,能够支持该无线网卡的一个模块,Broadcom 43xx系列的无线网卡在内核中对应的模块是b43模块,有了这个模块,无线网卡在系统中就能够被识别到。你在查看无线网卡时,才能够看到你的无线网卡。但是有了这个模块,并不能够保证无线网卡能够正常工作...

linux 编程 548

海康工业相机LabVIEW二次开发实战——参数配置优化与图像高效存储

本文详细介绍了海康工业相机在LabVIEW平台上的二次开发实战,重点解析了相机参数配置的优化方法与图像高效存储策略。通过剖析曝光、增益、触发模式等核心参数的设置逻辑,并结合生产者-消费者设计模式,指导开发者构建稳定、高效的图像采集与异步存储流程,有效提升工业视觉项目的开发效率与系统稳定性。

weixin_29306317的博客 221

网卡工作原理详解

网卡工作原理详解

A person does not really understand something until after teaching it to a computer. Donald.E.Knuth 3988

【Boost5】Boost变换器的输入电容

节点的电流有3个,一个是来自电源输入的,由于我们把Vin看成理想电源以及线路的电感的存在,它可以近似看作是恒定的电流源Iin,一个是流向输入电容Cin的电流Icin,另外一个节点是电感L电流IL。电容电流波形在整个开关周期内的平均值为0,充电和放电在一个周期中各占1/2,在图中充电部分面积和放电部分面积相等,那么在充电或放电的电荷量Q=I*t,从图中可以看出,在一个周期内电容电流变化量是ΔIL,那在电容在充电1/2T周期中电流的变化量是1/2ΔIL。输入电容上的ESR也会随着电流变化,影响输入电压的变化。

qq_43416206的博客 3347

STM8库函数开发手册(3) //UART1、内部EEPROM、FLASH操作库、IIC(硬、软)

STM8S 微控制器家族的通用同步异步收发器(UART1,UART2 或者UART3)提供了一种灵活的方法与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。STM8 的UART 提供范围的波特率选择,并且支持多处理器通讯。UART 也支持LIN(局部互联网)协议版本1.3,2.0,和2.1 以及在主模式下的J2602。 UART1 和UAR...

finedayforu的博客 2520

网卡组成及工作原理

网卡的组成工作原理 1.认识网卡,我们上网必备组件之一。 网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分是做到一起的。他们之间的关系是pci总线接mac总线,mac接phy,phy接网线(当然也不是直接接

qq_24736541的博客 5256

告别版本过低提示!微信3.9登录修复与聊天记录无缝迁移全攻略

本文详细解析了微信3.9版本过低提示的根源,并提供了完整的修复方案和聊天记录迁移指南。通过专用修复工具绕过版本检测,以及新旧版本聊天记录目录对比,帮助用户实现无缝迁移。特别提醒备份重要数据,确保操作安全。

weixin_42535461的博客 3128

网卡组成工作原理

1.认识网卡,我们上网必备组件之一。    网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分

yuyin86的专栏 4965

NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()

Please use torch.nn.Module.to_empty() instead of torch.nn.Module.to()输出(llama) (base) [root@localhost home]# nvidia-smi Unable to determine the device handle for GPU0000:09:00.0: Unknown Error。这是典型的“孤儿进程”,但它还是。(僵尸进程),占用 GPU 资源。如果进程仍然不消失,并且。,这意味着它的父进程是。

m0_61636632的博客 2096

【文献笔记】ICCV 2021 | Point Transformer

作者提到,特别适合点云处理,因为自注意力机制是的核心,本质上就是一个集合算子:它对输入元素具有顺序不变性和数量不变性3D点云是无序的,即使改变点云txt文件中的点顺序也不会有任何影响。自注意力机制天然具有排列不变性,因为它通过对所有"点对"的关系进行建模来处理输入,而不依赖于任何特定的输入顺序点云数据通常覆盖了3D空间中的对象或场景,理解这些数据需要捕捉点与点之间复杂的空间关系。自注意力机制能够有效的捕捉这些关系,因为它为每个"点对"赋予一个。

m0_55908255的博客 965

[zz]网卡的组成工作原理

网卡的组成工作原理作者:不详1.认识网卡,我们上网必备组件之一。     网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。

553

云端全自动AI漫剧生成工作流:从模型选型到完整实现

本文提出了一套云端全自动AI漫剧生成工作流解决方案,旨在解决传统漫剧制作效率低下的问题。该系统采用"编排引擎+模型矩阵"架构,通过集成大语言模型、图像生成、视频合成等技术,实现从剧本输入到成片输出的全流程自动化。 核心内容包括: 模型选型方案:剧本解析采用DeepSeek-V3/GPT-4o,图像生成使用DALL-E 3,视频合成选用Stable Video Diffusion,语音合成采用MiniMax TTS 系统架构设计:基于Celery分布式任务队列的编排层,分解任务至各功能模块

huanghm88的专栏 640

网卡的组成工作原理 MAC PHY

1 认识网卡,我们上网必备组件之一   网卡工作在osi的最后两层,物理层(PHY)和数据链路层(MAC,即MAC实现了一个数据链路层),物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。

第22条军规 @ 硬件园 1386

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

网卡的组成工作原理之一--MAC+PHY

网卡的组成工作原理之一--MAC+PHY 分类: 嵌入式2009-08-21 00:12 760人阅读 评论(0) 收藏 举报 工作网络c 摘自 http://blog.youkuaiyun.com/rider628/article/details/4468168 网卡工作在osi的最后两层,物理层(PHY)和数据链路层(MAC,即MAC实现了一个数据链路层),物理层定义了数据传送与接收所需要的电

Tiger Liu share his technical articles here 1117

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

网卡的组成和工作原理--MAC PHY

    认识网卡,我们上网必备组件之一。        网卡工作在osi的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网

reille的笔记 4695

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机组成原理/计算机网络 - 网卡 - 探究其工作原理

主要用于了解网卡的工作原理,一部分一部分拆解计算机原理。 包括计算机组成原理,操作系统,计算机网络,数据结构与算法,也就是基础类学科。

"代码"的日常搬运 643
上一篇: BusyBox reboot 流程分析
flyingcloud_2008
博客等级 码龄19年 10粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值