0 引 言
數字電位器是利用微電子技術制成的集成電路,它是依靠電阻陣列和多路模擬開關的組合完成阻值的變化。它沒有可動的滑臂,而通過按鈕輸入信號,或是通過數字輸入信號改變數字電位器的阻值。數字電位器由于可調精度高,更穩定,定位更準確,操作更方便,數據可長期保存和隨時刷新等優點,在某些場合具有模擬電位器不可比擬的優勢。
ADN2850是ADI公司的雙通道,1 024階非易失性數字電位器。溫度系數僅為35 ppm/℃。其功能模塊圖如圖1所示。它的輸出電阻W和B之間的阻值主要由中間寄存器RDAC中存儲的值決定。RDAC的值可以由外部指令直接賦予或者從內部非易失性存儲器E2MEM中載入。E2MEM中的值可以被修改或者被保護。當RDAC中的值被改變后,新的值也可以被存入E2MEM中。之后,新的值將在系統重新上電后自動加載到RDAC中。
ADN2850的指令系統包含16種模式,通過一個標準SPI串行接口傳送24位命令字決定,高位在先。24位命令字的前4位是命令,接下來4位是地址,后面16位是數據。這些指令可以用于RDAC的值的寫入,E2MEM值的改寫與復原,電阻值的回讀等。
2 SPI接口簡介
SPI是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用4根線,節約了芯片的管腳,同時為PCB的布局上節省空間。正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議。
SPI的通信以主從方式工作,這種模式通常有1個主設備和1個或多個從設備,一般需要4根線,事實上3根也可以(單向傳輸時)。其也是所有基于SPI的設備共有的,它們是SDI(數據輸入),SDO(數據輸出),SCLK(時鐘),CS(片選)。由SCLK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數據傳輸。數據輸出通過SDO線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成1位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為1次),就可以完成8位數據的傳輸。ADN2850的SPI接口的4根引腳線分別是SDI,SDO,CLK,CS。
這里利用FPGA對SPI接口進行配置。為了方便對輸入SPI的指令的隨時改變,而不需要程序的重復寫入,24位指令通過串口輸入到FPGA。串口通信由微機上的串口調試助手協助進行。由于少了重新寫入程序的時間,從而調試速度和效率明顯增高。
3 串口簡介
串口是計算機上一種通用的設備通信的協議,可以用于獲取遠程采集設備的數據。
串口按位(b)發送和接收字節。通信使用3根線完成:地線、發送、接收功能。由于串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用于握手,但不是必須的。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗位。波特率是衡量通信速度的參數,它表示每秒鐘傳送的bit的個數。數據位則是衡量通信中實際數據位的參數。停止位一般是為了平衡兩個系統的時鐘而在實際數據位結束后傳送的。奇偶校驗位是串口通信中檢錯的一種方式,沒有校驗位也可以。整個系統的連接框圖如圖2所示。
4 ADN2850的串口控制
用串口控制ADN2850的流程圖如圖3所示。一旦有指令從串口發送,就重新經FPGA后寫入ADN2850。
Verilog HDL程序分為3個模塊,分別為復位rstgen模塊,串口接收datagen模塊和SPI接口操作spi模塊。24位指令由微機輸入,經串口接收模塊后輸出1個24位數據和1個標志位,用于SPI接口模塊把數據傳入ADN2850中。
datagen模塊關鍵程序如下所示(相關變量聲明省略):
該程序已經通過前仿真,并在Altera公司的EP2C70 FPGA上通過了驗證,達到了預期的效果。
5 結 語
通過串口的應用,ADN2850的控制過程變的很方便。而串口本身連線簡單占用資源少,應用也比較廣泛,所以數字電位器ADN2850的串口控制不失為一種可行的方法。