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

          新聞中心

          EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 基于SoPC的數(shù)字示波器設(shè)計

          基于SoPC的數(shù)字示波器設(shè)計

          作者: 時間:2012-04-28 來源:網(wǎng)絡(luò) 收藏

          (5)將波形保存到SD卡。在停止?fàn)顟B(tài)若檢測到保存按鍵輸入,則將數(shù)據(jù)保存到SD卡。首先在FAT表中查找空簇,返回簇號,并在FAT表中標(biāo)記該簇已被占用,同時更新FAT表。然后在根目錄中查找已存在的DAT文件,若有DAT文件則返回最大的文件名,否則返回0。然后將緩沖區(qū)的數(shù)據(jù)寫入SD卡的對應(yīng)扇區(qū),扇區(qū)地址=根目錄地址+根目錄大小+(簇號-2)×每簇的扇區(qū)數(shù)。接著在根目錄中找到一個空閑項(xiàng),將文件名稱、大小、所在簇寫入該項(xiàng),即完成文件的保存。最后在LCD上輸出相應(yīng)的提示信息。流程如圖6所示。
          (6)波形顯示窗口的移動。在停止?fàn)顟B(tài)若檢測到左右移動輸入,則進(jìn)行波形顯示窗口的移動。當(dāng)左/右鍵按下時,若窗口沒超過FIFO邊界,則將窗口的首地址左/右移2個像素,然后更新顯示的窗口,同時按比例更新窗口指示器的位置。
          (7)波形文件格式。用于保存波形的文件使用8.3格式命名,名稱為OSC_xxxx.DAT,其中xxxx為文件的編號。由于每次采集的波形數(shù)據(jù)量大小相同,因此文件的大小也為固定值。FIFO深度為256 B,添加觸發(fā)電平、觸發(fā)沿、時間刻度等信息后,文件的體積為260 B。由于磁盤的底層讀寫操作是按照扇區(qū)進(jìn)行的,一個扇區(qū)512 B,所以將文件的大小定義為512 B。前256 B為波形數(shù)據(jù),第257 B為觸發(fā)沿信息,第258 B為觸發(fā)電平信,第259 B,260 B為分頻系數(shù),通過軟件轉(zhuǎn)換后可得時間刻度的大小。

          4 PC機(jī)軟件
          PC端軟件使用C語言。圖形部分使用SDL庫。PC機(jī)軟件用于打開保存的波形文件,還原波形信息,并可以進(jìn)行光標(biāo)測量。程序首先初始化SDL視頻,然后打開文件讀取260個字節(jié),關(guān)閉文件。載入背景圖案,初始化TTF字體。將波形繪制到背景圖案上并計算相關(guān)參數(shù)輸出到相應(yīng)位置,繪制兩個光標(biāo),等待用戶移動光標(biāo)。光標(biāo)移動后重新載入背景和波形并更新相關(guān)信息。軟件流程如圖7所示。

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

          f.JPG



          5 結(jié)語
          本文介紹了一種,實(shí)際測試結(jié)果表明,系統(tǒng)完成了的基本功能,各部分工作正常,各項(xiàng)指標(biāo)達(dá)到設(shè)計要求。在設(shè)計過程中采用了FPGA芯片、嵌入式NiosⅡ處理器以及Verilog HDL語言,簡化了電路的設(shè)計,提高了靈活性,縮短了設(shè)計周期。


          上一頁 1 2 3 4 下一頁

          評論


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