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