91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 電子資訊 » 設計技術

如何嵌入1-Wire主機

發布時間:2006/7/11 0:00:00 訪問次數:400

   1-wire主機ds1wm,稱作1wm,創建它是為了便于實現主機cpu通過1-wire總線與器件進行通信,而無須涉及位時序操作。本應用指南闡述如何將1 wire主機(1wm)嵌入到用戶asic設計之中。本文提到的ds89c200只是一個理論上的微控制器,另外,假定讀者已經具備了1-wire主機ds1wm和1-wire協議的一般知識。如欲了解更詳細信息,請參閱[1]ibutton標準手冊(book of ibutton standard)和[2]ds1wm數據資料(ds1wm datasheet)。

  結構

  ds1wm排列象一個頂級的甲胄,連接四個子模塊,構成一個完整的單元。在這個頂級的甲胄中并沒有hdl代碼。四個子模塊分別是:one_wire_interface、one_wire_master 、clk_prescaler和one_wire_io。對于那些不需要時鐘分頻器的應用,如果提供外部1mhz時鐘源作為clk_1us 時鐘信號,就可以省去預分頻器模塊(如ds1wm數據資料中的τ注釋,輸入時鐘指定在0.8mhz至1.0mhz之間)。

  單總線輸入輸出模塊為data總線和dq提供雙向信號。在大多數應用中,dq信號是一個i/o引腳。如果是這種情況,dq引腳驅動器必須是一個漏極開路引腳,且具有合適的esd保護(參見圖1)。另外,如果外圍器件所使用的上拉電壓高于1wm電源電壓,則引腳驅動器還必須承受這樣的超限電壓,且不能使用鉗位二極管。dallas建議采用輸出阻抗100Ω的驅動器(q1),以及一個4.7kΩ的外部dq上拉電阻至芯片vcc。為保證芯片能夠正常工作,芯片vcc必須高于1-wire從器件的高電平門限vih。




圖1:dq驅動(one_wire_io)

  程序庫

  verilog源程序的編譯無需外部庫文件,而vhdl源程序則需要ieee.std_logic_1164和work.std_arith庫文件。

  連接

  下表列出了1 - wire主機正常工作需要連接的引線。



  如果系統沒有地址選通信號,/ads可以接為低電平,使地址鎖存器直通。/en信號應由地址譯碼邏輯產生,在外部連接至1-wire主機模塊。如果1wm是數據總線上唯一的器件,則/en可以接為低電平。連到clk上的系統時鐘頻率必須在3.2mhz到128mhz之間。關于詳細的連接操作,請參考 [2]ds1wm11-wire master datasheet。

  例程

  下面是如何采用verilog語言創建1-wire主機例程的一個實例。

  module ds89c200 (...top level list...);

  wire [7:0] db;
  wire [2:0] addr;
  wire sysclk, read-bar,
     write-bar, master_reset,
     interrupt, addr_strobe;
  wire dq_out;

  supply1 tie1;
  supply0 tie0;

  cpu xcpu(.clk(sysclk),
       .db(db),
       .extrd-bar(read-bar),
       .extwr-bar(write-bar),
       .extaddr(addr),
       .reset(master_reset),
       .extintr(interrupt),
       .addr_st(addr_strobe),
       ... other i/o signals ...);

  onewiremaster xonewiremaster(
       .address(addr),
       .ads-bar(addr_strobe),
       .en-bar(tie0),
       .rd-bar(read-bar),
       .wr-bar(write-bar),
       .data(db),
       .intr(interrupt),
       .clk(sysclk),
       .dq(dq_out),
      

   1-wire主機ds1wm,稱作1wm,創建它是為了便于實現主機cpu通過1-wire總線與器件進行通信,而無須涉及位時序操作。本應用指南闡述如何將1 wire主機(1wm)嵌入到用戶asic設計之中。本文提到的ds89c200只是一個理論上的微控制器,另外,假定讀者已經具備了1-wire主機ds1wm和1-wire協議的一般知識。如欲了解更詳細信息,請參閱[1]ibutton標準手冊(book of ibutton standard)和[2]ds1wm數據資料(ds1wm datasheet)。

  結構

  ds1wm排列象一個頂級的甲胄,連接四個子模塊,構成一個完整的單元。在這個頂級的甲胄中并沒有hdl代碼。四個子模塊分別是:one_wire_interface、one_wire_master 、clk_prescaler和one_wire_io。對于那些不需要時鐘分頻器的應用,如果提供外部1mhz時鐘源作為clk_1us 時鐘信號,就可以省去預分頻器模塊(如ds1wm數據資料中的τ注釋,輸入時鐘指定在0.8mhz至1.0mhz之間)。

  單總線輸入輸出模塊為data總線和dq提供雙向信號。在大多數應用中,dq信號是一個i/o引腳。如果是這種情況,dq引腳驅動器必須是一個漏極開路引腳,且具有合適的esd保護(參見圖1)。另外,如果外圍器件所使用的上拉電壓高于1wm電源電壓,則引腳驅動器還必須承受這樣的超限電壓,且不能使用鉗位二極管。dallas建議采用輸出阻抗100Ω的驅動器(q1),以及一個4.7kΩ的外部dq上拉電阻至芯片vcc。為保證芯片能夠正常工作,芯片vcc必須高于1-wire從器件的高電平門限vih。




圖1:dq驅動(one_wire_io)

  程序庫

  verilog源程序的編譯無需外部庫文件,而vhdl源程序則需要ieee.std_logic_1164和work.std_arith庫文件。

  連接

  下表列出了1 - wire主機正常工作需要連接的引線。



  如果系統沒有地址選通信號,/ads可以接為低電平,使地址鎖存器直通。/en信號應由地址譯碼邏輯產生,在外部連接至1-wire主機模塊。如果1wm是數據總線上唯一的器件,則/en可以接為低電平。連到clk上的系統時鐘頻率必須在3.2mhz到128mhz之間。關于詳細的連接操作,請參考 [2]ds1wm11-wire master datasheet。

  例程

  下面是如何采用verilog語言創建1-wire主機例程的一個實例。

  module ds89c200 (...top level list...);

  wire [7:0] db;
  wire [2:0] addr;
  wire sysclk, read-bar,
     write-bar, master_reset,
     interrupt, addr_strobe;
  wire dq_out;

  supply1 tie1;
  supply0 tie0;

  cpu xcpu(.clk(sysclk),
       .db(db),
       .extrd-bar(read-bar),
       .extwr-bar(write-bar),
       .extaddr(addr),
       .reset(master_reset),
       .extintr(interrupt),
       .addr_st(addr_strobe),
       ... other i/o signals ...);

  onewiremaster xonewiremaster(
       .address(addr),
       .ads-bar(addr_strobe),
       .en-bar(tie0),
       .rd-bar(read-bar),
       .wr-bar(write-bar),
       .data(db),
       .intr(interrupt),
       .clk(sysclk),
       .dq(dq_out),
      

熱門點擊

推薦電子資訊

EMC對策元件
應用: 汽車以太網系統的車載多媒體信息娛樂系統,如駕... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13751165337  13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
都江堰市| 河津市| 西丰县| 陈巴尔虎旗| 井冈山市| 金寨县| 扎兰屯市| 收藏| 廉江市| 武平县| 江门市| 南皮县| 沙田区| 偃师市| 华蓥市| 阿城市| 洱源县| 平潭县| 彭山县| 拜城县| 霍州市| 富锦市| 平顶山市| 宜宾县| 壤塘县| 报价| 故城县| 平泉县| 米脂县| 澄江县| 兖州市| 翁源县| 晋江市| 凤山市| 蓝田县| 蓬莱市| 林口县| 弥勒县| 都昌县| 大埔区| 宿迁市|