日韩欧美国产极速不卡一区,国产手机视频在线观看尤物,国产亚洲欧美日韩蜜芽一区,亚洲精品国产免费,亚洲二区三区无码中文,A大片亚洲AV无码一区二区三区,日韩国语国产无码123

您好,歡迎來(lái)到維�(kù)電子市場(chǎng)�(wǎng) 登錄 | 免費(fèi)注冊(cè)

�(lián)系供�(yīng)商在線客服: QQ:2355278032QQ:389939789
廣告

FIFO存儲(chǔ)�
閱讀�14065�(shí)間:2011-01-10 16:31:47

  FIFO存儲(chǔ)�即先�(jìn)先出(First In First Out)存�(chǔ)器,��(shù)字電��,有利用移位寄存��(shí)�(xiàn)FIFO的產(chǎn)品,這種電路的功能是通過(guò)移位�(lái)�(shí)�(xiàn)�。而FIFO存儲(chǔ)�,是由若干存�(chǔ)單元�(gòu)成的,數(shù)�(jù)�(xiě)入之后就保持不動(dòng),而FIFO功能是利�芯片�(nèi)部的地址指針的自�(dòng)修改�(lái)�(shí)�(xiàn)��

主要參數(shù)

  FIFO的寬度:也就是英文資料里常看到的THE WIDTH,它只的是FIFO一次讀�(xiě)操作的數(shù)�(jù)�,就像MCU�8位和16�,ARM 32位等等,F(xiàn)IFO的寬度在單片成品IC中是固定�,也有可選擇的,如果用FPGA自己�(shí)�(xiàn)一�(gè)FIFO,其�(shù)�(jù)位,也就是寬度是可以自己定義��

  FIFO的深度:THE DEEPTH,它指的是FIFO可以存儲(chǔ)多少�(gè)N位的�(shù)�(jù)(如果寬度為N)。如一�(gè)8位的FIFO,若深度�8,它可以存儲(chǔ)8�(gè)8位的�(shù)�(jù),深度為12 ,就可以存儲(chǔ)12�(gè)8位的�(shù)�(jù),F(xiàn)IFO的深度可大可小,�(gè)人認(rèn)為FIFO深度的計(jì)算并�(wú)一�(gè)固定的公�。在FIFO�(shí)際工作中,其�(shù)�(jù)的滿/空標(biāo)志可以控制數(shù)�(jù)的繼�(xù)�(xiě)入或讀�。在一�(gè)具體的應(yīng)用中也不可能由一些參�(shù)算數(shù)精確的所需FIFO深度為多�,這在�(xiě)速度大于讀速度的理想狀�(tài)下是可行�,但在實(shí)際中用到的FIFO深度往往要大于計(jì)算�。一般來(lái)�(shuō)根據(jù)電路的具體情�,在兼顧系統(tǒng)性能和FIFO成本的情況下估算一�(gè)大概的寬度和深度就可以了。而對(duì)于寫(xiě)速度慢于讀速度的應(yīng)�,F(xiàn)IFO的深度要根據(jù)讀出的�(shù)�(jù)�(jié)�(gòu)和讀出數(shù)�(jù)的由那些具體的要求來(lái)確定�

  滿標(biāo)志:FIFO已滿�?qū)⒁獫M�(shí)由FIFO的狀�(tài)電路送出的一�(gè)信號(hào),以阻止FIFO的寫(xiě)操作繼續(xù)向FIFO中寫(xiě)�(shù)�(jù)而造成溢出(overflow)�

  空標(biāo)志:FIFO已空�?qū)⒁諘r(shí)由FIFO的狀�(tài)電路送出的一�(gè)信號(hào),以阻止FIFO的讀操作繼續(xù)從FIFO中讀出數(shù)�(jù)而造成�(wú)效數(shù)�(jù)的讀出(underflow��

  讀�(shí)鐘:讀操作所遵循的時(shí)鐘,在每�(gè)�(shí)鐘沿�(lái)臨時(shí)讀�(shù)�(jù)�

  �(xiě)�(shí)鐘:�(xiě)操作所遵循的時(shí)�,在每�(gè)�(shí)鐘沿�(lái)臨時(shí)�(xiě)�(shù)�(jù)�

  讀指針:指向下一�(gè)讀出地址。讀完后自動(dòng)�1�

  �(xiě)指針:指向下一�(gè)要寫(xiě)入的地址�,寫(xiě)完自�(dòng)�1�

  讀�(xiě)指針其實(shí)就是讀�(xiě)的地址,只不過(guò)這�(gè)地址不能任意選擇,而是連續(xù)��

用�

  FIFO一般用于不同時(shí)鐘域之間的數(shù)�(jù)傳輸,比如FIFO的一端時(shí)AD�(shù)�(jù)采集,另一端時(shí)�(jì)算機(jī)的PCI總線,假�(shè)其AD采集的速率�16� 100K SPS,那么每秒的�(shù)�(jù)量為100K×16bit=1.6Mbps,而PCI總線的速度�33MHz,總線寬�32bit,其傳輸速率�1056Mbps,在兩�(gè)不同的時(shí)鐘域間就可以采用FIFO�(lái)作為�(shù)�(jù)緩沖。另外對(duì)于不同寬度的�(shù)�(jù)接口也可以用FIFO,例如單片機(jī)�8位數(shù)�(jù)輸出,而DSP可能�16位數(shù)�(jù)輸入,在單片�(jī)與DSP連接�(shí)就可以使用FIFO�(lái)�(dá)到數(shù)�(jù)匹配的目的�

具體操作

  (1) �(xiě)操作。在FIFO非滿(FF�1)的條件下,利用脈沖的上升沿將�(shù)�(jù)�(xiě)�。每�(xiě)入一�(gè)�(shù)�(jù),內(nèi)部地址指針自動(dòng)�1,并�512�(gè)單元�(nèi)循環(huán)�

  (2) 讀操作。在FIFO非空(EF�1)狀�(tài)下,利用脈沖下降沿將�(shù)�(jù)讀�。每讀出一�(gè)�(shù)�(jù),內(nèi)部地址指針自動(dòng)�1,并�512�(gè)單元�(nèi)循環(huán)�

  芯片的滿與空是利用芯片內(nèi)部寫(xiě)地址指針和讀地址指針的距離來(lái)決定的。同�(shí),對(duì)芯片的寫(xiě)與讀是完全獨(dú)立的,可以同�(shí)�(jìn)�,也可以各自操作。利用芯片所提供的狀�(tài)信號(hào),可以方便地�(shí)�(xiàn)FIFO的數(shù)�(jù)傳送�

  (3) �(jí)�(lián)操作� 可以利用多片DS2009�(shí)�(xiàn)字寬的擴(kuò)展�

  利用兩片�(jí)�(lián)即可�(shí)�(xiàn)18�(兩�(gè)9�)�(shù)�(jù)的擴(kuò)�,從而構(gòu)�512×18 bit的FIFO存儲(chǔ)��

  同樣,利用多片也可以�(shí)�(xiàn)深度的擴(kuò)�。例�,利�4片DS2009�(jí)�(lián)即可�(shí)�(xiàn)2048×9 bit的深度擴(kuò)��

�(jié)�(gòu)

  FIFO存儲(chǔ)器的連接模式如圖所�。在FIFO存儲(chǔ)器而不是地址總線上附加了表示�(nèi)部緩沖器狀�(tài)(Buffer Full,緩沖器已滿;Buffer Empty,緩沖器為空)的狀�(tài)引腳,連接于FIFO的雙方利用該狀�(tài)�(jìn)行操作的控制。另外,還設(shè)�(jì)了在接通電源及�(fù)位(Reset)或由于操作中的某些異常等原因而重新初始化(無(wú)�(shù)�(jù)狀�(tài))FIFO的復(fù)位引�,這可以說(shuō)是FIFO存儲(chǔ)器的特點(diǎn)�

FIFO存儲(chǔ)器的鏈接結(jié)構(gòu)

�(shè)�(jì)的難�(diǎn)

  FIFO�(shè)�(jì)的難�(diǎn)在于怎樣判斷FIFO的空/滿狀�(tài)。為了保證數(shù)�(jù)正確的寫(xiě)入或讀�,而不�(fā)生益處或讀空的狀�(tài)出現(xiàn),必須保證FIFO在滿的情況下,不能�(jìn)行寫(xiě)操作。在空的狀�(tài)下不能�(jìn)行讀操作。怎樣判斷FIFO的滿/空就成了FIFO�(shè)�(jì)的核心問(wèn)�。由于同步FIFO幾乎很少用到,這里只描述異步FIFO的空/滿標(biāo)志產(chǎn)生問(wèn)��

  在用到觸�(fā)器的�(shè)�(jì)�,不可避免的�(huì)遇到亞穩(wěn)�(tài)的問(wèn)題(�(guān)于亞�(wěn)�(tài)這里不作介紹,可查看相關(guān)資料�。在涉及到觸�(fā)器的電路�,亞�(wěn)�(tài)�(wú)法徹底消�,只能想辦法將其�(fā)生的概率將到。其中的一�(gè)方法就是使用格雷�。格雷碼在相鄰的兩�(gè)碼元之間只由一位變�(二�(jìn)制碼在很多情況下是很多碼元在同時(shí)變化)。這就�(huì)避免�(jì)�(shù)器與�(shí)鐘同步的�(shí)候發(fā)生亞�(wěn)�(tài)�(xiàn)�。但是格雷碼有�(gè)缺點(diǎn)就是只能定義2^n的深度,而不能像二�(jìn)制碼那樣隨意的定義FIFO的深�,因?yàn)楦窭状a必須循環(huán)一�(gè)2^n,否則就不能保證兩�(gè)相鄰碼元之間相差一位的條件,因此也就不是真正的各雷碼了。第二就是使用冗余的觸發(fā)�,假�(shè)一�(gè)觸發(fā)器發(fā)生亞�(wěn)�(tài)的概率為P,那么兩�(gè)及聯(lián)的觸�(fā)器發(fā)生亞�(wěn)�(tài)的概率就為P的平�。但這回�(dǎo)致延�(shí)的增�。亞�(wěn)�(tài)的發(fā)生會(huì)使得FIFO出現(xiàn)�(cuò)�,讀/�(xiě)�(shí)鐘采樣的地址指針�(huì)與真�(shí)的值之間不同,這就�(dǎo)致寫(xiě)入或讀出的地址�(cuò)�。由于考慮延時(shí)的作�,空/滿標(biāo)志的�(chǎn)生并不一定出�(xiàn)在FIFO真的�/滿時(shí)才出�(xiàn)??赡蹻IFO還未�/滿時(shí)就出�(xiàn)了空/滿標(biāo)�。這并�(méi)有什么不�,只要保證FIFO不出�(xiàn)overflow or underflow 就OK了�

  很多�(guān)于FIFO的文章其�(shí)討論的都是空/滿標(biāo)志的不同算法�(wèn)��

  在Vijay A. Nebhrajani的《異步FIFO�(jié)�(gòu)》一文中,作者提出了兩�(gè)�(guān)于FIFO�/滿標(biāo)志的算法�

  �(gè)算法:構(gòu)造一�(gè)指針寬度為N+1,深度為2^N字節(jié)的FIFO(為便方比較將格雷碼指針�(zhuǎn)換為二�(jìn)制指針)。當(dāng)指針的二�(jìn)制碼中位不一致而其它N位都相等�(shí),F(xiàn)IFO為滿(在Clifford E. Cummings的文章中以格雷碼表示是前兩位均不相同,而后兩位LSB相同為滿,這與換成二�(jìn)制表示的MSB不同其他相同為滿是一樣的�。當(dāng)指針完全相等�(shí),F(xiàn)IFO為空。這也許不容易看出,舉�(gè)例子�(shuō)明一下:一�(gè)深度�8字節(jié)的FIFO怎樣工作(使用已�(zhuǎn)換為二�(jìn)制的指針�。FIFO_WIDTH=8,F(xiàn)IFO_DEPTH= 2^N = 8,N = 3,指針寬度為N+1=4。起初rd_ptr_bin和wr_ptr_bin均為�0000”。此�(shí)FIFO中寫(xiě)�8�(gè)字節(jié)的數(shù)�(jù)。wr_ptr_bin =�1000”,rd_ptr_bin=�0000�。當(dāng)�,這就是滿條件?,F(xiàn)在,假設(shè)�(zhí)行了8次的讀操作,使得rd_ptr_bin =�1000�,這就是空條件。另外的8次寫(xiě)操作將使wr_ptr_bin 等于�0000�,但rd_ptr_bin 仍然等于�1000”,因此FIFO為滿條件�

  顯然起始指針�(wú)需為�0000�。假�(shè)它為�0100�,并且FIFO為空,那�8�(gè)字節(jié)�(huì)使wr_ptr_bin =�1100��, rd_ptr_bin 仍然為�0100”。這又�(shuō)明FIFO為滿�

  在Vijay A. Nebhrajani的這篇《異步FIFO�(jié)�(gòu)》文章中�(shuō)明了怎樣�(yùn)用格雷碼�(lái)�(shè)置空滿的條件,但�(méi)有說(shuō)清為什么深度為8的FIFO其讀�(xiě)指針要用3+1位的格雷碼來(lái)�(shí)�(xiàn),�3+1位的格雷碼可以表�16位的深度,而真�(shí)的FIFO只有8位,這是怎么回事?而這�(gè)�(wèn)題在Clifford E. Cummings的文章中得以解釋。三位格雷碼可表�8位的深度,若在加一位最為MSB,則這一位加其他三位組成的格雷碼并不代表新的地址,也就是�(shuō)格雷碼的0100表示表示7,�1100仍然表示7,只不過(guò)格雷碼在�(jīng)�(guò)一�(gè)�0位MSB的循�(huán)后�(jìn)入一�(gè)�1為MSB的循�(huán),然后又�(jìn)入一�(gè)�0位MSB的循�(huán),其他的三位碼仍然是格雷碼,但這就帶來(lái)一�(gè)�(wèn)�,在0100的循�(huán)完成后,�(jìn)�1000,他們之間有兩位�(fā)生了變換,而不�1位,所以增加一位MSB的做法使得該碼在兩處�0100~1000�1100~0000有兩位碼元發(fā)生變化,故該碼以不是真正的格雷碼。增加的MSB是為了實(shí)�(xiàn)空滿�(biāo)志的�(jì)算。Vijay A. Nebhrajani的文章用格雷碼轉(zhuǎn)二�(jìn)�,再�(zhuǎn)格雷碼的情況下提出空滿條件,僅過(guò)兩次�(zhuǎn)�,而Clifford E. Cummings的文章中直接在格雷碼條件下得出空滿條�。其�(shí)二者是一樣的,只是實(shí)�(xiàn)方式不同罷了�

  第二種算法:Clifford E. Cummings的文章中提到的STYLE #2。它將FIFO地址分成�4部分,每部分分別用高兩位的MSB 00 �01� 11� 10決定FIFO是否為going full 或going empty (即將滿或�)。如果寫(xiě)指針的高兩位MSB小于讀指針的高兩位MSB則FIFO為“幾乎滿�,若�(xiě)指針的高兩位MSB大于讀指針的高兩位MSB則FIFO為“幾乎空��

  在Vijay A. Nebhrajani的《異步FIFO�(jié)�(gòu)》第三部分的文章中也提到了一種方法,那就是方向標(biāo)志與門(mén)�。設(shè)定了FIFO容量�75%作為上限,設(shè)定FIFO容量�25%為下�。當(dāng)方向�(biāo)志超�(guò)門(mén)限便輸出�/空標(biāo)�,這與Clifford E. Cummings的文章中提到的STYLE #2可謂是異曲同工。他們都屬于保守的空滿判�。其�(shí)這時(shí)輸出空滿�(biāo)志FIFO并不一定真的空/滿�

  �(shuō)到此,我們已�(jīng)清楚地看�,F(xiàn)IFO�(shè)�(jì)最�(guān)鍵的就是�(chǎn)生空/滿標(biāo)志的算法的不同產(chǎn)生了不同的FIFO。但�(wú)論是精確的空滿還是保守的空滿都是為了保證FIFO工作的可靠�

維庫(kù)電子通,電子知識(shí),一查百通!

已收錄詞�153979�(gè)

凤山�| 澄迈�| 曲周�| 望江�| 宜宾�| 本溪�| 甘孜| 玛纳斯县| 察雅�| 中西�| 海晏�| 大姚�| 浦城�| 夏邑�| 盖州�| 濮阳�| 桂平�| 常山�| 宜川�| 龙陵�| 澄城�| 前郭�| 灌云�| 呈贡�| 鲁山�| 七台河市| 万宁�| 蛟河�| 营山�| 永安�| 聂拉木县| 扎囊�| 宁都�| 平和�| 永胜�| 乌拉特后�| 兰坪| 庆城�| 曲周�| 神农架林�| 南投�|