《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 嵌入式單總線控制器設(shè)計(jì)
嵌入式單總線控制器設(shè)計(jì)
張 武
摘要: 以數(shù)字式溫度傳感器DS1820為例,,介紹了單總線器件的工作原理,,詳細(xì)分析了單總線器件的通信時(shí)序。微處理器與單總線器件通信時(shí)必須關(guān)閉中斷,,造成系統(tǒng)實(shí)時(shí)性差,。對此提出了采用VHDL語言設(shè)計(jì)嵌入式單總線控制器的方法。給出了基于VHDL的嵌入式單總線控制器的軟硬件設(shè)計(jì)及仿真波形,。該控制器的功能已在MAX+plusII平臺(tái)上仿真實(shí)現(xiàn),,能夠產(chǎn)生DS1820的通信時(shí)序。
Abstract:
Key words :

    摘 要:數(shù)字式溫度傳感器DS1820為例,,介紹了單總線器件的工作原理,,詳細(xì)分析了單總線器件的通信時(shí)序,。微處理器與單總線器件通信時(shí)必須關(guān)閉中斷,造成系統(tǒng)實(shí)時(shí)性差,。對此提出了采用VHDL語言設(shè)計(jì)嵌入式單總線控制器的方法,。給出了基于VHDL的嵌入式單總線控制器的軟硬件設(shè)計(jì)及仿真波形。該控制器的功能已在MAX+plusII平臺(tái)上仿真實(shí)現(xiàn),,能夠產(chǎn)生DS1820的通信時(shí)序,。

    關(guān)鍵詞:單總線;DS1820,;VHDL,;控制器

     DS1820是美國DALLAS公司生產(chǎn)的一種單總線(1-wire)數(shù)字溫度傳感器,采用1-wire總線通信協(xié)議,。具有獨(dú)特的單總線通信方式以及較高的測量精度,,從而獲得了廣泛應(yīng)用。參考文獻(xiàn)[1]詳細(xì)介紹了DS1820的基本原理和通信時(shí)序,,提出由單片機(jī)的I/O端口模擬單總線時(shí)序來控制DS1820的方法[1],。參考文獻(xiàn)[2]更進(jìn)一步地將DS1820測量溫度的分辨率由0.5 ℃提高到了0.1 ℃。將DS1820應(yīng)用于不同領(lǐng)域,,同樣取得了較好的效果[3-5],。上述文獻(xiàn)在使用DS1820時(shí)均采用微處理器作為總線主機(jī),利用微處理器的I/O端口,,用軟件模擬單總線時(shí)序,,實(shí)現(xiàn)與DS1820的通信。因?yàn)?-wire器件對總線時(shí)序要求嚴(yán)格,,因此,,為了保證與DS1820的可靠通信,微處理器需要采用關(guān)閉中斷的辦法,,以防止操作時(shí)序被中斷服務(wù)所破壞,。這種方法增加了軟件的設(shè)計(jì)難度,影響了系統(tǒng)的實(shí)時(shí)性[6],。
    VHDL作為電子設(shè)計(jì)主流硬件描述語言,,采用了層次化設(shè)計(jì)方式,具有電路行為描述能力強(qiáng),、靈活,、通用、運(yùn)算速度快的特點(diǎn),,能夠較容易地實(shí)現(xiàn)時(shí)序邏輯控制[7],。以數(shù)字溫度傳感器DS1820為例,,設(shè)計(jì)一個(gè)基于VHDL的單總線控制器,,實(shí)現(xiàn)與DS1820的通信。本文介紹的單總線控制器,有較強(qiáng)的可擴(kuò)展性,,可以連接多種單總線器件,,且微處理器可以不用被迫關(guān)閉中斷,滿足實(shí)時(shí)性嚴(yán)格要求的應(yīng)用,。
1 DS1820簡介
1.1 DS1820內(nèi)部結(jié)構(gòu)

    DS1820主要由4部分組成:64 bit光刻ROM,、溫度敏感器件、高速暫存存儲(chǔ)器和溫度報(bào)警觸發(fā)器TH,、TL,。64 bit光刻ROM保存DS1820的唯一64 bit的ROM編碼。高速暫存存儲(chǔ)器包含9個(gè)連續(xù)的字節(jié),,存放測得的溫度(補(bǔ)碼),、TH和TL的拷貝、計(jì)數(shù)器余值和CRC校驗(yàn)等數(shù)據(jù),,其結(jié)構(gòu)如圖1所示,。所有數(shù)據(jù)均以最低有效位在前的方式讀寫。

 


    DS1820可以采用寄生電源的方式供電,,在信號(hào)線為高電平的時(shí)間周期內(nèi),,把能量儲(chǔ)存在內(nèi)部電容器中,在信號(hào)線為低電平期間,,由存儲(chǔ)在電容器內(nèi)的電荷供電,。DS1820工作時(shí)信號(hào)線須接4.7 kΩ的上拉電阻,以保證信號(hào)線有足夠的驅(qū)動(dòng)能力,。
1.2 DS1820時(shí)序及工作方式
    DS1820時(shí)序如圖2所示,,時(shí)序波形的電平分為3種類型:主機(jī)作用的高低電平、DS1820輸出的高低電平和由上拉電阻拉起的高電平(后2種情況主機(jī)釋放信號(hào)線),。DS1820閑置時(shí)信號(hào)線應(yīng)保持高電平,。對DS1820的任何操作(讀、寫,、復(fù)位等)都是由主機(jī)對信號(hào)線由邏輯高電平拉至低電平開始,。

 


    由時(shí)序圖可知,單總線的通信協(xié)議由6種信號(hào)類別組成:復(fù)位脈沖,、存在脈沖,、寫0、寫1,、讀0,、讀1。所有這些信號(hào)除了存在脈沖之外,,均由總線主機(jī)產(chǎn)生,。
    主機(jī)通過單總線對DS1820的操作必須首先由ROM操作命令之一開始?,F(xiàn)以單總線只掛接一個(gè)DS1820,讀取溫度數(shù)據(jù)為例,,其工作過程如下:
    (1)主機(jī)產(chǎn)生復(fù)位脈沖,,DS1820返回響應(yīng)脈沖;
    (2)主機(jī)寫入Skip ROM(CCH,,跳過ROM)命令,,該命令為5種ROM操作命令之一;
    (3)主機(jī)寫入溫度轉(zhuǎn)換(44H)命令,;
    (4)主機(jī)再次產(chǎn)生復(fù)位脈沖,,DS1820返回響應(yīng)脈沖;
    (5)主機(jī)寫入Skip ROM(CCH,,跳過ROM)命令,;
    (6)主機(jī)寫入讀暫存存儲(chǔ)器命令(BEH);
    (7)讀暫存存儲(chǔ)器的溫度數(shù)據(jù)。
2  控制器設(shè)計(jì)
2.1 控制器結(jié)構(gòu)

    控制器結(jié)構(gòu)如圖3所示,,控制器由4部分組成,,即邏輯控制、單總線時(shí)序控制,、數(shù)據(jù)緩存和計(jì)數(shù)器,。邏輯控制部分用于實(shí)現(xiàn)與CPU的通信,D0~D7為8位雙向數(shù)據(jù)線,,EN為啟動(dòng)信號(hào),,下降沿有效。A1,、A0為地址信號(hào),,其組合決定控制器的工作狀態(tài)。A1A0=00,,控制器對DS1820執(zhí)行復(fù)位操作,;A1A0=01,控制器執(zhí)行寫入操作,;A1A0=10,,控制器執(zhí)行讀出操作??刂破饔赏獠刻峁?00 kHz的時(shí)鐘信號(hào)CLK,,產(chǎn)生5 μs的計(jì)數(shù)周期,控制器以5 μs為一個(gè)時(shí)間片形成DS1820的讀寫時(shí)序,。計(jì)數(shù)器的計(jì)數(shù)輸出值控制讀寫周期,。單總線時(shí)序控制部分的主要功能是產(chǎn)生單總線的讀寫時(shí)序,并向DS1820輸出控制命令,,讀出DS1820測得的數(shù)字溫度值及其他輸出信息,。

 

 

2.2 讀寫時(shí)序的實(shí)現(xiàn)
    DS1820要求引腳驅(qū)動(dòng)必須是漏極開路引腳,,控制器用三態(tài)門與DS1820連接,如圖4所示,。其中ctrl為三態(tài)門控制信號(hào),當(dāng)ctrl=0時(shí)輸出信號(hào),,ctrl=1時(shí)輸入信號(hào),。控制器采用5 μs作為基本計(jì)時(shí)單位,,可以保證DS1820時(shí)序關(guān)系有一定的余地,。

 

 

    寫字節(jié)部分VHDL代碼:
    PROCESS(cq)—輸出1 bit
    SIGNAL cout:STD_LOGIC_VECTOR(2 DOWNTO 0);
    VARIABLE di:STD_LOGIC,;
    BEGIN
    ctrl<=‘0’,;
    IF(cq>=“0000” AND cq<=“0010”)THEN
    di:=‘0’;——拉低輸出電位10 ms
    ELSIF(cq>“0010”AND cq<“1110”)THEN
         di:=rq,;    ——取發(fā)送移位寄存器的輸出位
          ELSIF(cq>=“1110”)THEN
         di:=‘1’,;cout<=cout + 1;
       END IF,;
    dqo<=di,;
    END PROCESS;
    PROCESS(cout)  —計(jì)數(shù)
    SIGNAL f:STD_LOGIC,;
    IF cout=“111” THEN
         f<=‘0’,;—8位輸出結(jié)束,停止計(jì)時(shí)
       ELSE  f<=‘1’,;
    END IF,;
    END PROCESS;
3 仿真波形
    控制器的VHDL程序在MAX+plusII平臺(tái)編譯通過,,并獲得了正確的復(fù)位,、讀、寫時(shí)序,。圖5為寫時(shí)序波形,,寫入77H字節(jié)。每次寫入新的bit前,,控制器將總線電平拉底10 μs,。

 


    基于VHDL的嵌入式DS1820控制器,具有轉(zhuǎn)換速度快,、精度高,、通用性好等優(yōu)點(diǎn)。同時(shí),,嵌入軟核的FPGA可以分擔(dān)許多微處理器的工作,,降低系統(tǒng)對CPU實(shí)時(shí)性的要求,,也降低了軟件開發(fā)的難度。本文雖然是針對DS1820設(shè)計(jì)的控制器,,但由于單總線通信協(xié)議的通用性,,也可以用于其他單總線器件。
參考文獻(xiàn)
[1] 王成江,,王安敏,,張玉華.單總線數(shù)字溫度傳感器原理及應(yīng)用[J].半導(dǎo)體技術(shù),2003,,28(2): 68-70.
[2] 薛智宏,,趙金,解麗紅.DS1820的測量原理及提高分辨率的方法[J].河北工業(yè)科技,,2002,,19(6): 4-7.
[3] 許勇.DS1820在網(wǎng)絡(luò)中心機(jī)房溫控中的應(yīng)用[J].電腦開發(fā)與應(yīng)用,2001,,14(9): 424-425.
[4] 陳善富,,王榮亮.DS1820與PIC12C5XX系列微控制器應(yīng)用于火災(zāi)感溫測控器[J].計(jì)算機(jī)與現(xiàn)代化,2000,,70(6): 111-114.
[5] 張令.溫室群的溫度自動(dòng)測試系統(tǒng)[J].邯鄲職業(yè)技術(shù)學(xué)院學(xué)報(bào),,2003,16(4): 65-68.
[6] 李農(nóng).FPGA與DS18B20型溫度傳感器通信的實(shí)現(xiàn)[J].國外電子元器件.2006,,2(2): 48-51.
[7] 袁偉亭,,周潤景.FPGA與DS18B20組成的測溫系統(tǒng)設(shè)計(jì)[J].內(nèi)蒙古大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,,37(4): 459-463.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。