天龙八部钟汉良54全集54o有没有缓冲器

缓冲器、锁存器等为什么能够提高I/O驱动_百度知道
缓冲器、锁存器等为什么能够提高I/O驱动
缓冲器、锁存器等为什么能够提高I/O驱动
提问者采纳
的理解是,输出信号是由缓冲器的VCC或者GND提供的,比如不加缓冲器的话I&#47,驱动能力可以比5mA大很多,加了缓冲器之后;O驱动能力只有5mA
提问者评价
其他类似问题
为您推荐:
锁存器的相关知识
其他1条回答
还有一种情况是进行阻抗匹配,缓冲器高输入低输出。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您的位置: &
建立高速数字I/O缓冲器宏模型的模糊逻辑方法
优质期刊推荐基于先验知识的数字I/O缓冲器模糊逻辑宏模型--《杭州电子科技大学》2011年硕士论文
基于先验知识的数字I/O缓冲器模糊逻辑宏模型
【摘要】:随着集成电路工作频率的不断提高和尺寸的缩小,高速电路与系统设计时的信号与电源完整性分析变得越来越重要。如何构造精确有效的数字I/O缓冲器宏模型用于系统级的仿真,是信号完整性分析中的重要问题。
本文首先介绍了信号与电源完整性分析的基本过程,着重阐述了数字I/O缓冲器模型的重要性,概述了目前使用的IBIS模型,及正在研究的基于电路非线性动态特性严格描述的缓冲器建模方法。
本文的主要工作是提出了基于电路先验知识的数字I/O缓冲器模糊逻辑建模方法。用模糊逻辑建立一个问题的模型首先要确定模型的结构,包括规则的条数,采用的隶属函数,及前提与结论的形式;然后通过初始模型的构造与后续学习训练两个步骤确定模型的参数。本文在充分考虑到数字I/O缓冲器输出端结构与工作特性的基础上,提出用于这种场合的TSK模糊逻辑系统结构可以进行简化,简化后的模型复杂度降低,参数明显减少,并且规则的条数与前提部分的参数可以根据驱动器输出端的直流特性进行选择。这大大简化了模型构造过程,使一开始构造出来的初始模型就有较好的逼近精度,后续模型参数的学习训练只需经过少量的迭代。
在此基础上,本文进一步将这一方法用于数字缓冲器的电源完整性建模与低压差分LVDS缓冲器的建模。最后通过多个实际缓冲器的建模,说明了本文方法的有效性。
【关键词】:
【学位授予单位】:杭州电子科技大学【学位级别】:硕士【学位授予年份】:2011【分类号】:TN911.6【目录】:
ABSTRACT6-9
1 绪论9-12
1.1 课题研究的背景9-10
1.2 本文的工作10-12
2 信号与电源完整性分析12-18
2.1 信号与电源完整性12-15
2.1.1 信号完整性12-13
2.1.2 电源完整性13-14
2.1.3 信号与电源完整性分析14-15
2.2 IBIS 模型15-18
3 数字缓冲器的非线性动态宏模型18-27
3.1 电路宏模型18-19
3.2 数字缓冲器的非线性动态宏模型19-22
3.3 基于模糊逻辑的方法22-27
3.3.1 模糊逻辑系统23
3.3.2 一般模糊逻辑系统的建模过程23-24
3.3.3 基于模糊逻辑的数字I/O 缓冲器建模24-27
4 基于先验知识的模糊逻辑建模27-36
4.1 基于先验知识的数字驱动器模型27-32
4.1.1 基于电路的先验知识简化模糊逻辑结构27-28
4.1.2 初始模糊逻辑模型的确定28-30
4.1.3 模型等效电路30-32
4.2 用于电源完整性分析的驱动器模型32-34
4.2.1 模型的确定32-33
4.2.2 模型等效电路33-34
4.3 低压差分驱动器模型34-36
4.3.1 LVDS 驱动器34
4.3.2 差分驱动器模型的建立34-36
5 数值实验结果36-51
5.1 驱动器与接收器36-44
5.1.1 驱动器36-42
5.1.2 接收器42-44
5.2 电源完整性建模44-47
5.3 LVDS 驱动器47-51
6 结束语51-52
参考文献53-56
详细摘要57-60
欢迎:、、)
支持CAJ、PDF文件格式
【相似文献】
中国期刊全文数据库
赵刚;[J];天津工业大学学报;2002年04期
常青,刘润生;[J];电路与系统学报;1996年02期
李民安,邹勇,胡健栋;[J];北京邮电大学学报;1994年04期
时龙兴,陈立,葛军;[J];电子学报;1998年08期
马克雄!电气工程系;[J];武汉水利电力大学(宜昌)学报;2000年02期
鲁继超,胡建萍,陈显萼;[J];杭州电子工业学院学报;2003年06期
赵刚,孙凤桐;[J];南开大学学报(自然科学版);2002年01期
王远;[J];北京理工大学学报;1983年03期
王予宏,金民;[J];电子学报;1987年02期
郭联合,李玉山,来新泉,刘雪梅;[J];西安电子科技大学学报;1999年06期
中国重要会议论文全文数据库
郭御风;郭诵忻;龚锐;邓宇;张明;;[A];第十五届计算机工程与工艺年会暨第一届微处理器技术论坛论文集(B辑)[C];2011年
张艳秋;李建中;张兆功;;[A];第十七届全国数据库学术会议论文集(研究报告篇)[C];2000年
赵婧华;曹兴冈;张娟;;[A];2011航空试验测试技术学术交流会论文集[C];2010年
陈虹;夏芳;沈卫超;宋磊;;[A];2010年第16届全国信息存储技术大会(IST2010)论文集[C];2010年
黄惠芬;谢泽明;褚庆昕;李文彩;;[A];2009年全国微波毫米波会议论文集(下册)[C];2009年
聂剑平;曹旭;钱越英;陈昱松;;[A];第六届中国测试学术会议论文集[C];2010年
张继周;;[A];第十二届中国青年信息与管理学者大会论文集[C];2010年
钱迎进;金士尧;肖侬;;[A];2010年第16届全国信息存储技术大会(IST2010)论文集[C];2010年
孙旭;李哲英;;[A];2007系统仿真技术及其应用学术会议论文集[C];2007年
孙旭;李哲英;钮文良;;[A];第十届全国敏感元件与传感器学术会议论文集[C];2007年
中国重要报纸全文数据库
宋家雨;[N];网络世界;2010年
宋家雨;[N];网络世界;2009年
宋家雨;[N];网络世界;2010年
;[N];网络世界;2010年
刘洪宇;[N];中国计算机报;2009年
高军;[N];中国电脑教育报;2008年
中国博士学位论文全文数据库
邓俊勇;[D];浙江大学;2011年
李君;[D];西南交通大学;2010年
高崧;[D];西安电子科技大学;2011年
邹国平;[D];华北电力大学(北京);2011年
张木水;[D];西安电子科技大学;2009年
郭御风;[D];国防科学技术大学;2010年
孟宏睿;[D];西安建筑科技大学;2007年
陆正武;[D];华中科技大学;2011年
王梦灵;[D];上海交通大学;2011年
邹志革;[D];华中科技大学;2008年
中国硕士学位论文全文数据库
薛振磊;[D];杭州电子科技大学;2011年
李扬;[D];云南大学;2012年
刘春天;[D];上海交通大学;2010年
刘波;[D];西安电子科技大学;2011年
苏良碧;[D];内蒙古大学;2011年
郭巍;[D];华南理工大学;2012年
李钰峰;[D];北京邮电大学;2012年
何志斌;[D];北京邮电大学;2012年
王腾飞;[D];复旦大学;2012年
刘诗韵;[D];华南理工大学;2012年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号Java基础(26)
import java.nio.*;
import java.nio.channels.*;
import java.io.*;
* 三种类型的流用以产生可写的,可读的,可读可写的通道。
* getChannel()将会产生一个FileChannel通道,可以向他传送用于读写的ByteBuffer,并且可以锁定文件的某些区域用于独占式访问。
* 将字节放于ByteBuffer中的方法用put方法,也可以用wrap方法将以存在的字节数组包装到ByteBuffer中。一旦如此,就不会复制底层的数组
* 而是把它作为所产生ByteBuffer的存储器,称之为数组支持的ByteBuffer。
* 一旦调用read()来告知FileChannel向ByteBuffer存储字节,就必须调用缓冲器上的flip(),让他做好别人读取字节的准备。*/
public class GetChannel {
private static final int BSIZE = 1024;
@SuppressWarnings(&resource&)
public static void main(String[] args) throws Exception {
// Write a file:
@SuppressWarnings(&resource&)
FileChannel fc = new FileOutputStream(&data.txt&).getChannel();
fc.write(ByteBuffer.wrap(&Some text &.getBytes()));
fc.close();
// Add to the end of the file:
fc = new RandomAccessFile(&data.txt&, &rw&).getChannel();
fc.position(fc.size()); // Move to the end
fc.write(ByteBuffer.wrap(&Some more&.getBytes()));
fc.close();
// Read the file:
fc = new FileInputStream(&data.txt&).getChannel();
ByteBuffer buff = ByteBuffer.allocate(BSIZE);
fc.read(buff);
buff.flip();
while(buff.hasRemaining())
System.out.print((char)buff.get());
} /* Output:
Some text Some more
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1246次
排名:千里之外
转载:10篇
译文:15篇1673人阅读
1.Buffer的属性
& &&每个Buffer都有以下的属性:
& &capacity :容量;表示这个Buffer最多能放多少数据。capacity一般在buffer被创建的时候指定。
& & limit:界限;在Buffer上进行的读写操作都不能越过这个下标。当写数据到buffer中时,limit一般和capacity相等,当读数据时,limit代表buffer中有效数据的长度。
& &position:位置;读/写操作的当前下标。当使用buffer的相对位置进行读/写操作时,读/写会从这个下标进行,并在操作完成后,buffer会更新下标的值。调用position()可返回当前位置。
& &mark:标记;一个临时存放的位置下标。调用mark()会将mark设为当前的position的值,以后调用reset()会将position属性设置为mark的值。mark的值总是小于等于position的值,如果将position的值设的比mark小,当前的mark值会被抛弃掉。
& & 这些属性总是满足以下条件:0 &= mark &= position &= limit &= capacity
& & Buffer的主要方法如下:
& & & clear():清空缓冲区,将position设置为0,limit设置为容量。调用该方法为覆写缓冲区做好准备。
& & & flip():将limit设置为position,position设置为0。该方法位于准备从缓冲区中读取已经写入的数据。
& & & limit():返回limit的值;
& & &&limit(int lim):& 设置limit的值
& & & position():返回position的值
& & & position(int pos):设置position的值
& & & remaining():返回(limit - position)
& & & hasRemaining():若有介于position和limit之间的元素,则返回true
& & & rewind():将position设置为0,limit不变,一般在把数据重写入Buffer前调用
& & & mark():将mark设置为position
& & & reset():将position设置到mark
2.ByteBuffer
& & &在Buffer的众多子类中,ByteBuffer是一个地位特殊的类。它是唯一与通道交互的缓冲器,是将数据移进移出通道的唯一方式。ByteBuffer是一个抽象类,不能直接创建类的实例,但该类中定义了4个static方法来做创建对应的Buffer:
& & ByteBuffer allocate(int capacity) //创建一个指定capacity的ByteBuffer。
& & ByteBuffer allocateDirect(int capacity) //创建一个direct的ByteBuffer,这样的ByteBuffer在参与IO操作时性能会更好
& & ByteBuffer wrap(byte [] array) //将制定的byte数组包装成一个bytebuffer
& & ByteBuffer wrap(byte [] array, int offset, int length) //把一个byte数组或byte数组的一部分包装成ByteBuffer
& &&ByteBuffer定义了一系列get和put操作来从中读写byte数据,如下面几个:
& & & &byte get() & & //会更新position的位置
& & & &ByteBuffer get(byte [] dst) //向dst中写入数据,会改变position位置
& & & &byte get(int index) & &&//不会更新position的位置
& & & &ByteBuffer put(byte b) &&//会更新position的位置
& & & &ByteBuffer put(byte [] src) &//将src中的数据写入Buffer,会改变position位置
& & & &ByteBuffer put(int index, byte b) &&//不会更新position的位置
& &&这些操作可分为绝对定位和相对定为两种,相对定位的读写操作依靠position来定位Buffer中的位置,并在操作完成后会更新position的值。在其它类型的buffer中,也定义了相同的函数来读写数据,唯一不同的就是一些参数和返回值的类型。除了get(int index)、getXxx(int index)和putXxx(int
index, Xxx value)这些指定读取和插入数据的位置的绝对方法外,其他方法均为相对方法。每个put方法的调用结果将返回操作后的Buffer对象,因此可以连续调用put()方法,如:ByteBuffer.putInt(0xCAFEBABE).putShort(3).putShort(45);
& & &由ByteBuffer通过“as”方法产生的其他类型的Buffer也同样具有如上的这些相对和绝对get和put方法。
& & 在ByteBuffer中,数据默认下是以大端形式存储,即高位优先(低地址存放高字节),也可以设置为使用小端方式存储数据,使用order(ByteOrder ord)方法修改存储方式,ord的值可取为:ByteOrder.BIG_ENDIAN或者ByteOrder.LITTLE_ENDIAN两者之一。
& & &视图缓冲器可以让我们通过某个特定的基本数据类型的视窗查看底层的ByteBuffer。ByteBuffer依然是实际存储数据的地方,“支持”在它上建立的其他视图,对这些视图的任何修改都会映射成对ByteBuffer中数据的修改。利用asCharBuffer、asShortBuffer等“asXXXBuffer”方法可以获取ByteBuffer上对应的视图。当我们需要向ByteBuffer中写入数据时,可以使用ByteBuffer自带的put/get方法来操作,也可以建立一个对应的视图,通过视图的put/get方法来操作数据。如下图所示为ByteBuffer和其他视图的转换:
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
& & & & & &字符集:Charset;编码(Encode):把明文的字符序列转换成计算机能够理解的二进制序列;解码(Decode):把二进制数据转换成明文字符串。JDK提供了Charset类来处理字节序列和字符序列(字符串)之间的转换关系。
& & & Charset类中的静态方法availableCharsets()返回当前JDK所支持的所有字符集。一旦知道了某个字符集的别名,就可以创建 对应的Charset对象,使用forName()方法传入字符集别名来创建;随后根据需要调用字符集对象的newEncoder()方法或者newDecoder()方法,分别返回与该字符集对应的编码器和解码器,调用编码器的encode方法可以将字符序列编码为字节序列,而调用decode()方法则将字节序列解码为字符序列。如下代码:
Charset gbk = Charset.forName(&GBK&);
//返回GBK字符集对应的字符集对象
CharsetEncoder gbkEncoder = gbk.newEncoder();//创建该字符集对应的编码器
CharsetEncoder gbkDecoder = gbk.newDecoder();//创建该字符集对应的解码器
ByteBuffer bb = gbkEncoder.encode(CharBuffer in); //使用encode方法将CharBuffer编码为ByteBuffer
CharBuffer cb = gbkDecoder.decode(ByteBuffer in); //解码
3.ByteBuffer与FileChannel交互
& & & 使用FileInputStream、FileOutputStream、RandomAccessFile对应的getChannel()方法可以返回文件对应的FileChannel,使用ByteBuffer即可和FileChannel进行交互,代码如下:
//: io/GetChannel.java
// Getting channels from streams
import java.nio.*;
import java.nio.channels.*;
import java.io.*;
public class GetChannel {
private static final int BSIZE = 1024;
public static void main(String[] args) throws Exception {
// Write a file:
FileChannel fc =
new FileOutputStream(&data.txt&).getChannel();
fc.write(ByteBuffer.wrap(&Some text &.getBytes()));
fc.close();
// Add to the end of the file:
new RandomAccessFile(&data.txt&, &rw&).getChannel();
fc.position(fc.size()); // Move to the end
fc.write(ByteBuffer.wrap(&Some more&.getBytes()));
fc.close();
// Read the file:
fc = new FileInputStream(&data.txt&).getChannel();
ByteBuffer buff = ByteBuffer.allocate(BSIZE);
fc.read(buff);
buff.flip();
while(buff.hasRemaining())
System.out.print((char)buff.get());
} /* Output:
Some text Some more
4.内存映射文件
& & &内存映射文件允许将文件的部分或者全部直接映射成Buffer,程序通过Buffer操作文件。
& & &MappedByteBuffer是ByteBuffer的子类,通过调用FileChannel对应的map()方法返回这个Buffer对象,用于将文件的内容映射成Buffer。map()方法的签名如下:
& & & & & & & MappedByteBuffer map(FileChannel.MapMode mode, long position, long &size);
& & &第一个参数为执行映射时的模式,分别有只读(FileChannel.MapMode.READ_ONLY),读写(FileChannel.MapMode.READ_WRITE)等模式。而第二个、第三个参数用于控制将
Channel哪些数据映射成ByteBuffer。映射完成之后,通过write和read的一系列重装方法,对Buffer进行读写。
& & 文件加锁:FileChannel调用tryLock()和Lock()方法可以对文件进行加锁,返回FileLock对象。tryLock()方法是非阻塞的,设法获取锁,如果不能获得,则返回;而lock()方法是阻塞的,直到获得锁。获得锁以后可以调用release()方法释放对应锁。也可以只对文件的一部分进行加锁。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:30941次
排名:千里之外
原创:20篇
(1)(1)(11)(11)}

我要回帖

更多关于 天龙八部钟汉良版54集 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信