개요: 이 애플리케이션 노트는 1-Wire Master(1WM)를 사용자의 ASIC 설계에 통합하는 방법에 대해 설명하고, Verilog로 1-Wire Master 인스턴스를 생성하는 방법을 간략히 소개한다. 본문에서 언급되는 DS89C200은 이론적 마이크로컨트롤러이다. 이 글은 독자가 DS1WM 1-Wire Master 및 1-Wire 프로토콜에 대한 일반적인 지식을 갖추고 있다고 가정한다.
머리말
DS1WM 1-Wire Master는 비트 타이밍 문제를 걱정할 필요 없이 1-Wire 버스를 통해 소자와 호스트 CPU 통신을 돕기 위해 개발되었다. 이 애플리케이션 노트는 1-Wire Master를 사용자의 ASIC 설계에 통합하는 방법을 설명한다. 본문에서 언급되는 DS89C200은 이론적 마이크로컨트롤러이다. 이 글은 독자가 DS1WM 1-Wire Master 및 Maxim의 1-Wire 프로토콜에 대한 일반적인 지식을 갖추고 있다고 가정한다. 보다 자세한 내용은 애플리케이션 노트 937, "Book of iButton® Standards" 및 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의 패드 드라이버는 적절한 ESD 보호를 갖는 오픈 드레인 패드이어야 한다(그림 1). 또한 주변 기기가 1WM 전원보다 높은 풀 업 전압을 사용하는 경우, 여분의 전압을 견딜 수 있는 패드 드라이버를 선택해야 하며, 다이오드 클램프를 사용해서는 안 된다. Maxim은 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 Master의 적절한 동작을 위해 연결해야 할 와이어 목록이다.
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 데이터 시트를 참조한다.
인스턴스
다음은 Verilog로 1-Wire Master 인스턴스를 생성하는 방법을 보여주는 예제이다.
xcpu에 의해 발생되는 모든 신호는 1-Wire Master 타이밍 요건을 충족한다. 데이터 버스에 다른 주소지정 가능 로직이 없으므로 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 Master 블록의 타이밍은 설계상 전체가 모두 동기화되지는 않는다는 것이다. DQ 출력은 CLK에 동기화되지만, CPU가 CLK를 사용하여 RD-bar, WR-bar 및 ADS-bar를 발생하는 경우 버스 읽기/쓰기 타이밍은 CLK에만 동기화된다. 이러한 신호 타이밍 관련 내용은 규격을 참조한다.
이 예제 설계는 자체적으로 모든 요소를 갖추고 있다. 이 설계는 FPGA 및 ASIC 타깃에서 성공적으로 컴파일되었다. 일반적인 ASIC 타깃 라이브러리와 동기화될 경우, 설계는 1934 2입력 NAND 게이트 또는 237 슬라이스의 Xilinx® Spartan 3A FPGA를 사용한다.