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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式單總線控制器設(shè)計(jì)

          嵌入式單總線控制器設(shè)計(jì)

          作者: 時(shí)間:2010-12-21 來源:網(wǎng)絡(luò) 收藏

            2

            2.1 結(jié)構(gòu)

            結(jié)構(gòu)如圖3所示,控制器由4部分組成,即邏輯控制、單時(shí)序控制、數(shù)據(jù)緩存和計(jì)數(shù)器。邏輯控制部分用于實(shí)現(xiàn)與CPU的通信,D0~D7為8位雙向數(shù)據(jù)線,EN為啟動(dòng)信號(hào),下降沿有效。A1、A0為地址信號(hào),其組合決定控制器的工作狀態(tài)。A1A0=00,控制器對(duì)DS1820執(zhí)行復(fù)位操作;A1A0=01,控制器執(zhí)行寫入操作;A1A0=10,控制器執(zhí)行讀出操作??刂破饔赏獠刻峁?00 kHz的時(shí)鐘信號(hào)CLK,產(chǎn)生5 μs的計(jì)數(shù)周期,控制器以5 μs為一個(gè)時(shí)間片形成DS1820的讀寫時(shí)序。計(jì)數(shù)器的計(jì)數(shù)輸出值控制讀寫周期。單時(shí)序控制部分的主要功能是產(chǎn)生單的讀寫時(shí)序,并向DS1820輸出控制命令,讀出DS1820測(cè)得的數(shù)字溫度值及其他輸出信息。

          控制器結(jié)構(gòu)

          2.2 讀寫時(shí)序的實(shí)現(xiàn)

            DS1820要求引腳驅(qū)動(dòng)必須是漏極開路引腳,控制器用三態(tài)門與DS1820連接,如圖4所示。其中ctrl為三態(tài)門控制信號(hào),當(dāng)ctrl=0時(shí)輸出信號(hào),ctrl=1時(shí)輸入信號(hào)??刂破鞑捎? μs作為基本計(jì)時(shí)單位,可以保證DS1820時(shí)序關(guān)系有一定的余地。

          DS1820要求引腳驅(qū)動(dòng)必須是漏極開路引腳

            寫字節(jié)部分VHDL代碼:

           程序

            3 仿真波形

            控制器的VHDL程序在MAX+plusII平臺(tái)編譯通過,并獲得了正確的復(fù)位、讀、寫時(shí)序。圖5為寫時(shí)序波形,寫入77H字節(jié)。每次寫入新的bit前,控制器將總線電平拉底10 μs。

          寫時(shí)序波形

            基于VHDL的DS1820控制器,具有轉(zhuǎn)換速度快、精度高、通用性好等優(yōu)點(diǎn)。同時(shí),嵌入軟核的FPGA可以分擔(dān)許多微處理器的工作,降低系統(tǒng)對(duì)CPU實(shí)時(shí)性的要求,也降低了軟件開發(fā)的難度。本文雖然是針對(duì)DS1820的控制器,但由于單總線通信協(xié)議的通用性,也可以用于其他單總線器件。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

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