개요: PCB를 식별하는 두 가지 방법이 있다. '미니멀리스트(minimalist)' 기법은 ROM 기술을 이용한 것이고, '네임플레이트(nameplate)' 기법은 사용자 프로그래밍이 가능한 NV 메모리를 이용해 PnP 관련 정보를 저장하는 것이다. PnP 기능을 구현하기 위해 가장 널리 이용되는 방법이 필요한 정보를 저장하고 전원이 꺼지더라도 이를 소실하지 않는 메모리 칩을 이용하는 것이다. PCB 식별을 위한 1-Wire 칩은 ROM, EEPROM 및 EPROM(OTP: One-Time Programmable)에서 이용 가능하다.
머리말
PC에 모뎀이나 네트워크 카드를 추가하려고 할 때 예기치 않은 문제가 발생하거나 예상보다 더 많은 시간이 소요될 수 있다. 대량 생산을 통한 비용 절감을 위해서 애드 인 보드가 다양한 업체의 다양한 마더보드와 논리적으로 호환이 가능하도록 설계된다. 이러한 유연성 때문에 보드를 기능을 수행하기 전에 해당 동작 환경으로 구성해야 한다. 이러한 구성을 위해서는 두 가지 정보가 필요하다. 보드를 탑재하려는 시스템에 대한 정보와 보드 자체에 대한 정보가 그것이다. 적절한 설정을 결정하고 보드의 점퍼 또는 플립 스위치를 설정하면 하드웨어 설치의 까다로운 부분이 완료된다.
이러한 업그레이드 또는 변경을 숙련된 직원이 정기적으로 실시한다면 많은 시간이 소요되지 않고 문제가 발생할 위험성도 낮아진다. 하지만 계속해서 익숙치 않은 제품이 등장하며 관련 설명서(불완전한 것일 수 있음)를 숙지하기 위해 새로운 학습을 시작하고 시행착오를 거쳐야 하며 이 과정에서 제품이나 시스템에 손상을 가할 수 있다. PC와 관련해서 이러한 상황을 피할 수 있도록 1994 년에 “플러그 앤 플레이” (PnP: Plug-and-Play) 개념이 등장했다. 각각의 PnP 소자가 동작하기 위해서는 다음과 같은 기능이 필요하다.
이러한 요구사항은 원래는 PC 제품에 대해 정의된 것이지만 하나 이상의 소자(또는 회로 보드)로 구성된 모든 전자 시스템들이 플러그 앤 플레이 기능을 활용하고 있다.
PnP 기능을 구현하기 위해 가장 널리 이용되는 방법이 필요한 정보를 저장하고 전원이 꺼지더라도 이를 소실하지 않는 메모리 칩을 이용하는 것이다. 경우에 따라서 이미 보드에 적절한 메모리가 포함되어 있을 수 있다(마이크로컨트롤러에 또는 바이트 와이드 메모리 칩 또는 직렬 EEPROM 형태로). 적절한 메모리가 없거나 모든 메모리가 기능이 할당되어 있을 때는 추가적인 메모리 칩이 필요하다. 직렬 메모리가 물리적 크기가 작고 최소의 추가 I/O만을 필요로 하므로 바이트 와이드 메모리에 비해 애용된다. 모든 직렬 메모리 중에서 1-Wire 인터페이스를 이용한 소자가 단일 데이터 라인 및 접지 레퍼런스만을 필요로 하므로 인터페이싱이 가장 간편하다. 대다수 1-Wire 소자가 VCC 핀을 이용하지 않고 데이터 라인에서 직접적으로 동작을 위한 에너지를 인출한다. 모든 1-Wire 소자는 고유의 등록번호를 지정하며, 이를 이용해 추적이 가능하고 다중의 1-Wire 소자 (메모리뿐만 아니라)가 병렬로 연결되어 1-Wire 넷을 구성하고 있을 때 주소로도 이용할 수 있다. 이 기능은 다른 직렬 소자에서는 이용할 수 없다. 등록번호의 일부분을 맞춤화해서 1-Wire 소자를 주문형 칩으로 전환함으로써 보드를 승인하고 복제를 방지할 수 있다.
PnP 기능에 이용되지 않는 여유 메모리 바이트를 이용해서 회로 보드의 특정 자원을 동작시키거나 정지시킴으로써 업그레이드를 위해 하드웨어를 변경할 필요 없이 라이센스 관리가 가능하다. 저장 용량 및 칩 기술에 따라 메모리가 품질 관리, 보증 정보, 수리 기록 등의 제조 데이터를 저장할 수 있다. 이들 정보를 신속하게 이용해서 수리 시간을 단축할 수 있다.
칩 기술
PCB 식별을 위한 1-Wire 칩은 전원에 관계 없이 저장된 데이터를 유지해야 한다. 그러므로 ROM, EEPROM, EPROM 같이 비휘발성 (NV) 기술을 이용한 소자로 선택폭이 제한된다(표 1). 플라스틱 패키지는 윈도우가 없고 칩 스케일 패키지는 동작 면이 회로 보드로 향하는 탑재 기법 때문에 EPROM 칩이 OTP (One-Time-Programmable) 메모리가 된다.
표 1. 회로 보드 식별을 위한 1-Wire 소자
Part #
Technology
Memory
Appl. Type
Voltage
Packages
Extras
DS2401
ROM
64 bits
Minimalist
2.8V to 5.5V
Plastic, CSP
-----
DS2430A*
EEPROM
32 + 8 bytes
Nameplate
2.8V to 5.5V
Plastic, CSP
8 bytes OTP
DS2432
EEPROM
128 + 16 bytes
Nameplate
2.8V to 5.5V
Plastic, CSP
Challenge & response
DS2433
EEPROM
512 bytes
Nameplate
2.8V to 5.5V
Plastic, CSP
-----
DS2406
OTP EPROM
128 bytes
Nameplate
2.8V to 5.5V, 12V write
Plastic, CSP
2 controlled I/O pins
DS2502
OTP EPROM
128 bytes
Nameplate
2.8V to 5.5V, 12V write
Plastic, CSP (excl. UNW)
UniqueWare™ version
DS2505
OTP EPROM
2048 bytes
Nameplate
2.8V to 5.5V, 12V write
Plastic
UniqueWare version
DS2506*
OTP EPROM
8192 bytes
Nameplate
2.8V to 5.5V, 12V write
Plastic
UniqueWare version
*DS2506 및 DS2430A의 경우 새로운 설계에서는 더 이상 권장되지 않는다.
회로 보드 식별 개요
표 1의 APPL. TYPE 칸에서 볼 수 있듯이 두 가지 방법으로 PCB를 식별할 수 있다. 미니멀리스트 (minimalist) 기법은 ROM 기술을 이용한 것이고, 네임플레이트 (nameplate) 기법은 사용자 프로그래밍 가능 NV 메모리를 이용해 PnP 관련 정보를 저장하는 것이다. 표 2는 두 기법의 식별 방법을 보여준다. 번호가 1로 시작하는 것은 미니멀리스트 기법을 이용한 것이다. 네임플레이트 기법을 위해서는 EEPROM 기술 (번호 2로 시작) 및 OTP EPROM(번호 3으로 시작)이 이용된다. 문자 A는 범용 대량생산 제품을 의미한다. 문자 B는 주문형 ROM을 이용한 것이다. ROM 맞춤화에 대해서는 미니멀리스트 기법에서 설명한다. 문자 C는 보호 메모리 (2C) 또는 사전 프로그래밍 제품 (3C) 등의 특수 기능을 의미한다. 이에 관해서는 네임플레이트 기법에서 설명한다.
주문형 소자를 이용하면 제한적인 공급으로 복제를 방지할 수 있다. 복제 업체들이 주문형 제품을 구입할 수 없기 때문이다. 범용 소자를 보호하기 위해서는 (DS2432 제외) 암호화를 이용해서 데이터를 조작해야 한다.
일반적인 암호화 기법(즉 CBC)은 키 ("비밀") 및 초기화 벡터를 이용한 것이다. 초기화 벡터에 메모리 칩 고유의 ROM 등록번호를 내장함으로써 동일 소스 데이터가 각 소자마다 다르게 보이도록 한다. 그러므로 데이터를 한 칩에서 다른 칩으로 복사했을 때 복사된 데이터가 애플리케이션에서 실행되지 않는다. 암호화 알고리즘 및 소프트웨어에 관해서는 NIST (National Institute of Standards and Technology) 웹사이트를 참조한다.
회로 보드 식별을 위한 가장 저렴한 기법(1A)은 범용 (비주문형) DS2401 실리콘 시리얼 넘버를 이용한 것으로 이 기법은 중앙 데이터베이스를 이용해 1-Wire 칩의 ROM 등록번호를 개별 보드와 연관시킨다. 이 기법은 사용자 프로그래밍 가능 메모리를 포함하지 않으므로 PnP를 지원하지 않는다.
이보다 다소 비싼 기법(1B)은 주문형 ROM 등록번호를 이용한 소자를 이용하는 것이다. 이는 고객(보드 업체)이 64비트 ROM 내용 중에서 8비트, 12비트 또는 16비트를 지정할 수 있도록 한다(그림 1). ROM 비트의 일부를 제어할 수 있도록 함으로써 제한적으로 PnP 지원이 가능하다. 이 기법에서도 ROM 내용을 개별 보드에 연관시키기 위해 중앙 데이터베이스가 필요하다. PnP가 가능하기 위해서는 보드의 회로가 1-Wire 소자를 읽고 호스트 CPU로 정보를 전송할 수 있어야 한다.
주문형 칩은 원 고객 및 공인 대리점에만 판매되므로 클론 제조사에는 제공되지 않는 규제품이다. 이를 위해서는 펌웨어가 적법한 주문형 칩 및 일반 칩인지 다른 고객을 위해 만들어진 주문형 칩인지 구별할 수 있어야 한다.
범용 소자(1A)는 주문이 간편하며 소량일 경우 대부분 재고에서 곧바로 공급된다. 주문형 소자(1B)는 주문에 따라 생산되며 리드타임이 13주이다. 등록 양식 사본은 Maxim 또는 대리점으로 문의한다.
미니멀리스트 기법에 가장 많이 이용되는 칩이 DS2401이다.
미니멀리스트 기법—사용자 메모리 이용 안함—비교표
1A
범용 소자
방법
등록번호로 데이터베이스를 검색한다.
전제조건
데이터베이스는 등록번호를 세부 제품 정보에 액세스하는 키로 사용한다.
실행
데이터베이스에 각 보드의 등록번호를 입력하고 세부 제품 정보를 조회한다.
복제 방지 기능
없음
장점
최저 칩 비용
단점
데이터베이스 자동화가 보드 배치의 등록번호를 읽은 다음 데이터베이스에 리스트로 전송하는 테스터로 제한되어 있어 제품 정보 조합이 수동으로 생성된다.
보드의 세부 정보를 읽으려면 (원격) 데이터베이스에 액세스해야 한다.
1B
주문형 소자
방법
등록번호로 데이터베이스를 검색한다.
등록번호의 사용자 지정 구역(서브필드)에 서로 다른 코드로 보드 유형이나 버전을 구별한다.
전제조건
데이터베이스는 등록번호를 세부 제품 정보에 액세스하는 키로 사용한다.
실행
데이터베이스에 각 보드의 등록번호를 입력하고 세부 제품 정보를 조회한다.
제품 정보 부분은 사용자 지정 비트(서브필드)의 내용에 따라 자동으로 식별 가능하다.
복제 방지 기능
있음
장점
네임플레이트 기법의 메모리 칩보다 싸다.
적절한 칩이 보드에 실장되어 있어 인적 오류 가능성이 적다.
다른 제품이나 제품 버전이 다른 테스트 프로그램을 요구할 경우 테스트 프로그램 이름을 사용하여 올바른 칩이 보드에 실장되었는지 확인할 수 있다.
단점
데이터베이스 자동화가 보드 배치의 등록번호를 읽은 다음 데이터베이스에 리스트로 전송하는 테스터로 제한되어 있어 제품 정보 조합이 수동으로 생성된다.
보드의 세부 정보를 읽으려면 (원격) 데이터베이스에 액세스해야 한다.
서로 다른 주문형 칩의 재고 및 이용을 관리해야 한다.
그림 1. 범용 및 주문형 ROM 등록번호
옵션 A: 하나의 서브필드 값마다 268백만 개 시리얼 넘버
옵션 B: 하나의 서브필드 값마다 167십만 개 시리얼 넘버
옵션 C: 하나의 서브필드 값마다 104만 개 시리얼 넘버
예시
범용 DS2401
샘플 등록번호의 Hex 표기: A3 00 00 00 00 D4 92 01
주문형 DS2401, 고객 ID 123 hex, 옵션 A, 서브필드 내용 AB hex
샘플 등록번호의 Hex 표기: E5 12 3A B0 00 56 1D 81
주문형 제품군 코드의 최상위 비트는 언제나 1이다.
주문형 ROM을 판독함으로써 어느 옵션을 선택했는지 알 수 있다. 하지만 특정 고객 식별 코드 및 소자가 모든 사용자 정의 서브필드 내용이 동일할 수 있다.
네임플레이트 기법
네임플레이트 기법을 위한 모든 소자는 사용자 프로그래밍 가능 NV 메모리를 이용해서 PnP 관련 정보를 저장한다. 네임플레이트 기법을 위해서는 PnP가 동작하기 위해 필요한 데이터 항목을 열거하고, 각각의 데이터 항목을 식별하기 위한 방법을 지정하고, 각 데이터 항목(숫자, 논리, 텍스트)의 값을 표현하기 위한 형식을 지정해야 한다. 이 형식은 애플리케이션에 따라 맞춤화해서 공간을 절약하거나 XML (extendible markup language) 같이 산업표준이지만 크기가 큰 형식을 이용할 수 있다. 식별이 가능하도록 하고 형식을 선택함으로써 이 리스트에 데이터 항목을 추가할 수 있다. 그런 다음 이들 데이터 항목을 보드 식별 칩의 메모리에 어느 순서로든 하나씩 저장할 수 있다. 아니면 시작 부분의 길이 바이트와 끝 부분의 CRC 체크 사이에 데이터를 임베딩하고 이를 데이터 파일로 저장할 수도 있다. 1-Wire 소자의 파일 형식에 관한 더 많은 정보는 애플리케이션 노트 114, "1-Wire File Structure"를 참조한다.
메모리 크기(바이트 단위)에 따라서 제조 데이터 등의 기타 정보를 위한 공간이 있을 수 있다. 이 정보가 보드의 칩에 저장되므로 보드에 관한 정보를 얻기 위해 중앙 데이터베이스를 액세스할 필요가 없다. 하지만 메모리 칩에 적합하지 않거나 액세스를 제한해야 할 필요가 있는 정보(BOM, 부품 업체 이름 등)를 저장하기 위해 이 데이터베이스를 유지하는 것이 바람직하다. 미니멀리스트 기법을 이용할 때는 64비트 ROM 등록번호를 키로 이용해서 데이터베이스에 액세스할 수 있다.
식별 칩의 가격은 저장 용량(메모리 크기)과 제조 기술에 따라 달라진다. 아래 예를 통해 설명하듯이 PnP를 위해 필요한 정보는 128바이트 미만으로 저장할 수 있다. 하지만 추가 정보를 저장하고자 할 때는 128바이트 메모리 칩이 부족할 수 있다. 반면에 2048 바이트 칩은 컴팩트 형식으로 150개 이상 항목의 전체 BOM을 저장하기에 충분한 용량을 제공한다. 저장 효율이 떨어지는 XML 태그 형식을 이용하더라도 2048 바이트가 최대 50개 항목의 BOM을 저장할 수 있다.
네임플레이트 기법에 적합한 메모리 칩은 EEPROM 및 OTP-EPROM의 두 가지 기술을 이용한 것이다. 두 기술 모두 범용 칩 (EEPROM은 2A, EPROM은 3A) 및 ROM 주문형 칩(각각 2B 및 3B)이 가능하다. ROM 주문형은 미니멀리스트 기법에서 설명한 것과 동일하다(그림 1 참조).
보호 EEPROM(2C)은 사용자가 8바이트 비밀 키를 설치해서 맞춤화할 수 있다. 패스워드와 달리 비밀 키는 한 번 설치되면 1-Wire 라인에 절대 노출되지 않는다. 보호 EEPROM에 쓰기 위해서는 호스트 컴퓨터가 비밀 키 및 기타 데이터를 이용해 계산한 160 비트 메시지 확인응답 코드를 전송해야 한다. EEPROM을 읽을 때는 소자가 확인응답 코드를 생성함으로써 마스터가 비밀 키를 노출하지 않고 칩이 적절한 비밀 키를 알고 있는지를 검증할 수 있다.
UniqueWare 소자(3C)는 특수한 ROM 주문형 제품이다. 처음 4개 메모리 페이지의 하나 이상의 페이지에서 해당 고객 프로그래밍이 이루어진다. 이는 프로젝트 ID (데이터 패턴과 고객 구분) 및 특정 고객 시리얼 넘버로 이루어진다. UniqueWare는 주문형 ROM 소자와 동일한 제한이 적용된다. UniqueWare에 관한 더 많은 정보는 애플리케이션 노트 99, "UniqueWare™ Project Setup Manual Revision 2.00B"를 참조한다.
범용 제품(2A, 3A, 2C)은 간편하게 주문이 가능하며 소량일 경우 재고에서 신속하게 공급된다. 주문형 제품(2B, 3B)은 주문에 따라 생산하며 리드타임이 13주이다. 등록 양식 사본은 Maxim 또는 대리점으로 문의한다. UniqueWare 제품(3C)은 고객 주문에 따라 프로그래밍할 수 있다. 맞춤화가 패키지화 부품에 대해 이루어지므로 리드타임이 ROM 주문형 제품에 비해 짧다.
네임플레이트 기법(2A, 2B)을 위한 가장 작은 EEPROM 칩이 DS2430A 이다. 이 칩은 특수 기능으로 32바이트 재프로그래밍 가능 메모리와 함께 8바이트 일회 프로그래밍 가능 레지스터를 포함한다. DS2433은 저장 용량이 512바이트이며 각각 32바이트인 16개 페이지로 구성된다. DS2432 보호 EEPROM(2C)은 128바이트(32바이트 4개 페이지)의 애플리케이션 데이터와 1개 8바이트 비밀 키를 저장할 수 있다. 또한 제어 기능을 위해 8개 레지스터를 포함한다. EPROM 기술을 이용한 제품(3A, 3B)으로는 DS2502(128 바이트), DS2505(2048 바이트), DS2506(8192 바이트) 및 DS2406(128 바이트)을 선택할 수 있다. 이들 제품은 모두 32바이트 메모리 페이지로 구성된다. DS2406은 메모리와 함께 2개 추가적인 핀을 포함한다. 이들 핀이 소프트웨어 제어에 따라 오픈 드레인 출력 (액추에이터) 또는 디지털 입력(센서)으로 동작한다. DS2502, DS2505 및 DS2506은 UniqueWare 버전(3C)으로도 이용할 수 있다.
네임플레이트 기법—EEPROM—비교 표
2A
범용 소자
방법
사용자 프로그래밍 가능 메모리 칩이 회로 보드에 관련 PnP 데이터를 저장한다. 옵션: 추가 데이터는 등록번호로 데이터베이스를 검색한다.
전제조건
PnP 데이터, 추가 데이터(원하는 경우), 데이터 재생, 포맷팅의 정의
최종 테스트에서 메모리 칩을 프로그래밍하는 보드 테스터 옵션: 추가 제품 정보에 액세스하기 위한 데이터베이스
실행
보드 테스터가 적절한 소프트웨어를 사용하는지 확인한다. 옵션: 테스터와 데이터베이스 간에 링크를 생성하여 보드 등록번호, 칩 데이터 사본, 보드 테스트 결과를 저장한다.
복제 방지 기능
데이터가 암호화되지 않았다면 없음
장점
데이터베이스가 고도로 자동화되어 있다.
메모리 칩이 부정확한 데이터로 프로그래밍되어 있으면 다시 프로그래밍할 수 있다.
단점
미니멀리스트 기법보다 더 비싸다.
암호화되지 않았다면 데이터는 권한이 없는 변경으로부터 안전하지 않다.
2B
주문형 소자
방법
(2A와 동일)
전제조건
(2A와 동일)
실행
(2A와 동일)
복제 방지 기능
있음 (암호화는 옵션)
장점
(2A와 동일)
단점
범용 소자보다 더 비싸다.
암호화되지 않았다면 데이터는 권한이 없는 변경으로부터 안전하지 않다.
2C
보호 소자 (사용자 주문제작)
방법
(2A와 동일)
전제조건
보드 테스터는 마지막 테스트 단계에서 메모리 칩에 비밀 키를 설치하고 원하는 데이터로 프로그래밍한다.
(나머지는 2A와 동일)
실행
보드 테스터가 적절한 소프트웨어 및 정확한 비밀 키를 사용하는지 확인한다.
(나머지는 2A와 동일)
복제 방지 기능
있음 (암호화는 옵션)
장점
비밀 키를 몰라도 데이터를 읽을 수 있지만 변경할 수는 없다.
비밀 키는 쓰기 보호가 가능하다.
(나머지는 2A와 동일)
단점
미니멀리스트 기법보다 비싸다.
네임플레이트 기법—OTP EPROM—비교표
3A
범용 소자
방법
(2A와 동일)
전제조건
12V 성능 보드 테스터가 마지막 테스트 단계에서 메모리 칩을 프로그래밍한다.
(나머지는 2A와 동일)
실행
(2A와 동일)
복제 방지 기능
데이터가 암호화되지 않았다면 없음
장점
데이터베이스가 고도로 자동화되어 있다.
메모리 칩이 부정확한 데이터로 프로그래밍되어 있으면 이 데이터는 무효화되고 사용되지 않은 메모리 공간(가능한 경우)에 다시 쓸 수 있다.
데이터는 32바이트 블록으로 쓰기 보호 가능하다.
단점
미니멀리스트 기법보다 더 비싸다.
메모리 칩에 쓰려면 12V가 필요하다.
3B
주문형 소자
방법
(2A와 동일)
전제조건
(3A와 동일)
실행
(2A와 동일)
복제 방지 기능
있음 (암호화는 옵션)
장점
(3A와 동일)
단점
범용 소자보다 더 비싸다.
메모리 칩에 쓰려면 12V가 필요하다.
3C
부분적으로 프로그래밍된 소자—UniqueWare
방법
주문형 칩은 사전에 프로그래밍되어 있으며 제조 공장에서 일부 쓰기 보호되어 있다.
남아있는 사용자 프로그래밍 가능 메모리가 회로 보드에 관련 PnP 데이터를 저장한다.
옵션: 추가 데이터는 등록번호로 데이터베이스를 검색한다.
전제조건
칩 제조 공장에서 사전에 프로그래밍된 고정 데이터 및 직렬화 형식 정의
(나머지는 3A와 동일)
실행
(2A와 동일)
복제 방지 기능
있음 (암호화는 옵션)
장점
(3A와 동일)
단점
(3B와 동일)
네임플레이트 설계 고려사항
전자 네임플레이트는 PnP 에 필요한 모든 데이터 항목, 각각의 데이터 항목을 식별하기 위한 수단, 각 항목 값을 포함해야 한다. 여유 공간을 이용할 수 있으면 네임플레이트에 정보를 추가할 수 있다. 금속이나 종이 네임플레이트와 마찬가지로 회사 이름 및 주소 정보를 포함할 수 있다. OTP-EPROM 비트는 1회만 프로그래밍이 가능하므로 이러한 제약 하에서 프로그래밍된 데이터를 변경할 수 있도록 하는 형식 정의가 바람직하다.
다음의 샘플 설계 컨셉이 이러한 요구를 충족한다. 이 네임플레이트는 회사 이름 및 웹사이트 주소의 ASCII 스트링과 00 바이트의 구분문자로 이루어진다. 이후의 모든 데이터는 그룹으로 구분된다. 각 그룹이 특정 용도의 데이터 항목을 저장한다. 각 그룹이 특정 용도의 데이터 항목을 저장한다 . 각 데이터 항목이 고유의 식별 번호(1 ~ 255)를 포함한다. 각 그룹이 그룹 번호(1 ~ 15)와 그 그룹에 해당되는 값 길이(1 ~ 15바이트)를 나타내는 시작 바이트로 시작된다. 그룹 번호는 시작 바이트의 상위 니블에 저장되고 하위 4개 비트는 값 길이를 지정하는 데 이용된다. 한 그룹의 마지막 값 다음에는 구분자로 00h 바이트가 이어진다.
SIMM 보드 크기의 소형 웹 서버인 TINI® 보드에서 이 정의의 유용성을 확인할 수 있다. TINI 서버는 마이크로프로세서를 포함해 약 64개 부품으로 구성된다. 일부 부품 및 점퍼는 특정 보드 버전에만 설치된다. 데이터는 표 3에서 보듯이 제조 데이터와 PnP 데이터의 2개 그룹으로 구성된다 .
표 3. 샘플 네임플레이트
Group
Function
Items
Ident. #
Length
Format
1
Manufacturing
Data
Product name
Part number
Hardware revision
Date code/lot number
제조 데이터는 집적 회로에 관련된 일반적인 정보들을 저장한다. 이들 정보는 각 항목을 12바이트 미만의 ASCII 텍스트로 표현한다.
PnP 데이터는 다음의 5개 파라미터로 구성된다. 1) RAM 칩 선택 라인 수, 2) 각 RAM 칩의 크기, 3) Ethernet 칩 유무, 4) Ethernet 칩과 SIMM 핀 연결 5)nonvolatizer 유무. 처음 두 파라미터는 숫자 값이고, 나머지 3개는 참 또는 거짓의 "Boolean" 연산식이다. 이들 Boolean 파라미터를 단일 바이트의 3개 비트로 통합하는 것이 가능하지만 이 예에서는 이 방법을 쓰지 않는다. 대신에 "참"에 대해서는 FFh 및 "거짓"에 대해서는 00h의 풀 바이트를 이용한다. 회사 이름을 포함한 풀 네임플레이트는 다음과 같다.
(C)MAXIM www.ibutton.com<00>
<1C><01>TINI SERVER <02>90-TINI1-512<03>REVB1 030900<04>0023B/117989<00>
<21><01><01><02><04><03><FF><04><FF><05><FF><00>
<> 사이의 정보는 16진 형식 바이트를 나타낸다. 나머지 정보는 보통의 ASCII 텍스트이다. 전체 네임플레이트가 106 바이트에 불과하므로 DS2502 칩으로 충분하다. 더 큰 메모리 칩을 선택하면 네임플레이트에 전체 부품 리스트 및 BOM 을 포함시킬 수 있다. 이를 위해서는 파라미터 그룹을 다음과 같이 구성할 수 있다.
Group
Function
Length
Format
1
Manufacturing data
12 bytes each
ASCII
2
Plug-and-play data
1 byte each
(varies)
3
Batteries
9 bytes each
ASCII
4
Capacitors
9 bytes each
ASCII
5
Diodes
9 bytes each
ASCII
6
Transistors
9 bytes each
ASCII
7
Resistors
9 bytes each
ASCII
8
ICs part 1
9 bytes each
ASCII
9
ICs part 2
12 bytes each
ASCII
10
Crystals
9 bytes each
ASCII
11
Circuit board
9 bytes each
ASCII
위의 보드 예에서는 이 모든 정보를 1kB 미만으로 저장할 수 있다. 고유 부품번호 시스템은 각각의 제품에 12글자 참조번호를 지정한다. 각 참조번호의 처음 3글자가 동일하므로 이를 생략해서 참조번호 길이를 9글자로 줄일 수 있다. 그룹 9의 IC 부품번호는 다른 코드로 시작된다. 그러므로 최대 길이 12를 이용한다.
그룹의 각 항목이 식별 번호로 시작되므로 항목들의 순서는 중요하지 않다. 각각의 그룹도 시작 바이트로 구분되므로 그룹의 순서 또한 변경할 수 있다. 이러한 유연성으로 그룹 또는 그룹 내의 개별 파라미터를 무효화하고 이를 재정의할 수 있다. 이는 특히 OTP-EPROM에서 유용하다. 그룹 번호를 0으로 변경함으로써 그 그룹이 무효화된다. 하지만 그룹 내에서 파라미터의 길이를 지정하는 비트는 변경되지 않는다. 그룹을 무효화하면 마지막 파라미터 그룹 이후에 새로운 그룹이 첨부된다. 파라미터를 무효화하고 재정의하려면 원래 위치에서 파라미터 번호를 00으로 변경하고 새로운 파라미터 값의 새로운 파라미터 그룹을 첨부한다. 변경되지 않은 파라미터는 포함시킬 필요가 없다. EEPROM에서는 값이나 그룹의 무효화 및 재정의가 필요하지 않다. 어떤 항목이 변경되면 전체 데이터를 다시 쓸 수 있다.
위의 샘플 설계는 네임플레이트 작성을 설명하기 위한 것이다. 바이너리와 ASCII 데이터를 조합해서 메모리 소모를 최소화할 수 있으나 이는 표준적인 방법은 아니다. 메모리 효율은 떨어지나 좀더 표준적인 방법이 XML 형식이다. XML은 ASCII 코드만을 이용한 것이다. XML 형식을 이용하면 동일 샘플이 다음과 같이 표현된다.
이 XML 파일은 380바이트 길이이며, 애플리케이션 노트 114에서 정의한 1-Wire 파일 구조를 이용해서 DS2433 칩의 16개 메모리 페이지 중에서 15개를 차지한다. 각각의 파라미터에 단축 코드를 이용해서 XML 파일의 크기를 줄일 수 있다.
전통적 보드 시리얼 넘버 얻기
전자적 보드 식별 또는 네임플레이트에도 불구하고 회로 보드에 사람이 읽을 수 있는 전통적 시리얼 넘버를 인쇄하고자 할 수 있다. 64비트 ROM 등록번호에 시리얼 넘버가 16진 형태로 포함되어 있다. 네임플레이트 기법을 선택하면 네임플레이트에 10진 시리얼 넘버를 내장할 수 있다. UniqueWare 제품은 특수 형태의 네임플레이트 기법으로서 출하 전 프로그래밍되는 메모리 섹션에 고객 지정 시리얼 넘버를 포함한다. 종합적으로는 다음과 같은 4가지 기법이 가능하다.
범용 실리콘, 미니멀리스트 기법 (참조번호 1A)
전통적 시리얼 넘버를 얻기 위해서는 48비트 시리얼 넘버 (그림 1 참조)를 10진 수로 변환해야 한다. DS2401이 미니멀리스트 기법에 주로 이용되는 칩으로서 대량으로 생산되며 10진 시리얼 넘버가 9자리 또는 10자리 길이이다.
주문형 실리콘, 미니멀리스트 또는 네임플레이트 기법 (참조번호 1B, 2B, 3B)
전통적 시리얼 넘버를 얻기 위해서는 시리얼 넘버 섹션의 내용을 10진 수로 변환한다. 그림 1에서 보듯이 주문형 제품의 시리얼 넘버 섹션이 28비트를 초과하지 않는다. 그러므로 시리얼 넘버 길이가 옵션 A는 9자리, 옵션 B는 8자리로 제한된다. 고객의 요구에 따라 7자리 인쇄 시리얼 넘버도 이용될 수 있을 것이다. 인쇄 시리얼 넘버의 형식을 결정할 때는 사용자 정의 서브필드를 포함할지를 결정해야 한다. 어느 경우이든 16진 형식을 이용할 수 있다. 서브필드 내용에 따라서 이 숫자를 BCD (binary coded decimal)로 취해서 곧바로 10진 수로 인쇄할 수 있다. 전체 ROM 등록번호 또는 일부를 16진 형식으로 인쇄할 때는 CRC를 왼쪽에, 제품 코드를 오른쪽에 인쇄해야 한다 (예: 25002066007A8081. 제품 코드와 CRC를 제거한 002066007A80은 고객 식별번호 및 사용자 정의 서브필드와 시리얼 넘버이다. ROM 옵션을 알고 있으므로 (이 예에서는 B) 이 소자의 시리얼 넘버가 16진 형식으로는 007A80이고 10진 형식으로는 31360이라는 것을 알 수 있다. 이 예에서는 서브필드를 16진 뿐만 아니라 10진 형식으로도 볼 수 있다.
범용 실리콘, 네임플레이트 기법 (참조번호 2A, 2C, 3A)
전통적 시리얼 넘버를 얻기 위해 가장 많이 이용되는 방법이 시리얼 넘버를 네임플레이트에 10진 형식으로 포함시키는 것이다. 이러한 형태의 시리얼 넘버는 보드 테스터를 제어하는 소프트웨어를 이용해 관리해야 하는데 이 작업이 생각보다 간단하지 않다. 원칙적으로 시리얼 넘버는 각각의 소자가 달라야 하므로 식별 칩을 회로 보드에 탑재하기 전에 갱 프로그래밍 (gang programming)하는 방법은 이용할 수 없다. 네임플레이트에 시리얼 넘버를 포함시키는 방법 대신에 위 1) 범용 실리콘, 미니멀리스트 기법과 동일한 방법을 이용할 수 있다.
부분적 프로그래밍 실리콘, 네임플레이트 기법 (참조번호 3C)
UniqueWare 제품이 범용 실리콘 및 네임플레이트 기법을 이용할 때의 시리얼 넘버 문제를 해결한다. ROM 맞춤화와 달리 UniqueWare를 이용하면 맞춤화가 칩의 EPROM 섹션에서 이루어진다. 이 EPROM에 프로젝트 식별 번호, 고객 지정 10진 또는 16진 시리얼 넘버, (선택적으로) 고객 제공 상수 데이터가 프로그래밍된다. 그리고 출하 전 프로그래밍된 메모리 페이지는 쓰기 방지된다. 10진 시리얼 넘버를 이용했으면 EPROM으로부터 변환을 거치지 않고 곧바로 전통적 시리얼 넘버를 얻을 수 있다.
모든 UniqueWare 제품이 맞춤화 제품 코드를 이용하며 범용 실리콘과 구분하기 위해 고객 ID로 5E7을 이용한다(표 4 참조). 프로젝트 식별 번호는 데이터 스펙이 동일할 때 각각의 고객/애플리케이션용으로 프로그래밍된 소자를 구분할 수 있도록 한다(표 6 참조). UniqueWare 제품은 고객 지정 데이터를 프로그래밍해서 공급되므로 (절대 “블랭크” 부품 아님) 다른 주문형 제품과 동일하게 보호되며 동시에 간편하게 시리얼 넘버를 얻을 수 있으며 리드타임을 단축한다. UniqueWare 제품 및 원하는 데이터 패턴 및 시리얼 넘버 지정에 관해서는 애플리케이션 노트 99를 참조한다.
표 4. UniqueWare ROM 섹션
Device Type
64-Bit Rom Registration Number
8-bit CRC
UniqueWare Identifier
Device Serial Number
Family Code
DS2502U
5
E
7
MSB (hex format) LSB
89
DS2505U
5
E
7
MSB (hex format) LSB
8B
DS2506U
5
E
7
MSB (hex format) LSB
8F
Example
D8
5
E
7
0 00 5D 43 0E
89
메인 회로에 연결
호스트 CPU로 PnP 데이터를 제공하기 위해서는 보드 식별 칩을 보드 회로에 연결해야 한다. 그림 2의 인터페이스는 양방향 포트를 이용한 것이다. 8051 호환 마이크로컨트롤러의 포트 0이 오픈 드레인 특성으로 인해서 1-Wire 라인 구동에 주로 이용된다.
그림 2. 듀얼 읽기 모드 인터페이스
정상 동작이면 이 포트 핀이 2.2kΩ 저항을 통해 VCC로 풀링된다. MOSFET 내부의 기생 다이오드 VGS가 0이고 MOSFET이 오프이더라도 1-Wire 소자의 전압이 VCC에 근접할 수 있도록 한다. 마이크로컨트롤러가 이 포트 핀을 로직 0 (0V)으로 전환하면 VGS가 하이가 되어서 트랜지스터가 전도 상태가 된다. 이렇게 해서 포트 핀의 전압이 트랜지스터를 통해 1-Wire 소자로 전달된다. 마이크로컨트롤러로 비트 0을 전송하기 위해 1-Wire 소자가 잠깐 동안 1-Wire 라인을 접지로 단락시킨다. 그러면 전류가 VCC에서 저항, MOSFET의 기생 다이오드, 1-Wire 소자 순으로 흐른다. MOSFET의 소스와 드레인 사이의 전압 드롭에도 불구하고 포트 핀의 전압이 허용 범위를 유지하므로 안전하게 로직 0으로 인식된다. 비트 1을 전송하기 위해서는 1-Wire 소자가 하이 임피던스를 유지한다. 그러므로 마이크로컨트롤러가 로우로 풀링하는 것을 정지하면 곧바로 저항이 1-Wire 라인을 VCC로 풀링한다. 보드가 동작하지 않을 때 외부 프로브 포인트를 통해서 1-Wire 칩을 읽을 수 있다. 2.2kΩ 저항이 MOSFET의 VGS가 0이 되도록 해서 트랜지스터를 비전도 상태로 유지함으로써 전류가 외부 1-Wire 리더에서 보드의 다른 회로로 흐르는 것을 방지한다. 그림 3에서 보는 점퍼는 EPROM 소자에만 필요하다. EPROM 칩에 네임플레이트 데이터를 프로그래밍하기 위해 테스터가 인가하는 12V 펄스로부터 MOSFET을 보호하기 위해서는 이 점퍼를 제거해야 한다. 그리고 프로그래밍이 완료되면 마이크로컨트롤러가 식별 칩을 액세스할 수 있도록 이 점퍼를 재설치해야 한다.
그림 2의 회로 컨셉을 다른 유형의 직렬 인터페이스에도 적용할 수 있다. 하지만 이를 위해서는 데이터 라인과 클록 및 제어 신호를 위해서 디커플링 트랜지스터가 필요하다. 또한 직렬 메모리 칩의 전력 라인을 디커플링해야 할 수 있다. 또한 단순한 2핀 프로브 포인트 대신에 4핀 또는 5핀 커넥터가 필요할 수 있다. 1-Wire가 아닌 직렬 메모리 소자는 또한 맞춤화 직렬번호를 제공하지 못한다. 그러므로 보안 기능을 제공하는 DS2432가 직접적인 경쟁 제품이 없는 차별화된 솔루션을 제공한다.
실제 예시
TINI 보드 예시를 통해서 네임플레이트 기법의 고려사항을 살펴보도록 하자. 이 TINI 보드가 실제적으로 전자 네임플레이트를 저장한다. 이 보드가 Ethernet 인터페이스를 이용하므로 Ethernet 주소가 필요하다. UniqueWare를 이용함으로써 이 주소를 실리콘으로 간편하게 구현할 수 있다. UniqueWare 데이터가 DS2502 메모리 칩의 1개 메모리 페이지만을 차지하므로 비용을 추가하지 않고 네임플레이트를 위해 3개 메모리 페이지를 이용할 수 있다.
실제 TINI 네임플레이트 설계는 샘플 설계와 약간 다르다. 이는 관련 데이터가 포함되어 있고 식별 가능하며 값을 가지고 있는 경우에 한해 가능하다. 표 5에서 보듯이 TINI 네임플레이트는 7개 데이터 객체 또는 태그를 포함한다.
표 5. TINI 네임플레이트 내용
Tag Name
Tag #
Tag Length
Tag Format
Possible Tag Values
TAG_TINI_HW_VERSION
01
35 bytes
ASCII
(text string)
TAG_DATE_CODE
02
4 bytes
numeric
(UNIX 32-bit time format)
TAG_RAM_CHIP_SELECT_CONFIG
03
1 byte
numeric
1, 2
TAG_RAM_SIZE_EACH_CONFIG
04
3 bytes
numeric
0 to 16777216 bytes
TAG_SMC_NOT_PLACED
05
1 byte
numeric
0 = Ethernet available
1 = Ethernet unavailable
TAG_SMC_PORT_PINS_CONNECTED
06
1 byte
numeric
0 = pins not connected
1 = pins connected
TAG_NONVOLATIZER_NOT_PLACED
07
1 byte
numeric
0 = non-volatizer used
1 = non-volatizer not used
각각의 태그가 길이 바이트 다음의 숫자와 태그 값으로 구분된다. 태그 번호 1에서 시작해서 7개 태그가 연접해서 TINI 구성 데이터를 형성한다. 이 구성 데이터를 메모리 페이지 크기에 맞게 32바이트의 데이터 패킷으로 재형식화된다. 각각의 패킷이 길이 바이트로 시작하고 CRC16으로 끝난다. 표 6은 샘플 소자의 UniqueWare 데이터를 포함한 데이터 패턴이다.
표 6. 샘플 TINI 식별 칩
UniqueWare Section
Address
0000
0A
29
11
00
00
B8
93
00
35
60
00
68
59
FF
FF
FF
0010
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
Nameplate Section
Address
0020
1D
01
23
44
53
20
54
49
4E
49
20
4D
6F
64
65
6C
0030
20
33
39
30
20
52
65
76
20
44
20
44
53
54
F3
3C
0040
1D
49
4E
49
31
2D
35
31
32
02
04
A0
3E
36
3A
03
0050
01
01
04
03
00
00
08
05
01
00
06
01
01
07
C5
01
0060
02
01
00
AF
AF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
0070
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
컬러 코드 설명
데이터 패킷 길이 바이트
UniqueWare 고정 데이터 (IEEE® 회사 식별)
데이터 패킷 CRC
(색깔 없음 = 미사용 바이트)
UniqueWare 프로젝트 식별 번호
네임플레이트 파라미터 수 및 길이
UniqueWare 직렬화
네임플레이트 파라미터 값
네임플레이트를 읽기 위해서는 태그 크기 다음의 숫자를 식별해야 한다. 이 태그 길이가 지시한 만큼의 후속 바이트가 태그 값이다. 그 다음 바이트가 다시 태그 번호이고 그 다음이 태그 값이다. 표 7은 그림 6의 데이터를 디코딩한 것이다. 태그 값을 디코딩할 때는 멀티바이트 숫자가 최하위 바이트가 하위 주소에 저장된다는 점에 유의해야 한다 (“Little Endian” 바이트 순서). 그러므로 숫자를 정상적인 순서로 복구하려면 바이트를 역순으로 써야 한다(“Explanation” 칸에서 설명한 것처럼 오른쪽에서 왼쪽으로). 텍스트는 일반적인 순서대로 저장된다(첫 글자가 하위 주소).
Ethernet company ID# 006035 (UniqueWare constant data)
Nameplate Section
01
(text)
Text = "DS TINI Model 390 Rev D DSTINI1-512"
02
A0 3E 36 3A
3A363EA0 = December 12, 2000, 15:05:04 hours (see note)
03
01
1 chip select
04
00 00 08
08 00 00 = decimal 524288 bytes (512K)
05
00
SMC Ethernet chip is available
06
01
SMC port pins are connected to SIMM edge connector
07
00
Non-volatizer is used
주의: 날짜 코드 3A363EA0은 1970년 1월 1일 0시 UTC를 기준으로 976633504초 이후를 의미한다. 이 시간 형식은 하루가 정확히 24시간인 것으로 간주한다. 그러므로 초에서 요일로 변환하는 것이 간단하다. 날짜 계산은 윤년 보정을 포함하므로 훨씬 복잡하다. 표준 시간 및 날짜에서 초로 또는 이 반대로 변환하기 위한 알고리즘에 관해서는 애플리케이션 노트 517, "DS1371/DS1372/DS1374 32-Bit Binary Counter Time Conversion"을 참조한다.
길이 바이트로 시작하고 CRC16으로 끝나도록 구성 데이터를 패킷화함으로써 파라미터를 무효화(이차 메모리 칩을 설치한 후 네임플레이트를 업데이트하는 등)할 수 없다. 패킷화를 이용하지 않으면 이러한 무효화가 가능하다. 패킷화는 칩의 데이터를 메모리 비트 오류로부터 보호한다. 메모리 비트가 플립되면 CRC16이 일치하지 않는다. 통신이 이루어지는 동안 비트 오류를 방지하기 위해 모든 1-Wire EPROM 칩이 읽기 기능을 지원해서 자동으로 메모리 데이터에 기반해서 CRC를 생성하고 메모리 페이지가 끝났을 때 이를 전송하도록 한다.
1-Wire는 Maxim Integrated Products, Inc.의 등록상표이다.
IEEE는 Institute of Electrical and Electronics Engineers, Inc.의 등록 서비스 마크이다.
TINI는 Maxim Integrated Products, Inc.의 등록상표이다.
UniqueWare는 Maxim Integrated Products, Inc.의 상표이다.