<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 雙口RAM CY7C026在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用

          雙口RAM CY7C026在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用

          作者: 時(shí)間:2008-05-06 來源:今日電子 收藏

            引言

          本文引用地址:http://www.ex-cimer.com/article/82159.htm

            由工業(yè)計(jì)算機(jī)通過控制的前端系統(tǒng)在領(lǐng)域中得到了廣泛的應(yīng)用,一般的數(shù)據(jù)傳送系統(tǒng)在大數(shù)據(jù)量的情況下會造成數(shù)據(jù)堵塞現(xiàn)象。在系統(tǒng)設(shè)計(jì)的過程中經(jīng)過多方面的比較,最后采用高數(shù)雙口RAM構(gòu)成的高速數(shù)據(jù)交換接口成功地解決了此問題。

            CY7C026是CYPRESS公司生產(chǎn)的16K×16高速雙口靜態(tài)RAM,存取速度小于25ns。它具有真正的雙端口,可以同時(shí)進(jìn)行數(shù)據(jù)存取,兩個(gè)端口具有獨(dú)立的控制信號線、地址線和數(shù)據(jù)線,另外通過主/從選擇可以方便地?cái)U(kuò)存儲容量和數(shù)據(jù)寬度。通過芯片的信號量標(biāo)志器,左、右兩端口可以實(shí)現(xiàn)芯片資源的共享。CY7C026芯片的管腳說明參見表1,內(nèi)部功能框圖見圖1。

            CY7C026的工作原理

            ● 存取原理

            由CY7C026的內(nèi)部結(jié)構(gòu)圖可以看出,該芯片的核心部分是雙端口存儲陣列,左右兩個(gè)端口可以共用該存儲陣列,并且擁有各自的控制線,在單獨(dú)存取數(shù)據(jù)時(shí),和普通的RAM相同。同時(shí)讀取不同存儲空間的數(shù)據(jù)和同時(shí)讀取相同數(shù)據(jù)空間的數(shù)據(jù)時(shí),左右端口可以同時(shí)進(jìn)行。若同時(shí)對相同的數(shù)據(jù)空間做寫操作,或一端口對一數(shù)據(jù)空間作讀操作的同時(shí)另一端口對該數(shù)據(jù)空間作寫操作,左右端口將發(fā)生沖突。為此,CY7C026通過BUSY管腳來處理這兩種情況。

            當(dāng)左右端口對不同存儲空間進(jìn)行讀寫操作時(shí),可同時(shí)存取。此時(shí),左右端口的BUSY信號同時(shí)置高。若對同一存儲空間同時(shí)進(jìn)行存儲操作時(shí),哪一端的存儲請求信號先出現(xiàn),則該端的BUSY信號置高,允許存儲。哪一端的存儲信號出現(xiàn)在后,則這一端BUSY信號置低,禁止存儲。

            值得注意的是,左右兩端存取請求信號出現(xiàn)的時(shí)間差必須大于5ns,不然仲裁邏輯無法判斷哪一邊的存取請求信號出現(xiàn)在前。如果出現(xiàn)兩端存取請求信號出現(xiàn)的時(shí)間差小于5ns的情況,仲裁邏輯將一邊的BUSY信號置高,將另一邊的BUSY信號置低,從而保證兩個(gè)端口一個(gè)執(zhí)行數(shù)據(jù)存儲,另一端口進(jìn)行數(shù)據(jù)讀取,避免了沖突。

            ● 中斷功能和主/從模式的使用

            CY7C026芯片的中斷功能是通過“信箱”來實(shí)現(xiàn)的。所謂的“信箱”是指芯片將存儲器的高地址3FFF作為左端口的“信箱”,而3FFE作為右端口的“信箱”。下面以左端口向右端口傳送數(shù)據(jù)為例,說明中斷功能的用法。當(dāng)左端口將數(shù)據(jù)寫入右端口的“郵箱”時(shí),右端口的INTR管腳就會產(chǎn)生中斷信號,即INTR管腳置低。右端口讀取該數(shù)據(jù)后中斷信號自動(dòng)復(fù)位。右端口向左端口傳送數(shù)據(jù)的情況與上述情況相同。用戶需要清楚的是,該功能只適用于數(shù)據(jù)的低速傳送。

            實(shí)際中,數(shù)據(jù)的寬度往往大于16位。這時(shí)就需要擴(kuò)展數(shù)據(jù)位的寬度,CY7C026的M/S管腳提供了數(shù)據(jù)擴(kuò)展的功能。例如,實(shí)際應(yīng)用中經(jīng)常需要32位的數(shù)據(jù)總線,可以將一片CY7C026的M/S管腳置低,另一片的M/S管腳置高,然后將兩塊芯片的管腳連接在一起即可。

            高速和傳輸系統(tǒng)框圖
            ● 信號量標(biāo)志器的使用

            信號量標(biāo)志器是該芯片所擁有的最具特色的功能,利用這種功能可以實(shí)現(xiàn)片內(nèi)資源的共享。CY7C026為實(shí)現(xiàn)該功能,提供了八個(gè)標(biāo)志鎖存器,每個(gè)鎖存器對應(yīng)一個(gè)信號量標(biāo)志器。使用信號量標(biāo)志器的過程是首先將SEM管腳置低,CE管腳置高,然后通過A0~A2三條地址線來選擇相應(yīng)的標(biāo)志鎖存器,數(shù)據(jù)的存取通過對I/O0操作來實(shí)現(xiàn)。數(shù)據(jù)存取過程中,R/W和OE的使用方式與存取普通存儲器的使用方式相同。芯片上電后,左、右端口的標(biāo)志器都處于空閑狀態(tài)。這時(shí)左右兩端口都可以通過對任意標(biāo)志鎖存器寫“0”來提出使用該信號量標(biāo)志器的請求。然后讀取該信號量標(biāo)志器的值來確定是否獲得使用權(quán),如果讀回的值為“0”則說明該端口獲得使用權(quán),為“1”則說明另一端口已獲得了該標(biāo)志器的使用權(quán)。獲得使用權(quán)的端口只有對其所使用的標(biāo)志鎖存器寫“1”后,才能放棄該信號量標(biāo)志器的使用權(quán)。如果另一端口在它放棄使用權(quán)以前提出過使用該信號量標(biāo)志器的請求,那么當(dāng)前端口放棄使用權(quán)后,另一端口立即獲得該信號量標(biāo)志器的使用權(quán)。相反,如果另一個(gè)端口沒有提出過請求,則該信號量標(biāo)志器處于空閑狀態(tài)。
          CY7C026在數(shù)據(jù)傳輸系統(tǒng)中的應(yīng)用

            所設(shè)計(jì)的系統(tǒng)是石油測井設(shè)備的一個(gè)子系統(tǒng),系統(tǒng)以TMS320C5402為主處理器,通過雙口RAM CY7C026作為數(shù)據(jù)共享的接口。其主要功能是接收工業(yè)計(jì)算機(jī)通過CPCI接口寫入雙口RAM的命令,DSP將該命令下發(fā)到井下儀器,相應(yīng)的井下儀器接收到命令后,采集井下數(shù)據(jù),然后將數(shù)據(jù)傳送到DSP中,經(jīng)過DSP處理后的數(shù)據(jù)寫入雙口RAM。最后,工業(yè)計(jì)算機(jī)通過CPCI接口將雙口RAM中的數(shù)據(jù)傳送到計(jì)算機(jī)中作顯示處理。系統(tǒng)框圖如圖2所示。

            結(jié)束語

            利用雙口RAM CY7C026的高速數(shù)據(jù)傳輸能力和DSP TMS320VC5402的高速性能能夠滿足高速數(shù)據(jù)傳輸?shù)囊螅瑫r(shí)能夠完成大量復(fù)雜的數(shù)據(jù)處理工作,從而兼顧了數(shù)據(jù)傳輸處理所需要的大吞吐量和高速性。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();