1-Wire主機(jī)DS1WM,稱作1WM,創(chuàng)建它是為了便于實(shí)現(xiàn)主機(jī)CPU通過(guò)1-Wire總線與器件進(jìn)行通信,而無(wú)須涉及位時(shí)序操作。本應(yīng)用指南闡述如何將1-Wire主機(jī)(1WM)嵌入到用戶ASIC設(shè)計(jì)之中。本文提到的DS89C200只是一個(gè)理論上的微控制器,另外,假定讀者已經(jīng)具備了1-Wire主機(jī)DS1WM和1-Wire協(xié)議的一般知識(shí)。如欲了解更詳細(xì)信息,請(qǐng)參閱 Book of Button Standards和 DS1WM數(shù)據(jù)資料。 結(jié)構(gòu) DS1WM排列象一個(gè)頂級(jí)的甲胄,連接四個(gè)子模塊,構(gòu)成一個(gè)完整的單元。在這個(gè)頂級(jí)的甲胄中并沒(méi)有HDL代碼。四個(gè)子模塊分別是:one_wire_interface、one_wire_master 、clk_prescaler和one_wire_io。對(duì)于那些不需要時(shí)鐘分頻器的應(yīng)用,如果提供外部1MHZ時(shí)鐘源作為clk_1us 時(shí)鐘信號(hào),就可以省去預(yù)分頻器模塊(如DS1WM數(shù)據(jù)資料中的τ注釋,輸入時(shí)鐘指定在0.8MHz至1.0MHz之間)。 單總線輸入輸出模塊為DATA總線和DQ提供雙向信號(hào)。在大多數(shù)應(yīng)用中,DQ信號(hào)是一個(gè)I/O引腳。如果是這種情況,DQ引腳驅(qū)動(dòng)器必須是一個(gè)漏極開路引腳,且具有合適的ESD保護(hù)(參見圖1)。另外,如果外圍器件所使用的上拉電壓高于1WM電源電壓,則引腳驅(qū)動(dòng)器還必須承受這樣的超限電壓,且不能使用鉗位二極管。Dallas建議采用輸出阻抗100Ω的驅(qū)動(dòng)器(Q1),以及一個(gè)4.7kΩ的外部DQ上拉電阻至芯片VCC。為保證芯片能夠正常工作,芯片VCC必須高于1-Wire從器件的高電平門限VIH。 圖1:DQ驅(qū)動(dòng)(one_wire_io) 程序庫(kù) Verilog源程序的編譯無(wú)需外部庫(kù)文件,而VHDL源程序則需要IEEE.std_logic_1164和work.std_arith庫(kù)文件。 連接 下表列出了1 - Wire主機(jī)正常工作需要連接的引線。 如果系統(tǒng)沒(méi)有地址選通信號(hào),/ADS可以接為低電平,使地址鎖存器直通。/EN信號(hào)應(yīng)由地址譯碼邏輯產(chǎn)生,在外部連接至1-Wire主機(jī)模塊。如果1WM是數(shù)據(jù)總線上唯一的器件,則/EN可以接為低電平。連到CLK上的系統(tǒng)時(shí)鐘頻率必須在3.2MHz到128MHz之間。關(guān)于詳細(xì)的連接操作,請(qǐng)參考 DS1WM11-Wire Master datasheet。 例程 下面是如何采用Verilog語(yǔ)言創(chuàng)建1-Wire主機(jī)例程的一個(gè)實(shí)例。 xcpu產(chǎn)生的所有信號(hào)都滿足1-Wire主機(jī)的時(shí)間要求。由于在數(shù)據(jù)總線上不存在其他可尋址邏輯,所以/EN_就接為低電平。DQ_OUT信號(hào)直接連接至一個(gè)I/O引腳。 合成 該設(shè)計(jì)的合成非常簡(jiǎn)單明了。建議采用自下而上的方法分別編譯各個(gè)子模塊,然后有選擇地在頂層進(jìn)行編譯。系統(tǒng)時(shí)鐘信號(hào)和1us時(shí)鐘信號(hào)必須考慮一定的時(shí)序要求,異步控制信號(hào)如/WR、/EN、/ADS和MR也需要滿足一定的時(shí)序要求,clk_1us可能所需要的額外要求是不要在時(shí)鐘信號(hào)上插入緩沖器。在大多數(shù)情況下需要采用某種時(shí)鐘分配方案,如樹型結(jié)構(gòu)時(shí)鐘。 資源包括:源代碼、實(shí)例合成腳本以及Synopsys設(shè)計(jì)編譯器一起使用的Makefile文件。為了調(diào)用這些資源,有必要?jiǎng)?chuàng)建一個(gè).synopsys_dc.setup文件,以定義目標(biāo)合成庫(kù)文件。除此之外,還需要修改包含環(huán)境文件(名為"environment"),以指定器件所采用的目標(biāo)庫(kù)文件,從而指定輸出驅(qū)動(dòng)能力和輸入負(fù)載。這些實(shí)例腳本是非常粗略的,而實(shí)際的腳本和約束文件將由工程師創(chuàng)建,以滿足特定設(shè)計(jì)的時(shí)序要求。有必要提醒一下:1-Wire主機(jī)單元中的時(shí)序在設(shè)計(jì)上無(wú)法保證完全同步,這是因?yàn)镈Q輸出同步于CLK信號(hào),而總線時(shí)序僅在CPU使用CLK時(shí)鐘來(lái)產(chǎn)生/RD和/ADS信號(hào)時(shí),才同步于CLK。 本例設(shè)計(jì)是完全獨(dú)立的,已經(jīng)被成功編譯為FPGA和ASIC的目標(biāo)文件。當(dāng)面向一個(gè)典型的ASIC目標(biāo)庫(kù)文件合成時(shí),本設(shè)計(jì)使用大約110個(gè)觸發(fā)器、3個(gè)鎖存器和1492個(gè)邏輯門。 |