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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA和SC16C554實(shí)現(xiàn)多串口通信的方法

          基于FPGA和SC16C554實(shí)現(xiàn)多串口通信的方法

          作者: 時(shí)間:2009-09-01 來源:網(wǎng)絡(luò) 收藏

            3.2 讀串口數(shù)據(jù)狀態(tài)機(jī)的設(shè)計(jì)

            一個(gè)完整的讀取串口數(shù)據(jù)操作需要進(jìn)行三次讀操作:讀中斷狀態(tài)寄存器(ISR)、讀線狀態(tài)寄存器(LSR)、讀接收保存寄存器(RHR)。由于這三次讀操作具有嚴(yán)格的邏輯順序和時(shí)序關(guān)系,非常適合采用狀態(tài)機(jī)來描述;所以本設(shè)計(jì)采用有限狀態(tài)機(jī)來實(shí)現(xiàn)讀取串口數(shù)據(jù)。圖2為讀通道A數(shù)據(jù)的狀態(tài)轉(zhuǎn)移圖。

            State0:空閑狀態(tài),當(dāng)沒有數(shù)據(jù)時(shí)狀態(tài)機(jī)一直停留在空閑狀態(tài);

            State 1:賦IsR寄存器地址給UART_A,置通道標(biāo)志寄存器CS[2:O]=001(表示A通道);

            State2:讀ISR,判斷中斷類型(04為接受數(shù)據(jù)準(zhǔn)備好中斷),賦LSR寄存器地址給UART、A;

            State3:讀LSR,判斷是否有數(shù)據(jù)(LSR[0]=1表示有數(shù)據(jù)在RHR內(nèi)),賦RHR寄存器地址給UART A;

            State4:讀RHR,讀取串口數(shù)據(jù)。

            多通道工作時(shí),可以通過增加狀態(tài)機(jī)狀態(tài)來實(shí)現(xiàn)。完成一個(gè)通道的讀數(shù)操作需要四個(gè)狀態(tài),當(dāng)四個(gè)通道同時(shí)工作時(shí),狀態(tài)機(jī)的狀態(tài)需要增加到17個(gè)。其中Stare5~State8完成對(duì)通道B的操作;其中State9~State12完成對(duì)通道C的操作;其中State13~State16完成對(duì)通道D的操作。

            3.3 讀時(shí)序設(shè)計(jì)

            的通用讀時(shí)序圖如下:

            其中t6s=0ns t6h=0ns t7h=0ns t7d=10ns t7w=26nst9d=20ns t12h=15ns都為最小值,t12d max="26ns由圖3可以看出":對(duì)串口進(jìn)行一次讀操作所需的時(shí)間T=t6s+t7d+t7w+t9d所以T最小為56ns。本設(shè)計(jì)采用60MHz時(shí)鐘分頻出10MHz時(shí)鐘,在一個(gè)1OMHz時(shí)鐘周期(100ns)內(nèi)完成一次讀操作。用6 0 MH z時(shí)鐘同步一個(gè)計(jì)數(shù)器cscount[2:0],在第一個(gè)6 0MH z時(shí)鐘的上升沿(cs_count=3’b000時(shí))置CS為低,并賦對(duì)應(yīng)的地址給UART A;在第二個(gè)60MHz時(shí)鐘的上升沿(cs_cout=3’b001時(shí))置UART IOR為低;在第四個(gè)60MHz時(shí)鐘的上升沿(cs_count=3’b011時(shí))置CS、UART IOR為高。這樣UART IOR有效時(shí)間為兩個(gè)時(shí)鐘周期(33ns),且比CS延時(shí)一個(gè)時(shí)鐘周期(17ns),完全滿足圖3讀時(shí)序的要求。

            由圖2可知,由空閑狀態(tài)State0到完成一次串口數(shù)據(jù)的讀取,共需要500ns的時(shí)間。這樣多通道工作時(shí)連續(xù)完成四個(gè)通道的讀數(shù)操作共需2μs,遠(yuǎn)小于單個(gè)通道連續(xù)兩個(gè)中斷產(chǎn)生的時(shí)間間隔65μs;這樣有效解決了多通道工作時(shí),當(dāng)讀取數(shù)據(jù)的過程中其它通道中斷丟失的問題。如:當(dāng)讀通道A數(shù)據(jù)的過程中,通道B產(chǎn)生中斷請(qǐng)求;則狀態(tài)機(jī)完成通道A數(shù)據(jù)讀取返回到空閑狀態(tài)State0,檢測(cè)到INTB為高,狀態(tài)機(jī)進(jìn)入下一個(gè)狀態(tài)(State5)進(jìn)行通道B的數(shù)據(jù)接收。

            4 測(cè)試結(jié)果及分析

            我們分別對(duì)兩種方案進(jìn)行了測(cè)試,結(jié)果如下:表2為完全基于DSP接收和發(fā)送數(shù)據(jù)的通信性能測(cè)試;表3為基于接收串口數(shù)據(jù)的通信性能測(cè)試。

            波特率發(fā)送周期數(shù)據(jù)長(zhǎng)度測(cè)試結(jié)果

            比較兩種方案的測(cè)試結(jié)果可以得出以下結(jié)論:

            1單通道工作時(shí):兩種方案的通信性能是一樣的。

            2多通道同時(shí)工作時(shí):由表2測(cè)試結(jié)果可以看出,每次發(fā)送的數(shù)據(jù)量過大、或發(fā)送周期較小時(shí),由于DSP對(duì)串口芯片中斷請(qǐng)求的處理速度問題就會(huì)造成數(shù)據(jù)丟失。由表3測(cè)試結(jié)果可以看出,四通道工作時(shí),發(fā)送數(shù)據(jù)長(zhǎng)度為64字節(jié),通道發(fā)送周期最小可達(dá)10ms;如果發(fā)送數(shù)據(jù)長(zhǎng)度減小,通道發(fā)送周期還可以更小。該設(shè)計(jì)性能遠(yuǎn)遠(yuǎn)好于方案改進(jìn)前完全基于DSP接收和發(fā)送數(shù)據(jù)的性能;能滿足系統(tǒng)實(shí)際工作的需要。

            5 結(jié)束語

            基于接收數(shù)據(jù)的設(shè)計(jì)有兩個(gè)突出的優(yōu)點(diǎn):1、極大提高了對(duì)串口中斷的響應(yīng)速度,避免了多通道工作、完全基于DSP接收和發(fā)送數(shù)據(jù)時(shí)數(shù)據(jù)大量丟失的情況;2、完全可編程設(shè)置DSP中斷產(chǎn)生條件,解決了原來串口芯片只有1、4、8、14字節(jié)四個(gè)觸發(fā)深度的限制,可編程設(shè)置存儲(chǔ)空間范圍內(nèi)的任意字節(jié)的觸發(fā)深度,大大減少了DSP的中斷數(shù)量,提高了DSP的工作效率。另外程序具有較強(qiáng)的可移植性,當(dāng)設(shè)計(jì)需要修改時(shí),只需修改少量代碼,有效降低了設(shè)計(jì)周期。

          合成孔徑雷達(dá)相關(guān)文章:合成孔徑雷達(dá)原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA SC16C554 多串口通信

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