개요: 이 애플리케이션 노트는 1-Wire? 마스터(1WM)를 사용자의 ASIC 설계에 통합하는 방법을 설명한다. 또한 Verilog로 1-Wire 마스터 인스턴스를 생성하는 방법을 간략히 소개한다. 이 문서에서 언급되는 DS89C200은 이론적 마이크로컨트롤러이다. 이 글을 읽는 독자는 DS1WM 1-Wire 마스터 및 1-Wire 프로토콜에 대한 일반적인 지식을 갖추고 있다고 가정한다.
개요
DS1WM 1-Wire 마스터는 비트 타이밍 문제를 걱정할 필요 없이 1-Wire 버스를 통해 디바이스와 용이한 호스트 CPU 통신을 제공하기 위해 개발되었다. 이 애플리케이션 노트는 1-Wire 마스터를 사용자의 ASIC 설계에 통합하는 방법을 설명한다. 이 문서에서 언급되는 DS89C200 이론적 마이크로컨트롤러이다. 이 글을 읽는 독자는 DS1WM 1-Wire 마스터 및 Dallas Semiconductor의 1-Wire 프로토콜을 알고 있다고 가정한다. 이에 대한 자세한 내용은 iButton 표준 서적 및 DS1WM 데이터 시트를 참조한다.
구조
1WM은 4개의 서브 모듈을 함께 연결하여 완전한 디바이스를 구성하는 상위 레벨 디바이스로 배열된다. 상위 레벨 디바이스에 HDL 코드는 없다. 4개의 서브 모듈 파일은 one_wire_interface, one_wire_master, clk_prescaler 및 one_wire_io로 구성된다. 클록 프리스케일러가 필요하지 않는 애플리케이션에서는 clk_1us 신호를 위해 외부 1MHz 클록 소스가 제공되는 경우 이 모듈을 제외할 수 있다 (다음 처럼 DS1WM 데이터 시트에서 볼 수 있듯이 입력 클록은 0.8MHz ~ 1.0MHz 사이에 지정된다).
one_wire_io 모듈은 DATA 및 DQ 신호에 양방향 신호를 제공한다. 대부분의 애플리케이션에서 DQ 신호는 I/O 핀이다. 이와 같은 경우, DQ의 패드 드라이버(pad driver)는 적절한 ESD 보호를 갖는 오픈 드레인 패드이어야 한다(그림 1). 또한, 주변 디바이스가 1WM 전원보다 높은 풀업 전압을 사용하는 경우, 여분의 전압을 견딜 수 있는 패드 드라이버를 선택해야 하며, 다이오드 클램프를 사용해서는 안 된다. Dallas Semiconductor는 VCC 칩에 100 의 출력 드라이버(Q1)와 4.7k 의 외부 DQ 풀업을 사용할 것을 권한다. VCC 칩은 절절한 통신을 위해 1-Wire 슬레이브의 VIH보다 커야 한다.

그림 1. DQ 패드 드라이버 (one_wire_io)
라이브러리
Verilog 소스를 컴파일하는데 외부 라이브러리는 필요하지 않다. VHDL 소스 버전은 IEEE.std_logic_1164 및 work.std_arith 라이브러리를 모두 필요로 한다.
연결
다음 표는 1-Wire 마스터의 적절한 동작을 위해 연결해야 할 필요가 있는 와이어 목록을 싣고 있다.
| Pin |
Operation |
| DQ |
Open Drain Bi-directional 1-Wire Bus Connection |
| DATA |
Bi-directional 8 Bit Data Bus |
| ADDRESS |
3 Bit Address Bus |
| ADS-bar |
Address Strobe |
| EN-bar |
Instance Enable |
| RD-bar |
Read Data Strobe |
| WR-bar |
Write Data Strobe |
| INTR |
Interrupt Detection |
| CLK |
System Clock |
| MR |
Mater Reset |
시스템에 사용할 수 있는 주소 스트로브가 없는 경우, ADS-bar를 로우 상태로 유지하면 주소 래치를 투명하게 할 수 있다. EN-bar 신호는 1WMaster 모듈 외부에 있는 주소 디코드 로직에 의해 발생되어야 한다. 1WM이 데이터 버스의 유일한 인스턴스인 경우, EN-bar를 로우 상태로 유지할 수 있다. CLK에 연결된 시스템 클록은 3.2MHz ~ 128MHz 사이에 있어야 한다. 모든 연결에 대한 자세한 동작에 대해서는 DS1WM 1-Wire 마스터 데이터 시트를 참조한다.
인스턴스
다음은 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),
.MR(master_reset) );
... rest of design ...
xcpu에 의해 발생되는 모든 신호는 1-Wire 마스터 타이밍 요건을 만족한다. 데이터 버스에 다른 주소지정 가능 로직이 없으므로 EN-bar 신호는 로우 상태를 유지한다. DQ_OUT 신호는 I/O 패드에 직접 연결된다.
합성
이 설계의 합성은 매우 간단하다. 개별적인 서브 모듈을 개별적으로 컴파일한 다음 옵션으로 상위 레벨을 컴파일하는 상향식 방법이 권장된다. sysclk 신호와 함께 clk_1us 신호에는 타이밍 제약을 둘 필요가 있다. WR-bar, RD-bar, EN-bar ADS-bar 및 MR과 같은 일부 비동기 제어 신호에는 추가적인 타이밍 제약이 필요할 수 있다. 또한 클록 신호 상에 버퍼가 삽입되도록 clk_1us에 추가적인 제약이 필요할 수 있다. 대부분의 경우, 클록 트리와 같은 클록 분배를 위한 전략을 가질 필요가 있다.
소스 코드에는 시놉시스(Synopsys) 설계 컴파일러와 함께 사용할 수 있는 합성 예제 스크립트 및 Makefile이 포함되어 있다. 이를 사용하려면 타겟 합성 라이브러리를 정의하는 .synopsys_dc.setup 파일을 생성해야 한다. 또한, 타겟 라이브러리에서 사용할 디바이스를 선택하여 출력 드라이브 강도 및 입력 부하를 지정하려면, 포함된 환경 파일 ("environment"라는 이름)을 수정해야 할 필요가 있다. 여기에 제공되는 예제 스크립트는 매우 일반적이다. 실제 스크립트와 제약 파일은 엔지니어가 구체적인 설계의 타이밍 요건에 맞추어 생성해야 한다. 한 가지 주의해야 할 사항은 1-Wire 마스터 블록의 타이밍은 설계 상 전체가 모두 동기화되지는 않는다는 것이다. DQ 출력은 CLK에 동기화되지만, CPU가 CLK를 사용하여 RD-bar, WR-bar 및 ADS-bar를 발생하는 경우 버스 읽기/쓰기 타이밍은 CLK에만 동기화된다. 이러한 신호에 대한 타이밍 관계에 대해서는 규격을 참조한다.
이 예제 설계는 모든 요소를 갖추고 있다. 이 설계는 FPGA 및 ASIC 타겟에 성공적으로 컴파일되었다. 전형적인 ASIC 타겟 라이브러리와 동기화될 경우, 설계는 약 110 플립 플롭, 3 래치 및 총 1492개의 게이트를 사용한다.
의견을 보내주세요! 위 내용이 도움이 되셨나요? 여러분의 의견을 기다립니다 — Maxim은 보내주신 정정이나 제안사항을 반영하고 있습니다.
이 페이지를 평가하고 의견을 보내주십시오.
자동 업데이트
관심있는 분야의 애플리케이션 노트가 나올 때 자동으로 업데이트 받고 싶으세요? 그렇다면 EE-Mail™을 신청하십시오.
| 추가 정보 | |
APP 119: Jul 13, 2005
|
|
|
|
다운로드, PDF 형식 (36kB)
AN119,
AN 119,
APP119,
Appnote119,
Appnote 119
|
|