• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA控制的溫度檢測無線發射接收系統

    基于FPGA控制的溫度檢測無線發射接收系統

    作者: 時間:2010-07-06 來源:網絡 收藏

    溫度寄存器通常存放著一個11位的二進制數的補碼,用來實現0.125℃的精度。這個高精度在需要精確地測量溫度偏移或超出限制范圍的應用中非常有用。
    正常工作模式下,當器件上電時,OS工作在比較器模式,溫度閾值為80℃,滯后75℃,這時,LM75A就可用作一個具有以上預定義溫度設定點的獨立的溫度控制器。
    1.2 溫度傳感器控制原理
    如果將溫度傳感器設定為正常工作模式,那么首先要向配置寄存器寫入控制字告訴器件的工作模式。寫配置寄存器時序如圖2所示。

    本文引用地址:http://www.czjhyjcfj.com/article/191656.htm


    寫配置寄存器首先要選擇器件的地址,即A0-A2設置與硬件地址A0-A2一樣。然后是寫入配置寄存器地址指針,配置寄存器指針為”0000-000l”。等待器件應答一個SCL周期,再寫入工作模式控制字。如果設置在正常工作模式下,OS設置為比較輸出,那么配置數據字應寫入”00000000”。
    寫入配置寄存器控制字”00000000”后溫度傳感器工作在正常工作模式下,即每一段時間溫度傳感器將溫度轉換成數字信號存放在溫度寄存器里,所以只需要將溫度寄存器的數據讀出再加以計算即可以得到溫度數據。讀取溫度寄存器的時序如圖3所示。


    讀取溫度寄存器時首先是選中器件,地址信號應該與硬件設置地址一致。第二段是選擇溫度寄存器,溫度寄存器指針地址P1-P0寫入”0-0”,表示下次操作的默認寄存器為器件的溫度寄存器。重新起始后再次選中器件并讀取溫度寄存器的十六位的溫度數據,并將十六位的數據的有效數據前十一位提取出,即可得到有效的溫度數據。將溫度數據與預設的溫度比較后得出升溫或降溫信號,連接到模塊的KEYl、KEY2上發射到接收端。接收端接收到信號后再經過放大后便可驅動步進電機等。

    2 時序的實現方法
    與其它邏輯語言的運行有很大區別,最大的區別就是是硬件語言,而不是類似于c語言的程序。VHDL下載后生成的是邏輯硬件電路,不是控制器控制執行的邏輯語句。VHDL語言每個進程之間是并行運行的,但是進程內部的語句卻又是順序執行的。而且每個信號的傳輸都是在所在進程結束的時候進行的。這點很重要,比如你對一個信號前后兩次賦值,哪怕你中間有很多運算最終的結果還是最后一次賦值的結果,前一次賦值將是無效的,且會在報告中彈出一個警告。每個process的運行是靠敏感信號觸發的,敏感信號放在process后面的括號中。所以對于VHDL語言來說循環語句不是很必要的,因為每次敏感信號變化該進程將從程序的第一句開始重新運行一次。意味著一個進程本來就是一個循環,只有變化的部分的信號才能得到改變。這一點與普通邏輯語言有很大的區別。
    對于時序的實現有很多方法,可以用case語句實現,也可以用if語句實現。但是最有效和合乎邏輯的方法是用狀態機實現。以下是狀態機的模型。

    狀態機邏輯清晰,在每個對應的狀態下將每個信號應該進行的操作放在對應的狀態機程序中,嚴格控制各個信號的時序要求則可精確地實現高速控制。而且比單片機具有更高的速度。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 兰考县| 杭锦旗| 武穴市| 旺苍县| 沁源县| 波密县| 牙克石市| 普定县| 赤城县| 河北省| 南投县| 太康县| 留坝县| 中卫市| 房产| 启东市| 大丰市| 靖边县| 汶川县| 老河口市| 嘉荫县| 建瓯市| 武陟县| 来凤县| 平昌县| 吉木萨尔县| 阿合奇县| 兴化市| 云和县| 西丰县| 东宁县| 桦川县| 克拉玛依市| 马关县| 城步| 响水县| 贞丰县| 新绛县| 磴口县| 鄯善县| 台中市|