嵌入1-Wire主機(jī)
發(fā)布時(shí)間:2007/8/28 0:00:00 訪問(wèn)次數(shù):516
引言
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)參閱[1] Book of Button Standards和[2] 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ù)(參見(jiàn)圖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)參考 [2]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è)邏輯門。
引言
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)參閱[1] Book of Button Standards和[2] 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ù)(參見(jiàn)圖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)參考 [2]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è)邏輯門。
熱門點(diǎn)擊
- 一種基于CPLD的偽隨機(jī)序列發(fā)生器
- 嵌入式系統(tǒng)硬件抽象層的原理與實(shí)現(xiàn)
- 利用XPS工具快速生成Virtex FPGA
- 基于PIC18F系列單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)
- 嵌入式Email發(fā)送模塊
- 便攜系統(tǒng)中微處理器功耗的設(shè)計(jì)考慮
- 在Windows環(huán)境下調(diào)用動(dòng)態(tài)庫(kù)實(shí)現(xiàn)VXI嵌
- 使用LeonardoSpectrum綜合Xi
- ADSP-TSl01S嵌入式系統(tǒng)的混合編程
- 基于TS101的嵌入式實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)
推薦技術(shù)資料
- 羅盤誤差及補(bǔ)償
- 造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- AMOLED顯示驅(qū)動(dòng)芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計(jì)
- GB300 超級(jí)芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個(gè)最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究