DS1621是Dallas公司推出的一款溫度傳感器芯片。該芯片采用8腳貼片封裝,+5 V供電,基于I2C總線機制傳送溫度數據。可以并行連接,有3條地址線輸人口,因此可組成8個地址,多可將8個DS1621并聯使用。DS1621引腳如圖1所示。
I2C總線依靠SDA(串行數據線),SCL(時鐘控制線)這兩根連線實現完整的全雙工同步數據傳送。總線工作時,由SCL傳送時鐘脈沖,由SDA傳送數據。總線傳送的每幀數據均為1字節(8 bit),啟動I2C總線后,傳送的字節個數沒有限制,每傳送l字節后,對方回應一個應答位。發送數據時首先發送數據的MSB(位)。傳輸機制如下:
a) 起始:在SCL為高電平期間,SDA出現由高電平向低電平的變化,用于啟動I2C總線,準備開始傳送數據。
b) 停止:在SCL為高電平期間,SDA出現由低電平向高電平的變化,用于停止I2C總線上的數據傳送。
c) 應答信號:I2C總線的第9個脈沖對應應答位,若SDA上顯示低電平則為總線應答,若SDA上顯示高電平則為非應答。I2C線起始信號或應答信號之后的第1~8個時鐘脈沖對應1字節的8 bit數據傳送。在脈沖高電平期間,數據串行傳送;在脈沖低電平期間,數據準備,允許總線上數據電平變化。
2 溫度補償系統結構
本文所述的電子戰接收機為C波段信道化接收機,該信道化接收機采用超外差結構,由5個組件盒構成,信道數為N,每個組件盒信道數目為N/5。每個組件盒的溫度未必一致,所以與之對應的溫度傳感器的數目為5個,分別置于5個組件盒中。
如圖2所示,5個溫度傳感器芯片DS1621并聯,接收機的中央處理器為一款FPGA芯片,基于FPGA設計的總線控制器通過SDA和SCL順序讀取每個溫度傳感器的溫度編碼。根據溫度碼和接收機對信號的測量數據查找誤差表,然后用誤差修正測量數據,便可以得到較準確的測量結果。
3 I2C總線控制器的VHDL語言描述
I2C總線控制器的設計采用狀態機的設計方法,采用VHDL語言編程。這里僅提供I2C總線控制器向單個從沒備DS1621中寫1字節的程序代碼,從從設備讀取溫度編碼的代碼與之類似。
下面代碼完成的功能為I2C總線控制器向DS1621中寫單個字節:
將VHDL語言程序下載到FPGA中,用TDS5104示波器觀察到的FPGA與DS1621通信時序見圖3。