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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA實現(xiàn)的SCI接口電路IP核的設(shè)計

          基于FPGA實現(xiàn)的SCI接口電路IP核的設(shè)計

          作者: 時間:2010-09-07 來源:網(wǎng)絡(luò) 收藏

            工作原理

            數(shù)據(jù)傳輸格式

            為簡化設(shè)計,SCI以固定的串行數(shù)據(jù)格式傳送數(shù)據(jù),采用NRZ幀格式對數(shù)據(jù)進行編碼,一個數(shù)據(jù)由1bit起始位、8bit數(shù)據(jù)位和一個停止bit共10bit組成。為確保采樣到的數(shù)據(jù)位可靠,選取每位數(shù)據(jù)包含8個SCICLK周期。

            波特率的產(chǎn)生      

            SCI內(nèi)部的串行時鐘(SCICLK)由系統(tǒng)時鐘SCLK與波特率寄存器共同決定。通過16bit波特率選擇寄存器,可以為內(nèi)部串行時鐘提供64k種不同的傳輸速率,其計算公式為:

            Baud=SCLK/[(BRR+1)*8]其中BRR為16bit波特率選擇寄存器的值。

            SCI異步通信

            如前所述,在異步通信模式下一幀數(shù)據(jù)包含一個起始bit、8個數(shù)據(jù)bit、一個停止bit。每個數(shù)據(jù)位占用8個SCICLK周期。

            接收數(shù)據(jù)時序

            接收器在收到有效的起始位后開始操作,有效的起始位由連續(xù)的0電平組成,長度為4個連續(xù)的內(nèi)部SCICLK周期。對于起始位后的各位,接收器通過對該位的中間進行3次采樣來決定位值,采用在第4、第5、第6個SCICLK周期,位值取決于多數(shù)采樣點的值。數(shù)據(jù)從SCIRXD進入RXSHF,移位進入RXBUF寄存器,并產(chǎn)生中斷請求,RXDRDY置1,表示已經(jīng)接收到新字符]。接收一幀數(shù)據(jù)的時序如圖3所示。

          接收一幀數(shù)據(jù)時序

          圖3 接收一幀數(shù)據(jù)時序

            發(fā)送數(shù)據(jù)時序

            發(fā)送器與接收器工作原理基本相同,在TXDRDY為低時,向發(fā)送數(shù)據(jù)緩沖寄存器寫入一個數(shù)據(jù)后啟動發(fā)送;然后數(shù)據(jù)進入TXSHF,同時TXDRDY為高,表示TXBUF可以寫入新值,并產(chǎn)生一個中斷請求。數(shù)據(jù)發(fā)送時序如圖4所示。

          發(fā)送一幀數(shù)據(jù)時序

          圖4 發(fā)送一幀數(shù)據(jù)時序

            VerilogHDL實現(xiàn)

            狀態(tài)機嵌套模型

            由于SCI接口牽涉到復(fù)雜的狀態(tài)機描述,需要采用有限狀態(tài)機的嵌套,形成樹狀的控制邏輯。這一點和所提倡的層次化、結(jié)構(gòu)化的自頂向下的設(shè)計方法相吻合[3]。圖5是一種簡單的狀態(tài)機嵌套模型。

          狀態(tài)機嵌套模型

          圖5 狀態(tài)機嵌套模型



          關(guān)鍵詞: FPGA IP核 SCI接口電路 VLSI

          評論


          相關(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); })();