请教前辈们!! 我遇到问题了,该看哪方面的书籍或资料

[复制链接]
 楼主| 许世霞 发表于 2008-6-2 17:02 | 显示全部楼层 |阅读模式
比如ARM芯片LPC2132里介绍的关于UART0的一段:<br />&nbsp;&nbsp;&nbsp;U0RBR&nbsp;是UART0&nbsp;Rx&nbsp;FIFO&nbsp;的最高字节。它包含了最早接收到的字符,可通过总线接口读出。LSB(bit0)代表最早接收到的数据位。如果接收到的字符小于8&nbsp;位,未使用的MSB&nbsp;填充为0。如果要访问U0RBR,U0LCR&nbsp;的除数锁存访问位(DLAB)必须为0。U0RBR&nbsp;为只读寄存器。由于PE、FE&nbsp;和BI&nbsp;位与RBR&nbsp;FIFO&nbsp;顶端的字节相对应(即下次读RBR&nbsp;时读出的字节),因此,将接收的字节及其状态位成对读出的正确方法是先读U0LSR&nbsp;寄存器的内容,再读U0RBR&nbsp;的字节。<br /><br />&nbsp;&nbsp;这段涉及到的<br />1&nbsp;FIFO的情况,<br />2&nbsp;最早接收到的数据怎么能放到LSB(这可是最低位呀)里,<br />3&nbsp;“由于PE、FE&nbsp;和BI&nbsp;位与RBR&nbsp;FIFO&nbsp;顶端的字节相对应(即下次读RBR&nbsp;时读出的字节)”,<br />等等这些,如果我不看好多好多遍是根本不知道这是怎么一回事的?根据经验也只会知道一知半解的。<br />&nbsp;&nbsp;所以我给看哪些书籍或什么资料来补充我这方面的不足,能够让我再看这些大芯片的资料时不会显得很茫然的样子<br />&nbsp;&nbsp;还请前辈们多多指点一下!小女子感激不尽呀。。。<br />&nbsp;&nbsp;&nbsp;
 楼主| 许世霞 发表于 2008-6-3 13:35 | 显示全部楼层

路过的停下你们的脚步看看,留下点足迹

。。。。。。。
tyw 发表于 2008-6-3 22:39 | 显示全部楼层

看来lz对一些基本东东还不大熟悉

FIFO是先进先出寄存器,英文就是First&nbsp;In&nbsp;First&nbsp;Out寄存器。<br />First-In&nbsp;First-Out&nbsp;先进先出是库房管理的一**则&nbsp;<br /><br />1.什么是FIFO?<br />&nbsp;&nbsp;&nbsp;&nbsp;FIFO是英文First&nbsp;In&nbsp;First&nbsp;Out&nbsp;的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。<br /><br />2.什么情况下用FIFO?<br />&nbsp;&nbsp;&nbsp;&nbsp;FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端时AD数据采集,另一端时计算机的PCI总线,假设其AD采集的速率为16位&nbsp;100K&nbsp;SPS,那么每秒的数据量为100K×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。&nbsp;
 楼主| 许世霞 发表于 2008-6-4 09:38 | 显示全部楼层

谢谢tyw前辈那么晚了还给我回复!我非常感谢

我再补充点!让FIFO更充实点。<br />FIFO(First&nbsp;&nbsp;IN&nbsp;First&nbsp;Out)先进先出电路<br />&nbsp;&nbsp;&nbsp;实现数据先进先出的存储器件,FIFO的用途:普遍用作数据缓冲器,可以用在电话通讯网络的前端来同步输入的网络数据包。也可以用于顺序数据的缓冲,比如音频信号或视频信号。另一个广泛的应用是在处理器之间的通讯中。<br /><br />&nbsp;&nbsp;&nbsp;FIFO的基本单元是寄存器,作为存储器件,FIFO的存储能力是由其内部定义的存储寄存器的数量决定&nbsp;.&nbsp;FIFO存储器一般以数据量的深度X宽度的形式来说明所采用的基本结构<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;第一代FIFO存储器是基于“导向”理论的,数据从输入端被移到输出端,所需要的时间称为导向时间<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;每一个数据字需要一个状态触发器,因此对数据锁存的控制只能实现很短的FIFO的操作<br /><br />以长度为8的FIFO为例说明其工作原理。入图所示<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;____________________<br /><br />&nbsp;&nbsp;D,&nbsp;&nbsp;C,&nbsp;&nbsp;B,&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;——&gt&nbsp;|&nbsp;1&nbsp;|&nbsp;&nbsp;2&nbsp;|&nbsp;3&nbsp;|&nbsp;4&nbsp;|&nbsp;5&nbsp;&nbsp;|&nbsp;6&nbsp;|&nbsp;7&nbsp;|&nbsp;8|———&gt<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;<br /><br />两边的箭头表示数据移动的方向。A,B,C,D表示被处理的数据。1,2,3,4,。。。8表示FIFO的8个存储单元。表明这个FIFO中共有8个寄存器单元。每个寄存器单元可以存储一个数据。所以寄存器的单元越多,FIFO的存储能力就越强。每个寄存器单元的位宽与FIFO的输入和输出端的位宽是一致的。如果要处理的数据A,B,C,D是16位的数据,那么输入输出端及每个寄存器单元的位宽就都是16位。这个FIFO可以命名为8X16FIFO。它在每一个时钟上升沿到来时,数据向右移动一个存储单元。这样在时钟的控制下,数据从左到右通过存储单元<br /><br />&nbsp;&nbsp;&nbsp;FIFO通常是双端口的存储器,其中一个端口用于写入数据,而另一个端口用于读出数据。可以同时对存储器字存储单元进行写入和读出操作。它的数据吞吐率是普通RAM的两倍。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;FIFO型的存储器不需要由地址来存取数据。需要由另外的信号线(或标志)来指明存储器的内容状态。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在的FIFO存储器采用SRAM单元来实现。它是基于带两个指针的环行FIFO结构的。要写入的数据的存储地址放在写指针中,而FIFO结构中要读出的第一个数据的地址放在读指针中<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;在复位后,两个指针都指向存储器的同一个字单元。每次写操作后,写指针指向下一个存储单元。对数据字的读取操作,会把读指针指向下一个要读取的数据字<br /><br />&nbsp;&nbsp;&nbsp;读指针就不断地跟随写指针,当读指针跟上写指针后,FIFO的结构里面为空。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;如果写指针追上读指针,FIFO结构里面的数据是满载的。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;如果从硬件上来实现循环存储器,可以用双端口的SRAM来存取数据。指针具用二进制计数器的特征,它用于产生SRAM的存储器地址<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;同步FIFO存储器的基本结构包括存储器阵列,标志逻辑和扩展逻辑(图太难画了,就不贴了)。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;存储器阵列由双端口存储单元构成。允许同时对存储单元的两个端口(读端口和写端口)进行存取。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;标志逻辑用于比较两个地址指针的值,如果两个值的比较结果为零,FIFO存储器为全空,同时全空标志为真。如果两个值的比较结果等于存储器的容量深度,说明存储器全满,同时全满标志为真。<br /><br />还可以设置其他一些标志,比如半满,可编程接近满,可编程接近空等。它们也通过对偏移量寄存器中的编程值和存储器阵列中的字的数量进行比较来生成9(虽然不是很理解,但估计以后会理解的。先放在这里)<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;扩展逻辑通过对多个模块按容量深度扩展结构进行的级联来形成更深的FIFO存储器,采用令牌传递方法来实现逻辑上容量更深的FIFO。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;在普通模式下(没有进行容量,深度级联的模式),每一个地址在到达最大值后,会跳会到零。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在容量深度扩展模式下,当地址指针到达最大值后,一个脉冲信号会送到扩展端口,该端口把令牌传到另一个FIFO存储器中,(直到令牌重新传回来,这个地址指针才会增加)(这个地方还有点模糊,有待解决。)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字宽扩展,可以使FIFO存储器有更宽的数据通路<br /><br />在字宽扩展模式中,读操作,写操作和重传输都一样。要在字宽上扩展多个FIFO存储器,必须同时通过对每个存储器的状态标志进行与操作生成“混合标志”。混合标志也包括全空标志和全满标志。这样才能保证FIFO存储器保持同步。<br />&nbsp;(希望能弄得很明白,我忘了这些知识在哪里见过了,真不是该看什么书好了)<br /><br />
tyw 发表于 2008-6-4 10:50 | 显示全部楼层

每个东东都这么啃,恐怕lz的内存要不够用了,哈哈

搞应用设计的可避开这些烦锁的内部结构,抓住与使用有关的状态字怎么设置与你的要求相符就行了.<br />你辛辛苦苦啃了几天的书,恐怕忘却的时间会更短.而掌握一个好的学习方法,则会让你越学越精.这就是鱼和渔的区别.
 楼主| 许世霞 发表于 2008-6-4 13:17 | 显示全部楼层

tyw前辈您说的对!呵呵

&nbsp;&nbsp;&nbsp;您确实教会了我渔的本领!感谢!这些东东我也是一带而过的了!。我总是喜欢刨根问底.话又说回来了,这些基本的东西我们是不是应该了解知道呀!对理解程序我觉得是很有必要的!再说我现在搞应用设计也是很浅的程度呀!我总是喜欢把我遇到的不懂的问题都搞明白,当然了是在有时间的情况下了!<br />&nbsp;&nbsp;&nbsp;还希望多多指点,以授之以渔哦
tyw 发表于 2008-6-4 15:29 | 显示全部楼层

看来LZ的内存至少2G,哈哈

<br /><BIG><font color=#FF0000><SMALL>要带着问题学,&nbsp;</SMALL></font></BIG><br /><BIG><font color=#FF0000><SMALL>&nbsp;&nbsp;活学活用,&nbsp;</SMALL></font></BIG><br /><BIG><font color=#FF0000><SMALL>&nbsp;&nbsp;&nbsp;&nbsp;学用结合,&nbsp;</SMALL></font></BIG><br /><BIG><font color=#FF0000><SMALL>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;急用先学,&nbsp;</SMALL></font></BIG><br /><BIG><font color=#FF0000><SMALL>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;立竿见影,</SMALL></font></BIG><br /><BIG><font color=#FF0000><SMALL>在“用”字上狠下功夫。</SMALL></font></BIG><br /><BIG><font color=#FF0000><SMALL></SMALL></font></BIG><font color=#FF0000><br /></font><img src="https://bbs.21ic.com/upfiles/img/20077/2007720154555416.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720154555416.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720154555416.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720154555416.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720154555416.gif"><br /><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192035807.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192035807.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192035807.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192035807.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192035807.gif"><br /><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192226577.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192226577.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192226577.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192226577.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192226577.gif"><img src="https://bbs.21ic.com/upfiles/img/20077/2007720192226577.gif">
 楼主| 许世霞 发表于 2008-6-5 09:03 | 显示全部楼层

呵呵。。。

&nbsp;&nbsp;我的不是内存,我的是FIFO,所学知识都是这边进去,那边就出去了。根本存不住呵呵。。。。前辈您很乐观呀,每次都是“哈哈“
tyw 发表于 2008-6-5 12:53 | 显示全部楼层

FIFO是这边进去,这边出去,先进先出,才学的哦,哈哈

  
andyzhag 发表于 2008-7-22 22:01 | 显示全部楼层

呵呵

我来顶顶<br />
microlab 发表于 2008-7-27 23:35 | 显示全部楼层

多看一些基础知识咯

这些都不是一个很复杂的知识,所以,不会有一些专门介绍这些知识的资料,都是平时书籍上用到就会提到的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

3781

帖子

4

粉丝
快速回复 返回顶部 返回列表