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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于FPGA狀態(tài)機(jī)和片上總線的CompactPCI異步串口板設(shè)計(jì)方案

          基于FPGA狀態(tài)機(jī)和片上總線的CompactPCI異步串口板設(shè)計(jì)方案

          ——
          作者:韓懷宇 張建軍 袁鳳 時(shí)間:2014-06-26 來源:電子產(chǎn)品世界 收藏
          編者按:摘要:首先簡(jiǎn)要介紹了CompactPCI異步串口板的通常設(shè)計(jì)方法,并且提出了這些方法的不足之處,重點(diǎn)闡述了基于FPGA狀態(tài)機(jī)和片上總線的新設(shè)計(jì)方案,以及該方案的技術(shù)優(yōu)勢(shì),隨后公布了基于該方案的異步串口板達(dá)到的性能指標(biāo)。通過比較有關(guān)應(yīng)答延遲的試驗(yàn)數(shù)據(jù),提出了基于FPGA狀態(tài)機(jī)和基于DSP處理器的異步串口板卡存在明顯的處理速度差異問題,并基于兩種設(shè)計(jì)方案,解釋了形成差異的原因。最后提出了FPGA狀態(tài)機(jī)對(duì)外部總線存儲(chǔ)器或端口的訪問管理性能大幅超越了任何一款DSP處理器的觀點(diǎn),并對(duì)同行提出了類似研發(fā)項(xiàng)目的設(shè)計(jì)建議

            (1)雙口SDRAM

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

            采用IDT7132芯片作為數(shù)據(jù)緩沖區(qū),容量2k×8bit,讀寫周期均為20ns。為了避免上位機(jī)正在更新某數(shù)據(jù)區(qū),而與該數(shù)據(jù)區(qū)對(duì)應(yīng)的異步串口要求發(fā)送該數(shù)據(jù)區(qū)的情況,在設(shè)計(jì)中將雙口SDRAM的存儲(chǔ)空間分為兩部分,即上位機(jī)可寫訪問的一級(jí)緩沖區(qū)和WB總線處理邏輯可寫訪問的二級(jí)緩沖區(qū)。對(duì)應(yīng)36通路,一級(jí)和二級(jí)緩沖區(qū)均分成了72個(gè)子區(qū),每路異步串口對(duì)應(yīng)著一級(jí)緩沖區(qū)內(nèi)的一對(duì)發(fā)送子區(qū)和接收子區(qū),以及二級(jí)緩沖區(qū)內(nèi)的一對(duì)發(fā)送子區(qū)和接收子區(qū)。上位機(jī)可讀寫一級(jí)發(fā)送子區(qū),但只能讀一級(jí)接收子區(qū);WB總線處理邏輯只能讀一級(jí)發(fā)送子區(qū),可讀寫一級(jí)接收子區(qū)和二級(jí)所有子區(qū)。

            (2)芯片

            芯片為串口板核心器件,選用XC3S2000-4 FG456芯片,I/O口速度達(dá)到5ns。

            ①WB片內(nèi)總線
            即WISHBONE片內(nèi)總線,是一種應(yīng)用普遍的、具有靈活性的IP核互聯(lián)接口。

            ②異步收發(fā)器
            異步收發(fā)器為IP軟核,來源于opencores開源組織,支持WISHBONE接口,與通用異步收發(fā)器兼容,每個(gè)可實(shí)現(xiàn)一路全雙工異步串口通訊。

           ?、垭p口SDRAM總線接口邏輯
            片內(nèi)有兩個(gè)獨(dú)立的雙口SDRAM總線接口邏輯,分別實(shí)現(xiàn)了雙口SDRAM與WISHBONE總線和LOCAL總線的邏輯連接。

            ④LOCAL總線寄存器區(qū)
            為了方便上位機(jī)對(duì)各異步串口獨(dú)立靈活配置、全面監(jiān)控工作狀態(tài),必須設(shè)置可供上位機(jī)訪問的若干配置寄存器和狀態(tài)寄存器, 而且LOCAL總線寄存器區(qū)邏輯是上位機(jī)與片內(nèi)WB總線處理邏輯之間的通訊橋梁。

           ?、莸刂纷g碼邏輯
            片內(nèi)有兩個(gè)獨(dú)立的地址譯碼邏輯,分別根據(jù)LOCAL總線地址和WISHBONE總線地址,片選總線從邏輯。

            ⑥串口接收濾波邏輯
            片內(nèi)36個(gè)獨(dú)立的串口接收濾波邏輯,每個(gè)對(duì)應(yīng)一路異步收發(fā)器的接收端,可濾除正負(fù)跳變寬度小于1ms的毛刺,但會(huì)造成1ms的信號(hào)延遲。

           ?、遅B總線處理邏輯
            即WISHBONE總線狀態(tài)機(jī),實(shí)現(xiàn)了訪問WISHBONE總線、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)和各串口通訊協(xié)議的功能。主要任務(wù)是根據(jù)上位機(jī)設(shè)置的LOCAL總線配置寄存器區(qū),設(shè)置各異步收發(fā)器的工作模式,接收串口數(shù)據(jù),遵循通訊協(xié)議,發(fā)送串口數(shù)據(jù),完成一級(jí)、二級(jí)緩沖區(qū)數(shù)據(jù)更新或復(fù)制,并將各串口通道的工作狀態(tài)標(biāo)識(shí)到LOCAL總線狀態(tài)寄存器區(qū),供上位機(jī)查詢。

            2.2.2 處理流程

            如果上位機(jī)請(qǐng)求更新一級(jí)緩沖區(qū)的某子區(qū),上位機(jī)查詢“訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,若為真,則等待;否則置位“上位機(jī)訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,更新一級(jí)緩沖區(qū)的發(fā)送子區(qū),完畢后復(fù)位“上位機(jī)訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,產(chǎn)生“更新二級(jí)緩沖區(qū)的中斷請(qǐng)求”。WB總線處理邏輯響應(yīng)該中斷,查詢“上位機(jī)訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,若為真,則等待;否則置位“FPGA訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,讀訪問一級(jí)緩沖區(qū)的相應(yīng)發(fā)送子區(qū),并存入二級(jí)緩沖區(qū)的相應(yīng)發(fā)送子區(qū),完畢后復(fù)位“FPGA訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”。在WB總線處理邏輯更新二級(jí)緩沖區(qū)期間,暫不響應(yīng)異步串口交易中斷。

            如果某異步收發(fā)器存在接收發(fā)送任務(wù),即串口交易中斷請(qǐng)求存在,WB總線處理邏輯讀訪問該異步收發(fā)器的中斷狀態(tài)寄存器,如果是發(fā)送中斷,繼續(xù)發(fā)送下一字節(jié),并退出,循環(huán)直至發(fā)送幀結(jié)束;如果是接收中斷,讀訪問接收數(shù)據(jù)寄存器,并將數(shù)據(jù)存入二級(jí)緩沖區(qū)對(duì)應(yīng)接收子區(qū)。每接收一個(gè)字節(jié)后,延遲半位,未出現(xiàn)新的接收數(shù)據(jù)中斷,則認(rèn)為已收到完整數(shù)據(jù)幀。隨后設(shè)置“二級(jí)緩沖區(qū)接收子區(qū)覆蓋一級(jí)緩沖區(qū)接收子區(qū)”中斷請(qǐng)求。如果上位機(jī)未訪問一級(jí)緩沖區(qū),則WB總線處理邏輯響應(yīng)上述中斷,執(zhí)行二級(jí)至一級(jí)的某接收子區(qū)“數(shù)據(jù)復(fù)制”,任務(wù)結(jié)束后,清相應(yīng)中斷;如果上位機(jī)正在訪問一級(jí)緩沖區(qū),則等待時(shí)機(jī)再?gòu)?fù)制數(shù)據(jù)。

          fpga相關(guān)文章:fpga是什么




          評(píng)論


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