据我所知,数字信号是通过连续的EM信号传输的。在接收机端,当振幅超过某一阈值时检测到位1,当幅度降到某一信号以下时检测位0。
但是在网络上的比特流中,数据包是通信发生的过程,而数据包只是一个比特流,.This数据包包含了与协议、源和目的地相关的各种信息。
在硬件级别,如何发送和接收这个比特流?
如果是根据EM信号的幅度进行比特检测,那么比特的收集是否包括在不同的时间间隔内检查信号的幅度?
我认为我可以更具体、更详细。让我更详细地解释一下我所需要的:
我们什么时候能检测到一点1?当信号幅度超过某一阈值时,对吗?现在一个包会有像1,0-1,0这样的位流.但是如何检测到这个比特流。是否有一个电路检测一个起始位,然后继续在频繁的时间间隔内收集振幅,直到结束位,从而构造一个比特流?因此,硬件是否有一个时间限制来执行这个振幅过程的收集?
发布于 2019-04-11 16:59:04
针对不同的特殊情况,有大量的行编码方案。我只想谈谈最简单的问题。
在基础上,不要把它当作软件来看待:“我们一直在检查它是否会改变”。电子设备更像是一个弹簧,当一个事件发生时,例如超过某一水平的电压,它就会被解开。或者把东西从桌子上推下来:它不会“不停地检查”它下面是否有什么东西:有一种力阻止它向下移动。当力被移除时,力就会下降。
通常使用的最简单的行编码是NRZ (“不返回到零”,这个名称在您了解它之前没有多大帮助)。这是用于RS-232和许多其他事情。一条线路处于某种电压下,比如说5V。当它低于1V时,我们启动一个计时器。假设比特是每秒一个:我们启动一个定时器半秒钟--我们应该在这个字节的“开始位”中间。在这半秒之后,我们再等一秒钟:现在我们处于第一位的中间,我们只是检查电压。再等一下,检查一下电压,我们就有第二位了。做八次直到我们有一个字节。
您将看到,该过程由三种机制组成:
这个过程通常发生在硬件中,但有时在固件中。所有细节都各不相同:电压、速度、高压是1还是0、第一位是低值还是高值位。有关更多,请参阅维基百科。
的确,其中的第一个(等到信号很低)可以通过处理器快速采样来完成。但是它更多的是由电路来完成,它在事件发生后执行一个动作,也许是通过信号输入一个锁存器,这个锁存器在复位时保存了一些定时器芯片。
一旦我们有了字节,就会有一些方案来获得帧,其中最简单的方案是SLIP (串行线协议),其中,一个特定的字节值本质上表示一个帧的开始。没有什么比阅读真正定义互联网的RFCs更好了,而定义这一点的则是特别简单的RFC1055。
还有许多用于帧的其他方案,如“长时间无信号”(用于DMX)或“根本没有电压的方式不在帧内”(用于同轴以太网)。
以太网类似于所描述的机制,但要复杂得多。尤其是速度更快的品种,它们要复杂得多。目前使用最简单的是10 10baseT,它使用“曼彻斯特编码”(曼彻斯特编码)(以开发它的大学命名)。基本思想是一样的:等待一种特定类型的过渡,然后等待一段时间,取一个样本,重复。但每个细节都是不同的。维基百科有一篇好文章。
正如评论中所说,整本关于编码问题的书:全博士。
高性能的帧和编码方案都是关于
认真地说:如果你理解RS-232,NRZ,SLIP,以及正确的网络是更复杂的,你知道足够一个网络的人。知道哪种网络有链路检测比知道它们的工作细节要重要得多。
如果您想要更详细的电路如何工作,electronics.stackexchange.com可能是一个比这里更好的赌注,但我们是好的事情,如帧和CRC错误和类似的。
发布于 2019-04-11 17:32:35
网络线路代码不是那么容易开始。他们的设计至少几十米以上(或多或少)简单的电缆。这需要为高比特率比铜(和非常高的波德率,甚至对光纤)的详细编码方案。通常,网络链路不使用单独的时钟信号,因此线路代码需要自时钟和自同步。
网络中使用的最简单的代码是用于10 Mbit/s以太网的曼彻斯特代码:高-低=1和低-高= 0。当然,这会浪费大量的带宽,但是您可以很容易地为它构建自定义硬件。
100 Mbit“快速”以太网使用4b/5b块代码。由于125 Mbit/s对于第5类双绞线铜(100BASE-TX)来说太高了,还有另一个带有MLT3的子层编码(基本上跨越不同的电压级别,而不是跳过两个)。定制硬件是可行的,但已经很难构建了。
千兆以太网采用8b/10b块码作为基本行码,与4b/5b相似,但具有一些优点。1000 stream用于双绞线将流分成四个车道,使用额外的PAM5编码和扰码来处理电缆限制。如果可能的话,定制硬件是非常难构建的--一个数据位转换为1纳秒。
10G+以太网通常使用更高效的64b/66b大块代码。双绞线需要一个非常精细的多层编码方案,包括Tomlinson预编码、PAM16和DSQ128“棋盘”模式,以实现铜的传输。即使你能够为1000BASE-T定制硬件,10 10GBASE在任何情况下都需要一个复杂的ASIC -我们有100皮克秒/比特。
除了最新的速度,光纤一般只使用基本的行码,而且比铜更容易编码和解码--但仍然如此。
所有这些只是覆盖了物理层。网络标准通常也涵盖数据链路层,因此您需要围绕实际数据(网络层有效负载)构建框架。然而,这可以在软件中完成,只需少量的硬件支持。
https://networkengineering.stackexchange.com/questions/58377
复制相似问题