基于FPGA控制的溫度檢測無(wú)線(xiàn)發(fā)射接收系統
溫度寄存器通常存放著(zhù)一個(gè)11位的二進(jìn)制數的補碼,用來(lái)實(shí)現0.125℃的精度。這個(gè)高精度在需要精確地測量溫度偏移或超出限制范圍的應用中非常有用。
正常工作模式下,當器件上電時(shí),OS工作在比較器模式,溫度閾值為80℃,滯后75℃,這時(shí),LM75A就可用作一個(gè)具有以上預定義溫度設定點(diǎn)的獨立的溫度控制器。
1.2 溫度傳感器控制原理
如果將溫度傳感器設定為正常工作模式,那么首先要向配置寄存器寫(xiě)入控制字告訴器件的工作模式。寫(xiě)配置寄存器時(shí)序如圖2所示。本文引用地址:http://dyxdggzs.com/article/191656.htm
寫(xiě)配置寄存器首先要選擇器件的地址,即A0-A2設置與硬件地址A0-A2一樣。然后是寫(xiě)入配置寄存器地址指針,配置寄存器指針為”0000-000l”。等待器件應答一個(gè)SCL周期,再寫(xiě)入工作模式控制字。如果設置在正常工作模式下,OS設置為比較輸出,那么配置數據字應寫(xiě)入”00000000”。
寫(xiě)入配置寄存器控制字”00000000”后溫度傳感器工作在正常工作模式下,即每一段時(shí)間溫度傳感器將溫度轉換成數字信號存放在溫度寄存器里,所以只需要將溫度寄存器的數據讀出再加以計算即可以得到溫度數據。讀取溫度寄存器的時(shí)序如圖3所示。
讀取溫度寄存器時(shí)首先是選中器件,地址信號應該與硬件設置地址一致。第二段是選擇溫度寄存器,溫度寄存器指針地址P1-P0寫(xiě)入”0-0”,表示下次操作的默認寄存器為器件的溫度寄存器。重新起始后再次選中器件并讀取溫度寄存器的十六位的溫度數據,并將十六位的數據的有效數據前十一位提取出,即可得到有效的溫度數據。將溫度數據與預設的溫度比較后得出升溫或降溫信號,連接到無(wú)線(xiàn)發(fā)射模塊的KEYl、KEY2上發(fā)射到接收端。接收端接收到信號后再經(jīng)過(guò)放大后便可驅動(dòng)步進(jìn)電機等。
2 時(shí)序的實(shí)現方法
FPGA與其它邏輯語(yǔ)言的運行有很大區別,最大的區別就是FPGA是硬件語(yǔ)言,而不是類(lèi)似于c語(yǔ)言的程序。VHDL下載后生成的是邏輯硬件電路,不是控制器控制執行的邏輯語(yǔ)句。VHDL語(yǔ)言每個(gè)進(jìn)程之間是并行運行的,但是進(jìn)程內部的語(yǔ)句卻又是順序執行的。而且每個(gè)信號的傳輸都是在所在進(jìn)程結束的時(shí)候進(jìn)行的。這點(diǎn)很重要,比如你對一個(gè)信號前后兩次賦值,哪怕你中間有很多運算最終的結果還是最后一次賦值的結果,前一次賦值將是無(wú)效的,且會(huì )在報告中彈出一個(gè)警告。每個(gè)process的運行是靠敏感信號觸發(fā)的,敏感信號放在process后面的括號中。所以對于VHDL語(yǔ)言來(lái)說(shuō)循環(huán)語(yǔ)句不是很必要的,因為每次敏感信號變化該進(jìn)程將從程序的第一句開(kāi)始重新運行一次。意味著(zhù)一個(gè)進(jìn)程本來(lái)就是一個(gè)循環(huán),只有變化的部分的信號才能得到改變。這一點(diǎn)與普通邏輯語(yǔ)言有很大的區別。
對于時(shí)序的實(shí)現有很多方法,可以用case語(yǔ)句實(shí)現,也可以用if語(yǔ)句實(shí)現。但是最有效和合乎邏輯的方法是用狀態(tài)機實(shí)現。以下是狀態(tài)機的模型。
狀態(tài)機邏輯清晰,在每個(gè)對應的狀態(tài)下將每個(gè)信號應該進(jìn)行的操作放在對應的狀態(tài)機程序中,嚴格控制各個(gè)信號的時(shí)序要求則可精確地實(shí)現高速控制。而且比單片機具有更高的速度。
評論