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