基于Rocket?I/O模块的高速工I/O设计(推荐9篇)由网友“枍栀”投稿提供,以下是小编为大家准备的基于Rocket?I/O模块的高速工I/O设计,希望对大家有帮助。
篇1:基于Rocket I/O模块的高速工I/O设计
基于Rocket I/O模块的高速工I/O设计
摘要:介绍了采用Videx-ⅡPR0系列FPCA设计的应用于下一代无线通信系统中的高速I/O。由于充分利用芯片中集成的RocketI/O模块,并采用差分输入参考时钟、8B/10B编码、预加重处理、通道绑定技术等,实现了四个绑定通道的高速互连(2.5Gbaud)。设计结果表明,采用RocketI/O模块进行高速I/O设计,可极大简化片上逻辑电路和片外PCB版图设计。关键词:RocketI/O抖动差分线通道绑定眼图
由于通信对带宽的需求迅猛增长,促使一系列基于差分、源同步、时钟数据恢复(CDR)等先进技术的互连方式应运而生。在传统设计中,单端互连方式易受干扰、噪声的影响,传输速率最高只能达到200~250Mbps/Line;在更高速率的接口设计中,多采用包含有源同步时钟的差分串行传输方式(如LVDS、LVPECL等),但在传输过程中时钟与数据分别发送,传输过程中各信号瞬时抖动不一致,破坏了接收数据与时钟之间的定时关系,因而传输速率很难超越1Gbps/Channel;XILINX公司推出了内嵌RocketI/O模块的VirtexⅡPRO系列FPGA,使实现更高的传输速率成为可能[1~3]。采用了CML(CurrentModeLogic)、CDR、线路编码(8B/10B)和预加重等技术的RocketI/O模块,可极大地减小时钟扭曲、信号衰减和线路噪声对接收性能的影响,从而使传输速率进一步提高。本文着重讨论如何配置RocketI/0模块,进行FPGA的片内、片外设计和仿真,从而在以10英寸差分线组互连的两片FPGA间达到2.5Gbaud/Channel的传输速率,并实现了四个双向通道的绑定操作。
图1
1Rocket,I/O特性
VirtexⅡPRO系列FPGA内嵌的RocketI/O模块是基于Mindspeed公司四代SkyRailTM技术开发的高速串行收发器,该系列FPGA单片最多集成了24路RocketI/O收发器,最大可提供75Gbps全双工通信带宽。RocketI/O模块灵活的配置方式使其可以提供对光纤通道、千兆以太网、XAUI、Infiniband、PCIExpress等一系列高速通信标准的支持。其主要特性为:(1)每个通道收发器支持从622Mbps至3.125Gbps的全双工传输速率;(2)收发器内嵌发送时钟生成电路和接收时钟恢复电路;(3)CDR源同步数据发送方式;(4)五级可编程输出电压幅度(800~1600mV)控制;(5)四级可编程输出预加重处理;(6)收发器支持交流和直流耦合方式,可兼容多种高速接口标准;(7)片内集成可编程差分终端电阻(50Ω、75Ω);(8)支持片内串行和并行环回测试模式;(9)可编程标界检测符(comma)图样,提供对多种协议标准的支持。
RocketI/0收发器由物理媒质适配层(PMA)和物理编码子层(PCS)构成,如图1所示。其中PMA层属于收发器的数/模混和部分,包括串/并变换器、并/串变换器、差分发送驱动器、差分接收器、发送时钟生成电路、接收时钟恢复电路等。而PCS层属于收发器的数字部分,包括发送FIFO、8B/10B编码器、8B/10B解码器、CRC生成和校验、用于通道绑定和时钟修正的ElasticBuffer等。由于要支持多种高速串行通信标准,RocketI/O模块的PMA和PCS包含了许多配置参数,这些参数可以通过外部端口和内部配置寄存器进行设定。配置过程可以以静态(参数通过FPGA配置文件设定)或动态(通过RocketI/O的配置端口进行局部重新配置)的方式进行。
2ROCketI/O的设计要素
要达到RocketI/O模块的最佳性能,需要考虑到诸多设计因素,本文就其最重要的部分展开讨论。
2.1参考时钟
高性能的通信质量要求有高稳定性和高精度的时钟源。抖动和频偏是衡量时钟源的两个重要指标。抖动一般是指一个实际情况下的周期信号每个周期的图样相对于该信号理想情况下一个周期图样的偏差[4]。抖动产生原因包括时钟晶体本身的机械振动、器件的热噪声和电源串人噪声等。抖动可以分为确定性抖动和随机抖动。确定性抖动是线性可加的,它包括信号在传输中媒质损耗、码间串扰(ISI)等周期性因素导致的抖动;随机抖动是均方可加的,它是由半导体器件热噪声、电源波动等共模随机噪声源导致的。频偏是指时钟标称频率与实际频率的偏差,主要受晶体加工精度的影响。由于RocketI/O模块内部将输人参考时钟20倍频,而RocketI/O模块可容忍的输人参考时钟抖动公差为40ps,可见参考时钟的抖动对其性能有直接影响。在VirtexⅡPRO系列FPGA中,RocketI/O模块集中分布在上、下四个通道中。当RocketI/O工作在2.5Gbaud以上时,参考时钟应采用差分输入方式(如LVDS、LVPECL),由上、四个通道的专用差分时钟引脚输入,至相同或相邻通道中RocketI/O的BREFCLK输入端,以避免时钟信号引入不必要的抖动。在2.5Gbaud速率以下应用时,不要用FP-GA内的DCM来生成RocketI/O的输入时钟,因为经DCM倍频的时钟会引入较大的抖动,使RocketI/0的接收锁相环无法稳定地锁定发送时钟。图2所示的连接方案中,RocketI/O模块的输入时钟由差分或单端引脚馈入后,应只经过一级全局缓冲(BUFG)布设到时钟树上,再连接到RocketI/O模块的参考时钟输入端,这样可最大限度地降低抖动的引入。
2.2复位
RocketI/O模块的复位引脚分为发送(TX_RESET)和接收(RX_RESET)两部分。由于DCM在输出时钟锁定在设定值前,输出时钟处于不稳定状态,不能用作内部逻辑电路时钟,所以要在DCM时钟输出锁定有效,并经过适当延迟后才可将片内逻辑复位。RocketI/O模块要求复位输入至少保持两个USRCLK时钟周期来完成FIFO的初始化[1]。如图2所示,图中RESET_MGT模块实现的即是上述功能。
2.38B/10B线路码
线路码具有平衡码流中“0”、“1”概率的能力,并且可以减小码流中长连“0”和长连“1”串。8B/10B编码是属于基于块编码的mBnB线路码中的一种。经过mBnB编码的码流具有“0”和“1”等概率、连“0”和连“1”数小、直流基线漂移小、低频分量小、功率谱带宽较窄、时钟成分丰富、定时提取方便且抖动小以及能进行运行误码监测等许多优点,因此在RocketI/O模块内部集成了8B/10B编码器和解码器。
应用RocketI/0模块进行互连时,根据互连双方接口的电气标准的不同,分为直流耦合和交流耦合方式。在直流耦合方式下,并不一定要求采用8B/10B编码,可以选择其它的线路码型或不用线路编码。但在较高的传输速率条件下(如2.5Gbaud以上),为了达到良好的抗干扰性能和低的误码率,应该考虑采用8B/10B编码。而在交流耦合方式下,必须选择8B/10B编码,否则接收端的漂移会使接收器无法正常工作。
8B/10B编码集合中包括数据字串部分和控制字串部分[1]。数据字串包括256个可能的数值,其中包括可作为控制字串(K23.7、K28.0~K28.7、K27.7、K29.7、K30.7)的码字。当传送字串作为控制字时,由RocketI/O模块相应的控制字标志输入引脚(如TX_CHARISK)指定该字为控制字串。
2.4通道绑定
通道绑定是指将多个串行通道组合在一起构成一个并行通道,以此来提高收发的数据吞吐率。由于每个通道在收发器互连、时钟再生和数据接收延迟上各不相同,会使接收到的数据产生“错位”的情况(如图3所示),因此要在发送端数据流中加入一个特殊的序列――通道绑定序列,如图中的“P”字符。每个绑定通道都设定“P”字符为通道绑定序列,在接收端指定一个通道为主通道,其余通道都依据主通道的CHBONDO有效指示进入绑定状态,进而锁定本通道在ElasticBuffer中接收到通道绑定序列的位置。由ElasticBuffer向内部逻辑电路输出数据时,所有经过绑定的.通道都以绑定序列指定的ElasticBuffer中的偏移位置进行对齐输出。通道绑定完成后,为了使绑定维持在稳定状态,各通道收发器也要以主通道收发器为基准进行时钟修正操作。
RocketI/O模块通道绑定互连的一种参考方案如图4所示。FPGA布线原则是使绑定指示信号在模块间传输的延迟尽量小,尽量使两个互连模块间的连线不要穿越整个芯片。在FPGA布线时要对绑定指示互连线设置严格的时延约束参数[1]。
2.5PCB设计
PCB设计中差分线的线型可选为微波传输线和带状线,它们都有较好的性能。微波传输线一般有更高的差分阻抗,不需要额外的过孔;而带状线在信号间提供了更好的屏蔽。PCB差分线模型如图5所示。在通常的铜介质、环氧―玻璃纤维基材(FR4)条件下,布线要求为:(1)差分线对内两条线间的距离应尽量小于两倍线宽,即S<2W;(2)PCB板材厚度应大于差分线对内两条线之间的距离,即B>S;(3)相邻差分对之间的距离应大于两倍的差分线对的距离,即D>2S。
出于对信号线的屏蔽的考虑,设计的线型选用带状线,计算公式[2]为:
当介电常数εr=4.3、T=1mil、W=6mil、S=10mil、B=20mil时,由(1)式得Z0≈54.4Ω≈。由(2)式得差分线阻抗ZDIFF≈100Ω,以适配RocketI/O模块设定的50Ω差分输入阻抗。PCB布线时应注意以下几点:
(1)差分线对内的长度相互匹配以减少信号扭曲。为使设计传输速率达到2.5Gbaud,在差分线对内部每个走线区间内的实际布线公差应控制在5mil内。
(2)差分线对内两条线之间的距离应尽可能小,以使外部干扰为共模特征。差分线对间的距离应尽可能保持一致,以降低差分阻抗分布的不连续性。
(3)采用电源层作为差分线的信号回路,因为电源平面有最小的传输阻抗,从而减小噪声。
(4)由于每个过孔可带来0.5~1.0dB的损耗,应尽量减少过孔数目。过孔的通孔和焊盘应有尽量小的物理尺寸,并且在通孔穿越的未连接层不加焊盘。差分对内的过孔不仅在数量上要匹配,而且在放置的位置上也要接近,以使阻抗分布尽量一致。
(5)避免导致阻抗不连续的90°走线,而要用圆弧或45°折线来代替。走线时应使向左、向右折角的数量接近,这样可减少信号经差分线传输引起的扭曲。
在采用图3所示的交流耦合方式时,可以使RocketI/0适配更多的高速I/O接口标准。设计中要注意耦合电容选用75-500nF的无极性电容,尽量选择体积、ESR和ESL小的贴片封装方式,并且应放置在差分线靠近接收器一侧邻近位置上,同时布线要保证差分线对间不能交错。
3系统架构
系统架构如图6所示,在两片FPGA间有4个通道共8对直流耦合差分互连线,每个通道可提供双向2.5Gbaud的线路传输速率。通道绑定模块将每片FPGA的4个RocketI/O模块绑定在一起,在.采用8B/10B编码条件下提供64x125Mbps双向速率。每片的通道绑定模块还提供8x2位的控制接口,指示当前正在发送或接收到的是控制字还是数据。系统的时钟源选用ICS8442差分输出(LVDS)。频率合成器,它可以提供31.25MHz~700MHz的频率合成范围和低的抖动(RMSperiod:2.7ps;Cycle-to-cycle:18ps),可满足设计中RocketI/O模块对参考时钟性能的要求。设计中由ICS8442的两路差分输出驱动器将合成后的时钟送至两片FPGA的差分时钟输人端。四个通道RocketI/O模块发端采用20%颐加重,以减小信号高频分量因介质损耗而在收端引起的信号畸变,从而改善接收效果。
图7所示为发送控制状态机,两片FPGA以主、从方式工作,主设备在复位后连续发送用于修正接收锁相环时钟的特定“K”字符,同时从设备判断是否成功接收到“K”字符。如从设备成功接收则表明接收时钟正确恢复,然后从设备发送“K”字符以使主设备的接收时钟同步。主设备判断每个通道是否都进入接收时钟同步状态,若是则开始发送通道绑定序列。从设备确定接收通道绑定完成后,停止向主设备发送“K”字符而改发通道绑定序列,使主设备也完成接收绑定。此时主、从设备都维持在通道绑定状态,并且间歇发送锁相环同步“K”字符以维持接收时钟同步。若此时有一侧进入失同步状态,以上同步、绑定过程将由主设备再次发起。在设计中帧的数据段长度固定为1K(8Byte),数据段结束后为4字节的CRC校验值,如接收CRC错误则将该帧丢弃。任何一方要发送数据帧时便在帧的首尾各插入一个空闲时隙,并在发送完成后继续维持同步状态。
4板级设计仿真
由于RocketI/O收发器工作在2.5Gbaud的速率下,基于IBIS模型的仿真难以提供足够的精度。为了精确仿真RocketI/O收发器在板级设计中的性能,采用收发器HSPICE模型进行接收效果仿真。仿真中选择测试图样为1428.5’D21A'D215,D21.5’D28.2'D28.2'D15.1’D15.4’D10.5’D10.5,仿真时长为110ns。图8所示依次为发送端输入、差分输出和接收端差分输入的60~85ns波形图,其中RocketI/O发送器输入信号Vtx_in的tsetup=66.7ps。
分别对发送端差分输出和接收端差分输入信号进行眼图分析,得到如图9所示的眼图。图中测得发端抖动为0.203UI,接收端抖动为0.227UI,但这只是仿真得到的电路固有抖动,在实际情况下的随机抖动对性能的影响并未在仿真中考虑。由图中可以看出,在发端采用20%预加重后接收端眼图的宽度和张开程度都有所改善,因而可以较好地恢复发送信号。
由系统的实测效果证明,应用RocketI/O模块设计通信系统中片间、背板的高速接口,是一种高性能的简化的解决方案。通过采用更加精确的HSPICE模型进行分析,可及早地发现板级设计中的信号完整性问题,
降低设计风险。
篇2:i/o模块是什么意思
一般情况下,电源模块插在第一插槽内,编号为0,PLC插在第二插槽内,各种类型的输入输出模块插在其余插槽内。I/O模块导轨的背面安装带有连接器的印制电路板,可以将插入I/O模块的各插槽连接起来,插槽的上下边可以使插入的模块排成一条直线。
带有I/O模块和处理器的导轨被称为本地I/O导轨;带有I/O模块、电源、远程I/O通信卡并且安装在远离本地I/O导轨的导轨被称为远程I/O导轨。远程I/O导轨的`数目取决于不同处理器能够控制变量的数目。
远程I/O导轨与处理器之间的通信可以采用多种方式实现,具体包括同轴电缆、双轴电缆、屏蔽双绞线等,如果距离较远而需要考虑抑制噪声干扰问题可以采用光纤通信。
并行I/O模块:
并行I/O模块承担了与外部系统进行信息和数据交互的重要责任,可以用于扩展外围器件,者直接动键盘、LED等简单外部设备。
通常来说,51单片机有4个8位的并行I/O口,分别为P0、PI、P2、P3四组,其中PO和P2既可以用作普通I/O端口也可以当成数据地址端口,P3则在作为普通I/O端口的同时还具有其他(第二)功能,只有PI仅仪用作普通I/O口。
并行I/O端口的PO~P3都支持位寻址操作,均有一定的电流駆动能力,可以驱动一些外部设备,但是由于PO是开漏输出的结构,所以用作普通I/O引脚的时候需要外加上拉电阻。
篇3:消防i/o是什么意思
主要包括火灾现场的人员救援,重要设施设备、文物的抢救,重要财产的安全保卫与抢救,扑灭火灾等。目的是降低火灾造成的破坏程度,减少人员伤亡和财产损失。战时由各级人民防空指挥部统一指挥,以专业消防力量为骨干,动员企业事业单位、乡镇的专职消防队伍、志愿者队伍和人民群众实施。消防行动主要有:
①查明火情及受损情况,了解火灾现场的.地形、风向,起火建筑的结构、出入口,被困人员的情况等。
②实施现地指挥,组织力量迅速赶往火场,根据火灾性质选用灭火剂和消防装备,根据火场情况正确运用灭火战术,主要方法包括阻火、设立隔火带、封锁火道、扑灭余火和看守火场等。
③迅速抢救被困人员,对受伤人员进行转移后送离。
④及时撤离或隔离火场附近的危险物品,防止发生次生灾害。消防使用水和化学灭火剂,利用消防车、灭火器、机动水泵等器材实施灭火。坚持先人后物、先控后灭和确保重点的行动原则。
篇4:i/o设备是什么意思
输入/输出设备,就是指可以与计算机进行数据传输的硬件。
最常见的I/O设备有打印机、硬盘、键盘和鼠标。从严格意义上来讲,它们中有一些只能算是输入设备(比如说键盘和鼠标);有一些只是输出设备(如打印机)。
所有储存器也可以算是输入/输出设备。如硬盘、软盘、光盘等。
篇5:Python 文件I/O
最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:
#!/usr/bin/python# -*- coding: UTF-8 -*- print “Python 是一个非常棒的语言,不是吗?”;
你的标准屏幕上会产生以下结果:
Python 是一个非常棒的语言,不是吗?
篇6:Python 文件I/O
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:
raw_input
input
raw_input函数
raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符):
#!/usr/bin/python str = raw_input(“Enter your input: ”);print “Received input is : ”, str
这将提示你输入任意字符串,然后在屏幕上显示相同的字符串。当我输入“Hello Python!”,它的输出如下:
Enter your input: Hello PythonReceived input is : Hello Python
input函数
input([prompt]) 函数和raw_input([prompt]) 函数基本可以互换,但是input会假设你的输入是一个有效的Python表达式,并返回运算结果。
#!/usr/bin/python str = input(“Enter your input: ”);print “Received input is : ”, str
这会产生如下的对应着输入的结果:
Enter your input: [x*5 for x in range(2,10,2)]Recieved input is : [10, 20, 30, 40]
篇7:Python 文件I/O
到现在为止,您已经可以向标准输入和输进行读写。现在,来看看怎么读写实际的数据文件。
Python提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用file对象做大部分的文件操作。
open函数
你必须先用Python内置的open函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。
语法:
file bject = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
不同模式打开文件的完全列表:
模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。r+打开一个文件用于读写。文件指针将会放在文件的开头。rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。篇8:Python 文件I/O
一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。
以下是和file对象相关的所有属性的列表:
属性描述file.closed返回true如果文件已被关闭,否则返回false。file.mode返回被打开文件的访问模式。file.name返回文件的名称。file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。如下实例:
#!/usr/bin/python# -*- coding: UTF-8 -*- # 打开一个文件fo = open(“foo.txt”, “wb”)print “Name of the file: ”, fo.nameprint “Closed or not : ”, fo.closedprint “Opening mode : ”, fo.modeprint “Softspace flag : ”, fo.softspace
以上实例输出结果:
Name of the file: foo.txtClosed or not : FalseOpening mode : wbSoftspace flag : 0
Close()方法
File对象的close方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
当一个文件对象的引用被重新指定给另一个文件时,Python会关闭之前的文件。用close()方法关闭文件是一个很好的习惯。
语法:
fileObject.close();
例子:
#!/usr/bin/python# -*- coding: UTF-8 -*- # 打开一个文件fo = open(“foo.txt”, “wb”)print “Name of the file: ”, fo.name # 关闭打开的文件fo.close()
以上实例输出结果:
Name of the file: foo.txt
读写文件:
file对象提供了一系列方法,能让我们的文件访问更轻松。来看看如何使用read()和write()方法来读取和写入文件。
Write()方法
Write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
Write()方法不在字符串的结尾不添加换行符('\n'):
语法:
fileObject.write(string);
在这里,被传递的参数是要写入到已打开文件的内容。
例子:
#!/usr/bin/python# -*- coding: UTF-8 -*- # 打开一个文件fo = open(“/tmp/foo.txt”, “wb”)fo.write( “Python is a great language.\nYeah its great!!\n”); # 关闭打开的文件fo.close()
上述方法会创建foo.txt文件,并将收到的内容写入该文件,并最终关闭文件,
如果你打开这个文件,将看到以下内容:
Python is a great language.Yeah its great!!
read()方法
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
语法:
fileObject.read([count]);
在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
例子:
就用我们上面创建的文件foo.txt。
#!/usr/bin/python# -*- coding: UTF-8 -*- # 打开一个文件fo = open(“/tmp/foo.txt”, “r+”)str = fo.read(10);print “Read String is : ”, str# 关闭打开的文件fo.close()
以上实例输出结果:
Read String is : Python is
文件位置:
Tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后:
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
例子:
就用我们上面创建的文件foo.txt。
#!/usr/bin/python# -*- coding: UTF-8 -*- # 打开一个文件fo = open(“/tmp/foo.txt”, “r+”)str = fo.read(10);print “Read String is : ”, str # 查找当前位置position = fo.tell();print “Current file position : ”, position # 把指针再次重新定位到文件开头position = fo.seek(0, 0);str = fo.read(10);print “Again read String is : ”, str# 关闭打开的文件fo.close()
以上实例输出结果:
Read String is : Python isCurrent file position : 10Again read String is : Python is
篇9:Python 文件I/O
所有文件都包含在各个不同的目录下,不过Python也能轻松处理。os模块有许多方法能帮你创建,删除和更改目录。
mkdir()方法
可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。
语法:
os.mkdir(“newdir”)
例子:
下例将在当前目录下创建一个新目录test。
#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 创建目录testos.mkdir(“test”)
chdir()方法
可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。
语法:
os.chdir(“newdir”)
例子:
下例将进入“/home/newdir”目录。
#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 将当前目录改为“/home/newdir”os.chdir(“/home/newdir”)
getcwd()方法:
getcwd()方法显示当前的工作目录。
语法:
os.getcwd()
例子:
下例给出当前目录:
#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 给出当前的目录os.getcwd()
rmdir()方法
rmdir()方法删除目录,目录名称以参数传递。
在删除这个目录之前,它的所有内容应该先被清除。
语法:
os.rmdir('dirname')
例子:
以下是删除“ /tmp/test”目录的例子。目录的完全合规的名称必须被给出,否则会在当前目录下搜索该目录。
#!/usr/bin/python# -*- coding: UTF-8 -*-import os # 删除”/tmp/test”目录os.rmdir( “/tmp/test” )
★ PLC教学论文
★ 基于PCL-818HG型数据采集卡的火灾后砼结构损伤测试系统的设计
【基于Rocket?I/O模块的高速工I/O设计(推荐9篇)】相关文章:
PLC教学中的几点方法2023-02-20
浅谈PLC的特点及应用领域论文2023-03-18
dcs培训总结范文2022-04-30
基于DSP和以太网的数据采集处理系统2022-10-09
书的新一代2022-08-16
监控系统出现故障的报告制度2022-12-20
基于组态软件的电动汽车CAN总线网络设计2023-07-14
VXI总线与虚拟仪器技术2023-03-06
关于单片机生产实习报告2023-03-19
基于FPGA 的VME自定义总线接口设计论文2022-12-01