tag 标签: 串行总线

相关博文
  • 热度 4
    2018-2-27 13:25
    3347 次阅读|
    0 个评论
    为了提高串行数据传输的可靠性,现在很多更高速率的数字接口采用的是对数据进行编码后再做并串转换的方式。编码的方式有很多,如 8b/9b 编码、 8b/10b 编码、 64b/66b 编码、 128b/130b 编码等,下面我们以最流行的 ANSI 8b/10b 编码为例进行一下介绍。 在 ANSI 8b/10b 编码方式中, 8 比特的数据先通过相应的编码规则转换成 10 比特的数据,然后再进行并串转换;接收端收到信号后先把串行数据进行串并转换得到 10 比特的数据,然后再通过 10 比特到 8 比特的解码得到原始传输的 8 比特数据。因此,如果发送端并行侧的数据速率是 8bit*100Mb/s ,通过 8b/10b 编码和并串转换后的串行侧的数据速率就是 1bit*1Gb/s 。 8b/10b 编码方法最早由 IBM 发明,后来成为 ANSI 标准的一部分( ANSI X3.230-1994, clause 11 ),并在通信和计算机总线上广泛应用。 数据经过 8b/10b 编码后有几个最大的好处: v 有足够多的跳变沿,可以从数据里进行时钟恢复。正常传输的数据里可能会有比较长的连续的 0 或者连续的 1 ,而进行完 8b/10b 编码后,其编码规则保证了编码后的数据流里不会出现超过 5 个的连续的 0 或 1 ,信号里会出现足够多的跳变沿,因此可以采样嵌入式的时钟方式,即接收端可以从数据流里用 PLL 电路直接恢复时钟,不需要专门的时钟传输通道。 v 直流平衡,可以采用 AC 耦合方式。经过编码后数据里不会出现连续的 0 或者 1 了,但是还是有可能在某个时间段内 0 或者 1 的数量偏多一些。从上面的编码表中我们可以看到同一个 Byte 对应有正、负两组 10bit 的编码,一个编码里 1 的数量多一些,另一个编码里 0 的数量多一些。数据在对当前的 Byte 进行 8b/10b 编码传输时,会根据前面历史传输的数据中正负 bit 的数量来选择使用哪一组编码,从而可以保证总线上正负 bit 的数量在任何时刻基本都是平衡的,也就是直流点不会发生大的变化。直流点平衡以后,在信号传输的路径上我们就可以采用 AC 耦合方式(最常用的方法是在发送端或接收端串接隔直电容),这样信号对于收发端的地电平变化和共模噪声的抵抗能力进一步增强,可以传输更远的距离。采用 AC 耦合方式的另一个好处是收发端在做互连时不用太考虑直流偏置点的互相影响,互连变得非常简单,对于热插拔的支持能力也更好。 v 有利于信号校验。很多高速信号在做传输时为了保证传输的可靠性要对接收到的信号进行检查以确认收到的信号是否正确。在 8b/10bit 编码表里,原始的 8bit 数据总共有 256 个组合,即使考虑到每个 Byte 有正负两个 10bit 编码也只需要用到 512 个 10bit 的组合。而 10bit 的数据总共可以有 1024 个组合,因此有大约一半的 10bit 组合是无效的数据,接收端一旦收到这样的无效组合就可以判决数据无效。另外,前面我们介绍过数据在传输过程中是要保证直流平衡的,一旦接收端收到的数据中发现违反直流平衡的规则,也可以判决数据无效。因此采用 8b/10b 编码以后数据本身就可以提供一定的信号校验功能。不过需要注意的是,这种校验不是足够可靠,因为理论上还是可能存在有几个 bit 在传输中发生了错误但是结果仍然符合 8b/10b 编码和规则和直流平衡原则。因此,很多使用 8b/10b 编码的总线都还会在上层协议上再做相应的 CRC 校验(循环冗余校验)。 v 可以插入控制字符。在 10bit 数据可以表示的 1024 个组合中,除了 512 个组合用于对应原始的 8bit 数据以及一些不太好的组合(比如 0b1100000000 这样信号里有太长的连续 0 或者 1 而且明显 0 、 1 的数量不平衡)以外,还有一些很特殊的组合。这些特殊的组合可以用来在数据传输过程中做为控制字符插入。这些控制字符不对应特定的 8bit 数据,但是在有些总线应用里可以代表一些特殊的含义。比如 K28.5 码型,其特殊的码型组合可以帮助接收端更容易判别接收到的连续的 10bit 数据流的符号边界,所以在一些总线的初始化阶段或数据包的包头都会进行发送。还有一些特殊的符号用于进行链路训练、标记不同的数据包类型、进行收发端的时钟速率匹配等。 综上所述,要把并行的信号通过串行总线传输,一般需要对数据进行并串转换。为了进一步减少传输线的数量和提高传输距离,很多高速数据总线采用嵌入式时钟和 8b/10b 的数据编码方式。 8b/10b 编码由于直流平衡、支持 AC 耦合、可嵌入时钟信息、抗共模干扰能力强、编解码结构相对简单等优点,在很多高速的数字总线如 FiberChannel 、 PCI-E 、 SATA 、 USB3.0 、 DisplayPort 、 XAUI 、 RapidIO 等接口上得到广泛应用。
  • 热度 26
    2017-6-8 08:35
    4384 次阅读|
    0 个评论
    使用串行比并行总线可以节省更多的布线空间,芯片、电缆等的尺寸可以做得更小,同时传输速率更高。但是,在很多数字系统如CPU、DSP、FPGA等内部,进行数据处理的最小单位都是Byte,即8个bit,如何把一个或多个Byte的数据通过串行总线可靠地传输出去是需要对数据做些特殊处理的。 并串转换与串并转换 最简单的把并行数据转换成串行信号传输的方法如下图所示。比如发送端的数据宽度是8bit,时钟速率是100MHz,我们可以通过Mux(复用器)芯片把8bit的数据时分复用到1bit的数据线上,相应的数据速率提高到800Mbit/s(在有些LVDS的视频信号传输中比较常用的是把并行的7bit数据时分复用到1bit数据线上)。信号到达接收端以后,再通过DeMux(解复用器)芯片把串行的信号分成8路低速的数据。 这种并串转换方法由于不涉及的信号编解码,结构简单,效率较高,但是需要收发端进行精确的时钟同步以控制信号的复用和解复用操作,因此需要专门的时钟传输通道,而且串行信号上一旦出现比较大的抖动就会造成串并转换的错误。 因此,这种简单的并串转换方式一般用于比较关注传输效率的芯片间的短距离互连或者一些光端机信号的传输中。另外由于信号没有经过任何编码,信号中可能会出现比较长的连续的0或者连续的1,因此信号必须采用直流耦合方式,收发端一旦存在比较大的共模或地噪声,会严重影响信号质量,因此这种并串转换方式用于电信号传输时或者传输速率不太高(通常1Gb/s),或者传输距离不太远( 通常50cm)。 8b/10b数据编码 为了提高串行数据传输的可靠性,现在很多更高速率的数字接口采用的是对数据进行编码后再做并串转换的方式。编码的方式有很多,如8b/9b编码、8b/10b编码、64b/66b编码、128b/130b编码等,下面我们以最流行的ANSI 8b/10b编码为例进行一下介绍。 在ANSI 8b/10b编码方式中,8比特的数据先通过相应的编码规则转换成10比特的数据,然后再进行并串转换;接收端收到信号后先把串行数据进行串并转换得到10比特的数据,然后再通过10比特到8比特的解码得到原始传输的8比特数据。因此,如果发送端并行侧的数据速率是8bit 100Mb/s,通过8b/10b编码和并串转换后的串行侧的数据速率就是1bit 1Gb/s。8b/10b编码方法最早由IBM发明,后来成为ANSI标准的一部分(ANSI X3.230-1994, clause 11),并在通信和计算机总线上广泛应用。下图是ANSI 8b/10b编码表的一部分,以数据0x00为例,其原始的8bit数据是0b00000000,经过编码后就变成了0b1001110100或者0b0110001011。 8b/10b编码的好处:  有足够多的跳变沿,可以从数据里进行时钟恢复。正常传输的数据里可能会有比较长的连续的0或者连续的1,而进行完8b/10b编码后,其编码规则保证了编码后的数据流里不会出现超过5个的连续的0或1,信号里会出现足够多的跳变沿,因此可以采样嵌入式的时钟方式,即接收端可以从数据流里用PLL电路直接恢复时钟,不需要专门的时钟传输通道。  直流平衡,可以采用AC耦合方式。经过编码后数据里不会出现连续的0或者1了,但是还是有可能在某个时间段内0或者1的数量偏多一些。从上面的编码表中我们可以看到同一个Byte对应有正、负两组10bit的编码,一个编码里1的数量多一些,另一个编码里0的数量多一些。数据在对当前的Byte进行8b/10b编码传输时,会根据前面历史传输的数据中正负bit的数量来选择使用哪一组编码,从而可以保证总线上正负bit的数量在任何时刻基本都是平衡的,也就是直流点不会发生大的变化。直流点平衡以后,在信号传输的路径上我们就可以采用AC耦合方式(最常用的方法是在发送端或接收端串接隔直电容),这样信号对于收发端的地电平变化和共模噪声的抵抗能力进一步增强,可以传输更远的距离。采用AC耦合方式的另一个好处是收发端在做互连时不用太考虑直流偏置点的互相影响,互连变得非常简单,对于热插拔的支持能力也更好。  有利于信号校验。很多高速信号在做传输时为了保证传输的可靠性要对接收到的信号进行检查以确认收到的信号是否正确。在8b/10bit编码表里,原始的8bit数据总共有256个组合,即使考虑到每个Byte有正负两个10bit编码也只需要用到512个10bit的组合。而10bit的数据总共可以有1024个组合,因此有大约一半的10bit组合是无效的数据,接收端一旦收到这样的无效组合就可以判决数据无效。另外,前面我们介绍过数据在传输过程中是要保证直流平衡的,一旦接收端收到的数据中发现违反直流平衡的规则,也可以判决数据无效。因此采用8b/10b编码以后数据本身就可以提供一定的信号校验功能。不过需要注意的是,这种校验不是足够可靠,因为理论上还是可能存在有几个bit在传输中发生了错误但是结果仍然符合8b/10b编码和规则和直流平衡原则。因此,很多使用8b/10b编码的总线都还会在上层协议上再做相应的CRC校验(循环冗余校验)。  可以插入控制字符。在10bit数据可以表示的1024个组合中,除了512个组合用于对应原始的8bit数据以及一些不太好的组合(比如0b1100000000这样信号里有太长的连续0或者1而且明显0、1的数量不平衡)以外,还有一些很特殊的组合。这些特殊的组合可以用来在数据传输过程中做为控制字符插入(如下图所示)。这些控制字符不对应特定的8bit数据,但是在有些总线应用里可以代表一些特殊的含义。比如K28.5码型,其特殊的码型组合可以帮助接收端更容易判别接收到的连续的10bit数据流的符号边界,所以在一些总线的初始化阶段或数据包的包头都会进行发送。还有一些特殊的符号用于进行链路训练、标记不同的数据包类型、进行收发端的时钟速率匹配等。 综上所述,要把并行的信号通过串行总线传输,一般需要对数据进行并串转换。为了进一步减少传输线的数量和提高传输距离,很多高速数据总线采用嵌入式时钟和8b/10b的数据编码方式。8b/10b编码由于直流平衡、支持AC耦合、可嵌入时钟信息、抗共模干扰能力强、编解码结构相对简单等优点,在很多高速的数字总线如FiberChannel、PCI-E、SATA、USB3.0、DisplayPort、XAUI、RapidIO等接口上得到广泛应用。下图是一路串行的2.5Gbps的8b/10b编码后的数据流以及相应的解码结果,从中我们可以明显看到从里面解出的K28.5等控制码以及相应的数据信息。 8b/10b编码的缺点 需要注意的是,采用8b/10b编码方式也是有缺点的,最大的缺点就是8bit到10bit的编码会造成额外的20%的编码开销。比如对于一个采用8b/10b编码的5Gbps的串行总线来说,其有效的数据传输速率只有4Gbps,也就是说仅为了进行4Gbps的信号传输就需要把总线的数据速率提高到5Gbps。相应地,如果要进行8Gbps的有效数据传输就需要把总线的数据速率提高到10Gbps,而10Gbps相对与8Gbps的数据速率来说,对于硬件人员的设计经验、接插件、板材都有比较高的要求,所以很多10G左右或更高速率的总线都不再使用8b/10b编码方式。比如PCI-E1.0和PCI-E2.0的总线速率分别为2.5Gbps和5Gbps,都是采用8b/10b编码,而PCI-E3.0的总线就舍弃了8b/10b的编码方式,数据速率为8Gbps,是通过效率更高的128b/130b的编码结合更复杂的扰码的方法来实现直流平衡和嵌入式时钟的。另一个例子是FibreChannel总线,1xFC、2xFC、4xFC、8xFC的数据速率分别为1.0625Gbps、2.125Gbps、4.25Gbps、8.5Gbps,都是采用8b/10b编码,而16xFC、32xFC的数据速率分别为14.025Gbps和28.05Gbps,采用的是效率更高的64b/66b编码方式。
  • 热度 19
    2017-5-25 13:27
    2006 次阅读|
    0 个评论
    虽然随着技术的发展,现代的数字芯片已经集成了越来越多的功能,但是对于稍微复杂一点的系统来说,很多时候单独一个芯片很难完成所有的工作,这就需要和其它芯片配合起来工作。比如我们现在的CPU的处理能力越来越强,很多CPU内部甚至集成了显示处理的功能,但是仍然需要配合外部的内存芯片来存储临时的数据、需要配合桥接芯片扩展硬盘、USB等外围接口;现代的FPGA内部也可以集成CPU、DSP、RAM、高速收发器等,但有些场合可能还需要配合专用的DSP来进一步提高浮点处理效率、配合额外的内存芯片来扩展存储空间、配合专用的物理层芯片来扩展网口、USB等,或者需要多片FPGA互连来提高处理能力。所以的这一切,都需要用到相应的总线来实现多个数字芯片间的互连。如果我们把各个功能芯片想象成人体的各个功能器官的话,总线就是血脉和经络,通过这些路径,各个功能模块间才能进行有效的数据交换和协同工作。 我们经常使用到的总线根据数据传输方式的不同,可以分为并行总线和串行总线。 并行总线: 并行总线是数字电路里最早也是最普遍采用的总线结构。在这种总线上,要传输的数据线、地址线、控制线等都是并行传输,比如要传输8位的数据宽度,就需要8根数据信号线同时传输,如果要传输32位的数据宽度就需要32根数据信号线同时传输。除了数据线以外,如果要寻址比较大的地址空间,还需要很多根地址线的组合来代表不同的地址空间。下图是一个典型的微处理器的并行总线的工作时序,其中包含了1根时钟线、16根数据线、16根地址线以及一些读写控制信号。 很多经典的处理器都采用了并行的总线架构。比如大家熟知的51单片机就采用了8根并行数据线和16根地址线;CPU的鼻祖,Intel 公司的8086微处理器最初推出时具有16根并行数据线和16根地址线;现在很多嵌入式系统中广泛使用的ARM处理器则大部分使用32根数据线以及若干根地址线。 并行总线的最大好处是总线的逻辑时序比较简单,电路实现起来比较容易,但是缺点也是非常明显的。比如并行总线的信号线数量非常多,会占用大量的管脚和布线空间,因此芯片和PCB板的尺寸很难实现小型化,特别是如果要用电缆进行远距离传输时,由于信号线的数量非常多,使得电缆变得非常昂贵和笨重。 采用并行总线的另外一个问题在于总线的吞吐量很难持续提升。对于并行总线来说,其总线吞吐量=数据线位数×数据速率。我们可以通过提升数据线的位数来提高总线吞吐量,也可以通过提升数据速率来提高总线吞吐量。以个人计算机里曾经非常流行的PCI总线为例,其最早推出时总线是32位的数据线,工作时钟频率是33MHz,其总线吞吐量=32bit×33MHz;后来为了提升其总线吞吐量推出的PCI-X总线,把总线宽度扩展到64位,工作时钟频率最高提升到133MHz,其总线吞吐量=64bit×133MHz。下图是PCI插槽和PCI-X插槽的一个对比,可以看到PCI-X由于使用了更多的数据线,其插槽更长(来源:网络图片)。 但是随着人们对于总线吞吐量的要求的不断提高,这种提升总线带宽的方式遇到了瓶颈。首先由于芯片尺寸和布线空间的限制,64位数据宽度已经几乎是极限了。另外一方面,这64根数据线是共用一个采样时钟,为了保证所有的信号都满足其建立保持时间的要求,在PCB上布线、换层、拐弯时需要保证精确等长。而总线工作速率越高,对于各条线的等长要求就越高,对于这么多根信号要实现等长的布线是很难做到的。 下图是用逻辑分析仪采集到的一个实际的8位总线的工作时序,我们可以看到在数据从0x00跳变到0xFF状态过程中,这8根线实际并不是精确一起跳变的。 对于并行总线来说,更致命的是这种总线上通常挂有多个设备,且读写共用,各种信号分叉造成的反射问题使得信号质量进一步恶化。 串行总线: 为了解决并行总线占用尺寸过大且对布线等长要求过于苛刻的问题,随着芯片技术的发展和速度的提升,越来越多的数字接口开始采用串行总线。所谓串行总线,就是并行的数据在总线上不再是并行地传输,而是时分复用在一根或几根线上传输。比如在并行总线上传输1个Byte的数据宽度需要8根线,而如果把这8根线上的信号时分复用在一根线上就可以大大减少需要的走线数量,同时也不需要再考虑8根线之间的等长关系。 采用串行总线以后,就单根线来说,由于上面要传输原来多根线传输的数据,所以其工作速率一般要比相应的并行总线高很多。比如以前计算机上的扩展槽上广泛使用的PCI总线采用并行32位的数据线,每根数据线上的数据传输速率是33Mbit/s,演变到PCI-E(PCI-Express)的串行版本后每根线上的数据速率至少是2.5Gbit/s(PCI-E 1代标准),现在PCI-E的数据速率已经达到了5Gbit/s(PCI-E 2代标准)或8Gbit/s(PCI-E 3代标准)。采用串行总线的另一个好处是在提高数据传输速率的同时节省了布线空间,同时芯片的功耗也降低了,所以在现代的电子设备中,当需要进行高速数据传输时,使用串行总线的越来越多。 数据速率提高以后,对于阻抗匹配、线路损耗和抖动的要求就更高,稍不注意就很容易产生信号质量的问题。下图是一个典型的1Gbps的信号从发送端经过芯片封装、PCB板、连接器、背板传输到接收端的信号路径,从中我们可以看到在发送端的接近理想的0、1跳变的数字信号到达接收端后由于高频损耗、反射等的影响信号波形已经变得非常恶劣,所以串行总线的设计对于数字电路的工程师来说是个很大挑战。 使用串行总线的设备的体积、功耗和数据传输速度都比使用并行接口的设备更有优势,因此得到了广泛的应用。比如以前在计算机上广泛使用的连接打印机的DB25的并口已经被USB和网口取代,以前连接硬盘的40pin的PATA接口已经被串行的SATA接口取代,以前计算机上的PCI扩展槽已经被PCI-Express取代。但是如前所述,采用串行总线以后信号的数据速率一般都会有几倍甚至几百倍的提升,对于电路的设计和测试都提出了很高的要求,因此需要设计和测试工程师掌握大量的高速设计的相关知识和技能。 更多高速测试问题,可关注微信公众号:‘数字科技’
  • 热度 21
    2015-3-24 13:57
    1288 次阅读|
    0 个评论
        l 引言     DS18B20是DALLAS公司生产的一线式数字 温度传感器 ,采用3引脚T0-92型小体积封装;温度测量范围为-55℃~+125~C,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。     一线式(1-WIRE) 串行总线 是利用1条信号线就可以与总线上若干器件进行通信。具体应用中可以利用微处理器的I/O端口对DS18B20直接进行通信,也可以通过现场可编程门阵列( FPGA )等可编程逻辑器件(PLD)实现对1-WIRE器件的通信。     本文介绍利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的通信功能。FPGA可以将读出DS18B20的48位ID号和12位温度测量结果保存在内部寄存器中,微处理器可以随时快速地从FPGA寄存器中读取这些信息。     一般在使用DS18B20时往往采用微处理器的I/O端口实现 与该器件的通信,这种方法虽然比较容易和方便,但是,因为DS18B20的一线式串行总线对时序要求比较严格,因此,为了保证与DS18B20的通信可靠性,微处理器与DS18B20通信时需要采用关闭中断的办法,以防止操作时序被中断服务破坏。     利用FPGA实现与。DS18B20通信不存在被迫关闭中断的情况,可以满足对实时性要求严格的应用要求。     2 ProASICplus系列FPGA简介     ProASICplus系列FPGA是ACTEL公司推出的基于Flash开关编程技术的现场可编程门阵列,包括从7.5万门的APA075型到100万门的APAl000型,具有高密度、低功耗、非易失、含有嵌入式RAM及可重复编程等特点。     因为ProASICplus系列FPGA基于Flash技术,利用Flash开关保存内部逻辑,因此不需要另外的器件。由于不需要上电配置过程,因此具备上电就立即工作的特点。不用配置器件,系统的保密性提高。     笔者在电力监控的产品中利用APA150型FPGA实现了逻辑控制、A/D采样控制和FIFO存储等功能,并利用剩余的资源实现了DS18B20的通信功能。APA150在整个系统中充当协处理器,使主CPU从繁重的实时处理中解脱出来。     3 DS18B20简介     3.1内部结构     DS18B20的内部结构如图1所示,主要由以下几部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH(温度高)和TL(温度低)、配置寄存器、暂存寄存器(SCRATCHPAD)、存储器控制逻辑。DQ为数字信号输入/输出端。 点击看原图     ROM中的64(8位产品家族编号、48位ID号、8位CRC)位序列号是出厂前刻好的,这64位序列号具有惟一性,每个DS18B20的64位序列号均不相同。     8位CRC生成器可以完成通信时的校验。     暂存寄存器有9个字节,包含温度测量结果、温度报警寄存器、CRC校验码等内容。     3.2操作步骤     对DS18B20的操作分为3个步骤:初始化、ROM命令和DS18B20功能命令。     3.2.1初始化     FPGA要与DS18B20通信,首先必须完成初始化。FPGA产生复位信号,DS18B20返回响应脉冲。     3.2.2ROM命令     该步骤完成FPGA与总线上的某一具体DS18B20建立联系。ROM命令有搜寻ROM(SEARCH ROM)、读ROM(READ ROM)、匹配ROM(MATCH ROM)、忽略ROM(SKIP ROM)、报警查找等命令(ALARM SEARCH)。     这里,FPGA只连接1个DS18B20,因此只使用读ROM命令,来读取DS18B20的48位ID号。  nbsp;  3.2.3 DS18B20功能命令     FPGA 在该步骤中完成温度转换(CONVERTT)、写暂存寄存器(WRITE SCRATCHPAD)、读暂存寄存器(READ SCRATCHPAD)、拷贝暂存寄存器(COPYSCRATCHPAD)、装载暂存器寄存器(RECALL E2)、读供电模式命令(READ POWER SUPPLY)。     文中不用温度报警功能,因此在本步骤中只需完成温度转换,然后通过读暂存寄存器命令完成温度转化的结果。     3.3操作时序     DS18B20的一线式操作时序如图2所示。从时序图中可以看出,对DS18B20的操作时序要求比较严格。利用FPGA可以实现这些操作时序。 点击看原图     4 FPGA与DS18B20的通信     4.1 DS18B20的操作模块   nbsp ; FPGA需要完成DS18B20的初始化、 读取DS18B20的48位ID号、启动DS18B20温度转换、读取温度转化结果。读取48位ID号和读取温度转换结果过程中,FPGA还要实现CRC校验码的计算,保证通信数据的可靠性。     以上操作反复进行,可以用状态机来实现。状态机的各种状态如下:     RESET1:对DS18B20进行第一次复位,然后进入DELAY状态,等待800μs后,进入CMD33状态。     CMD33:对DS18B20发出0×33命令,读取48位ID值。     GET_ID:从DS18B20中读取48位ID值。     RESET2:对DS18B20进行第二次复位,然后进入DELAY状态等待800μs后,进入CMDCC状态。     CMDCC:向DS18B20发出忽略ROM命令,为进入下一状态作准备。     CMD44:向DS18B20发出启动温度转换命令,然后进入DELAY状态等待900ms后进入下一状态。     RESET3:对DS18B20进行第三次复位。     CMDCC2:向DS18B20发出忽略ROM命令,为了进入下一状态作准备。     GET_TEMP:从DS18B20中读取温度测量数值。     DELAY:等待状态。     WRITE_BIT:向DS18B20中写入数据位状态。     READ_BIT:从DS18B20中读取数据位状态。在该状态中每读取1位数据,同时完成该数据位的CRC校验计算。所有数据都读取后,还要读取8位 CRC校验位。这8位校验位也经过CRC校验计算,如果通信没有错误,总的CRC校验结果应该是0。这时可将通信正确的数据保存到id和 temp_data寄存器中。     设计中采用 Verilog 语言建立DS18B20操作模块”DS18B20_PROC”。在该模块中实现以上的状态机功能。该模块的定义为module DS18B20 PROC(sysclk,reset,dq_pim,id,temp_data,dq_ctl)。图3示出是该模块的仿真波形。 点击看原图     从仿真波形可以看出,系统上电后的10ms左右,FPGA可以读出DS18B20的48位ID值,这样,主CPU在系统复位后很短的时间内就可以读取ID值,进行相应的处理。     4.2 FPGA与CPU的接口     在FPGA中,要实现对DS18B20的通信处理,主模块要实现对DS18B20_PROC模块的调用及建立与CPU之间的接口。     与CPU之间的接口通过建立若干寄存器实现。温度测量值和48位ID可以用4个16位寄存器保存。CPU通过读取这些寄存器可以获得温度测量数值和48位ID值。     CPU、FPGA及DS18B20的连接原理如图4所示。     5 结束语     在系统中, FPGA 可以分担许多主处理器的工作,提高整体实时性,降低CPU处理的严格实时约束,从而降低CPU软件处理的难度。同时,由于ACTEL公司的ProASICplus系列FPGA的保密特性,可以增强产品知识产权的保护。     本设计应用在电力监控产品中。测量出的装置内部温度用于电量测量精度补偿和报警,对保证产品测量精度和可靠运行具有重要意义。48位ID值用于产品的惟一编码标识和以太网MAC地址,便于产品生产、维护和管理。
  • 热度 24
    2012-2-13 08:50
    1675 次阅读|
    3 个评论
    SPI、I2C、UART三种串行总线协议的区别        SPI(Serial Peripheral Interface:串行外设接口)        I2C(INTER IC BUS)        UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)   SPI   The SPI includes these distinctive features:   • Master mode and slave mode   • Bi-directional mode   • Slave select output   • Mode fault error flag with CPU interrupt capability   • Double-buffered data register   • Serial clock with programmable polarity and phase   • Control of SPI operation during wait mode   SPI 有两种模式,Normal Mode and Bidirectional Mode,包括以下几根线:   SS      Slave Select   SCK    Serial Clock   MOSI Master Output, Slave Input   MISO Master Input, Slave Output   MOMI Master Output, Master Input   SISO   Slave Input, Slave Output   其中前四根线用于Normal Mode ,常用的也是4根线的Normal Mode 。   MOSI   This pin is used to transmit data out of the SPI module when it is configured as a Master and receive data   when it is configured as Slave.   MISO   This pin is used to transmit data out of the SPI module when it is configured as a Slave and receive data   when it is configured as Master.   SS   This pin is used to output the select signal from the SPI module to another peripheral with which a data   transfer is to take place when its configured as a Masterand its used as an input to receive the slave select   signal when the SPI is configured as Slave.   SCK   This pin is used to output the clock with respect to which the SPI transfers data or receive clock in case of   Slave.   SPI 是一种允许一个主设备启动一个与从设备的同步通讯的协议,从而完成数据的交换。也就是SPI是一种规定好的通讯方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了。同时传输速度也很高。一般来说要求主设备要有SPI控制器(但可用模拟方式),就可以与基于SPI的芯片通讯了。        SPI 的通信原理很简单,它需要至少4根线,事实上3根也可以。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时 钟),CS(片选)。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许 在同一总线上连接多个SPI设备成为可能。        接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原 因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取。 完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。        要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。        这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。        SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。        不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。   I2C   • 只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL   • 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器   • 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏   • 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s   • 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整   • 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制   UART   UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。        显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。   UART常用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。   明显可以看出,SPI和UART可以实现全双工,但I2C不行. 转自:作者:prince98 如果您有什么疑问请留言或者来信: wiznetbj@wiznettechnology.com ,希望本篇文章可以给您带来帮助,谢谢.
相关资源
  • 所需E币: 1
    时间: 2023-4-15 13:52
    大小: 350.87KB
    上传者: 张红川
    利用单片机实现基于I2C串行总线的多点温度测控系统.pdf
  • 所需E币: 2
    时间: 2022-3-3 22:10
    大小: 1021.36KB
    上传者: ZHUANG
    基于串行总线的爬壁机器人控制研究
  • 所需E币: 0
    时间: 2021-11-19 08:27
    大小: 69KB
    上传者: l0veiy
    在以太网标准中,MAC层与PHY层之间的10Gbps/40Gbps/100Gbps速率等级所对应的接口分别为XGMII/XLGMII/CGMII,由于XGMII/XLGMII是并行总线,而且采用的是单端信号,HSTL电平,最大传输距离只有7cm。所以在实际应用中,XGMII/XLGMII基本上被XAUI/XLAUI替代。XAUI/XLAUI是四通道串行总线,采用的差分信号,CML逻辑传输,并且进行了扰码,大大增强了信号的抗扰性能,使得信号的有效传输距离增加到50cm。
  • 所需E币: 0
    时间: 2020-8-19 15:47
    大小: 3.22MB
    上传者: LGWU1995
    是德科技-使用示波器快速高效的调试汽车串行总线
  • 所需E币: 3
    时间: 2019-12-28 23:34
    大小: 329.55KB
    上传者: 微风DS
    微控制器是当今各种先进电子产品的核心,它需要与一个或多个外设器件通信.……
  • 所需E币: 3
    时间: 2019-12-25 16:40
    大小: 1.73MB
    上传者: 16245458_qq.com
    usb1.1中文手册通用串行总线规范CompaqIntelMicrosoftNECRevision1.1September23,1998通用串行总线USB1.1目录第一章介绍1.1起因1.2USB规范的目标1.3适用对象1.4本书结构第二章术语和缩略词第三章背景知识3.1USB的设计目标3.2使用的分类3.3特色第四章体系结构概述4.1USB系统的描述4.2物理接口4.3电源4.4总线协议4.5健壮性4.6系统设置4.7数据流种类4.8USB设备4.9USB主机:硬件和软件4.10体系结构的扩充第五章USB数据流模型5.1实现者的视图5.2总线拓朴5.3USB通信流5.4传送类型5.5控制传送5.6同步传送5.7中断传送5.8批传送5.9传送的总线访问……
  • 所需E币: 5
    时间: 2019-12-30 13:53
    大小: 5.82MB
    上传者: 238112554_qq
    汽车产业逐年成长,新一代的汽车更加讲究智能、环保、安全及高效通信之整合。其内部控制单元和传感器的信息交换在设计架构及成本的综合考虑下,经常使用串行总线例如CAN、CANFD、LIN、SENT、FlexRay等,以及更高速用于导航、辅助驾驶、车载通信、信息娱乐的MOST、BroadR-Reach、APIX2,这些总线虽然传输速率不一样,但共同的特点是经常处在恶劣的运行环境下但又得要求高可靠度,因此如何在真实的环境下正确测量以确保信号传输的质量已成为工程师们当前亟欲克服的挑战。本在线研讨会除了综览当前热门串行总线的技术及应用外,更将提供其相应之完整量测解决方案。例如传统的示波器只能进行简单的通用波形测量,而Keysight是德科技的InfiniiVision便携式示波器系列及Infiniium高性能示波器系列则能针对各种汽车总线的测试提供了全面的波形分析、协议译码、错误统计、多项触发、模板测试、分段储存、一致性测试等功能,都将于本研讨会中为您解说。研讨会直播地址:http://seminar.eepw.com.cn/seminar/show/id/288……
  • 所需E币: 3
    时间: 2019-12-25 15:28
    大小: 244.96KB
    上传者: 微风DS
    基于USB的多通道俄制军用串行总线接口卡的设计及实现方案,重点论述了在基于FPGA的俄制军用串行总线IP核上通过双口RAM与USB通信,以及CY7C68013芯片在GPIF模式下进行固件和驱动程序设计的方法.基于USB的多通道俄利串行总线接口卡设计邓青海,景小宁,刘安(空军工程大学工程学院,陕西西安710038)摘要:基于USB的多通道俄制军用串行总线接口卡的设计及实现方案,重点论述了在基于FP.GA的俄制军用串行总线IP核上通过双口RAM与USB通信,以及CY7C68013芯片在GPIF模式下进行固件和驱动程序设计的方法。关键词:rOCTl8977明M1495现场可编程门阵列通用串行总线通用可编程接口俄罗斯标准rOCTl8977规定了飞机的成套机载设线、6条通用的准备输入线(数据线宽可为8位或16位),备通信的电器特性,其中一部分规定了与美国标准具有56引脚、100引脚、128引脚131三种封装规格。ARINC429相对应的串行码信号的类型及其电气标准。CY7C68013外设交换数据通常采用SkweFIF08(从设而与之配套的PI'M1495技术资料中则规定了按照备)和GPIF两种方式。GPIF为一个灵活的8位或16位rOCTl8977标准采用双极性码进行信息交换的具体方的并行接口,由一个用户……
  • 所需E币: 5
    时间: 2019-12-25 15:10
    大小: 193.22KB
    上传者: wsu_w_hotmail.com
    引言目前各种工业场合诸如门禁考勤系统、自动收费系统、数据远传系统(如三表的数据采集传输)等中,远距离串行数据通信的可靠性显得非常重要.RS232串行总线的接口电平比TTL电平大,使得抗干扰能力增强;但RS232规定了其最大负载为2500pF的电容,通信距离也被限制,通常适合于20m以内的数据通信,且是单端通信,必然存在不可消除的共地噪声和共模干扰问题.……
  • 所需E币: 4
    时间: 2020-1-2 01:35
    大小: 2.37MB
    上传者: givh79_163.com
    调试嵌入式系统设计中的串行总线应用指南调试嵌入式系统设计中的串行总线应用指南引言今天,嵌入式系统几乎遍布在人类社会的每个角落。嵌某些专用应用,直到关闭时才会停止。当前设计和生产入式系统可以简单定义为属于大型系统或机器一部分的的几乎每个电子设备都是嵌入式系统。嵌入式系统实例一种专用计算机系统,其目的是为该系统或机器提供监包括:测和控制服务。典型的嵌入式系统在开机时会开始运行www.tektronix.com.cn/oscilloscopes1应用指南■电子闹表■自动柜员机■移动电话■计算机打印机■防抱死刹车控制器■微波炉■DVD播放机■个人数字助理(PDA)■工业自动化和监测使用的可编程逻辑控制器(PLC)■便携式音乐播放机■可能还包括烤面包机嵌入式系统可能包含许多不同类型的设备,包括微处理器、微控制器、DSP、RAM、图1.逻辑分析仪采集的微控制器的时钟、地址总线、数据总线和控制线。EPROM、FPGA、模数转换器、数模转换器和I/O。这些设备在传统上一直使用宽DPO系列-MSO/DPO4000、MSO/DPO3000和MSO/并行总线相互通信及与外部世界通信。然而今天,嵌入DPO2000系列示波器中提供的功能迎接这些挑战。式系统设计中使用的越来越多的构件将用串行总线代替并行与串行比较宽并行总线,原因如下……
  • 所需E币: 4
    时间: 2019-12-25 00:18
    大小: 466.63KB
    上传者: givh79_163.com
    自从引进串行总线协议以来,赛灵思已经在基于FPGA的串行总线解决方案成为市场的领导者。WhitePaper:7SeriesFPGAsWP384(v1.0)March9,2011PCIExpressforthe7SeriesFPGAsBy:KraigLundSincetheintroductionofthePCIExpressprotocol,XilinxhasbeenthemarketleaderinFPGA-basedPCIExpresssolutions―fromthesoftIPFPGAlogic-basedsolutionsintheVirtex-IIProfamily,tothefirstIntegratedBlockforPCIExpressintheVirt……
  • 所需E币: 0
    时间: 2019-7-26 10:21
    大小: 513.5KB
    1、I2C串行总线的组成及工作原理采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。常用的串行扩展总线有:I2C(InterICBUS)总线、单总线(1-WIREBUS)、SPI(SerialPeripheralInterface)总线及Microwire/PLUS等。
  • 所需E币: 3
    时间: 2019-5-27 21:50
    大小: 1.42MB
    上传者: royalark_912907664
    针对北方在集中供暖时存在热能分配失调,用户冷热不均,房间热时靠开窗造成的能源浪费问题。本系统采用STC15W4K60S4单片机为控制核心,从硬件和软件两方面介绍了该智能供暖控制器的设计思想,对控制器的硬件原理图和软件流程图进行了系统的论述。系统通过温度设定值、房间实时温度值等参数进行PID运算,由循环泵和步进阀控制管网热水流量、流速而实现了房间温度的自动测量、自动控制,达到提高房间供暖舒适性、节约能源的目的。