오실로 스코프로 신호를 측정할 떄, 종종 측정 결과를 CSV 포맷으로 저장하는 경우가 있다. 이는 나중에 PC에서 후가공을 하거나 측정 결과 보고서를 작성할 때 첨부로 쓰기 위함일 것이다. 그런데, CSV로 저장된 파일은 PC에서 보기가 쉽지 않다. 스코프 제조사에서 제공해주는 도구를 사용하거나 엑셀을 사용해야 한다. 제조사 도구 같은 경우 제공되지 않거나 찾기 어려운 경우가 있고, 엑셀 같은 경우 CSV 파일이 크면 행수 제한으로 데이터까 짤리는 문제와 속도가 현저하게 느려지는 문제 등이 있다. 이에 쉽게 CSV 파일을 열어서 파형을 보고 쉽게 보고서에 Copy&Paste를 할 수 있는 도구를 만들어 보았다.
오실로스코프에서 제공되는 CSV파일은 파일 초반에 헤더가 표시되어 있다. 제조사마다 헤더에 포함되는 내용이 다르고 헤더로 사용된 줄 수도 다르다. 이 부분은 실제 데이터가 아니므로 건더 뛰어야 한다. 이렇게 건너 뛰어야 하는 행 수를 Header Row Count에 입력한다. 기본값은 20이다(데이터 값이 최소 수백개에서 백만개 이상 일 것이므로 20이라는 숫자를 구지 수정하지 않아도 문제가 될 것은 없다). 아래는 CSV 파일의 한 예이다. 헤더로 2줄이 사용되었다.
위 예제 CSV 파일은 3개의 열로 구성된다. 오실로스코프에서 저장되는 CSV 파일은 첫 열이 시간 데이터이다. 그리고 두번째 열부터 순서대로 신호 데이터열이 된다. 여기서는 2개의 신호 데이터 열이 있는 것을 볼 수 있다.
본 도구에서 Sample Step은 기본값으로 Auto로 설정되어 있는데, 이는 CSV의 첫 열에 시간 데이터가 있기 때문에 그 데이터로부터 자동으로 Sampling Time이 추출되기 때문이다. 만약 시간 데이터 없이 첫 열부터 데이터가 오는 CSV 파일이라면 각 데이터들의 sampling time을 Sampling Step 란에 적어주면 된다.
본 두구에서 오실로스코프처럼 가로와 세로 방향으로 각가 2개의 커서를 제공한다.
CSV에 신호 데이터가 몇 개 포함되었는지 자동 감지후 사용가능한 채널을 표기해 주며 각 채널을 on/off 할 수 있다. 화면에 보여지는 신호는 자동으로 max, min, median, average가 계산된다.
보드를 처음 제작하게 되면, HW가 정상적으로 동작하는지 검증하기 위해서, MCU나 FPGA 같은 제어 디바이스의 레지스터에 값을 쓰거나 읽는 것으로 평가 작업을 진행한다. 이런 검증 작업은 주로 디버깅용 시리얼 포트를 통해 진행하게 되고, 개발 초기에는 주로 시리얼 통신용 터미널 프로그램을 사용해 진행한다. 아직 전용 제어 UI 프로그램이 없기 때문이다.
범용 시리얼 통신 프로그램은 평가 작업을 자동화하기 어려워, 데이터 값 스윕이나 반복 작업 등을 할 때 많은 시간이 소요된다. 따라서 시리얼 통신을 통해 제어 디바이스와 주고 받을 데이터를 스크립트로 작성하여 자동실행을 시키면 검증 시간을 대폭 단축할 수 있다.
SDG(Serial Data Generator)는 시리얼 포트를 통해 제어 장치로 보낼 데이터를 자동으로 생성해 전송해주는 기능을 수행한다.
주요 기능:
일반적인 시러얼 통신 기능. Hexademial 또는 ASCII로 데이터 송신 또는 수신
Delimiter 자동 추가
CRC 자동 생성
전용 스크립트(텍스트 파일) 실행
스크립트 기능:
Case-insensitive
주석 처리 및 모니터 창에 출력
변수 정의, 변수에 값 할당, 변수 연산(사칙연산, 비트연산)
wait, pause
repeat
수신된 데이터를 예상 값과 비교
수신된 데이터를 변수에 할당
변수를 포함한 수식 계산
sdg 파일은 일반 텍스트 파일이다.
명령어등 사용방법은 스크립트 파일 2개를 참조한다. sample_sciprt2를 먼저 전송하고 sample_script를 이어서 수행한 화면이 위 두 그림이다.
Harness 도면의 경우, 접속도 또는 회로도와 달리, drawing 규칙이 정형화되어 있어 자동화가 비교적 용이하다. 따라서, Harness 도면 드로잉을 자동화하면, 도면 작성과 검도 시간을 절약할 수 있다. 이를 위해 Harness Wizard를 만들게 되었다.
2.Harness Wizard 화면 구성
Harness Wizard 입력 시트 구성은 표제란(A), 자재란(B), Harness 구성(C), 그리고 기타(D) 네 부분으로 되어 있다.
3.자재란
자재란은 도면에서 사용되는 자재인 케이블이나 커넥터 등을 정의한다. 여기서 정의된 자재는 각각 고유의 지정자(Material Designator)를 갖게 되며, 도면에서 이것으로 자재를 식별하게 된다.
자재란의 각 열에 대한 설명은 아래와 같다.
Mat. Des.
자재를 고유하게 식별하기 위한 지정자(반드시 숫자이어야 함)
Type
Harness구성 요소로Cable, Connector는 필수 요소이고, Connector아래에 옵션(예들 들어Terminal)을 추가할 수 있다.
Model(Or Specification)
모델 번호나 규격 등에 해당 자재에 대한 정보
Maker
해당 자재 제조사
Start Pin
Type이Cable인 경우,와이어 번호이고, Type이Connector인 경우 핀 번
End Pin
"
추가 정보
Type이Cable인 경우,수축튜브 직경 값 Type이Connector인 경우,핀 번호prefix(옵션). Prefix는 콤마로 구분하여 다중 사용
자재란의 정의는 위 규칙을 준수하는 범위 내에서 얼마든지 길게 작성 가능하다. 자재란 영역은 색으로 구분되므로 바탕색을 준수해야 한다.
아래는 3개의 자재를 정의한 예들 보여준다.
1개의 케이블과 2개의 커넥터가 정의되어 있다. 케이블은 8가닥의 선으로 되어 있으며 지정자(Mat. Des.)는 1 이다. 지정자 2로 정의된 커넥터는 별도의 터미널을 안에 가지고 있으며 A1~A4, B1~B4 등 8개의 핀을 갖고 있다. 지정자 3으로 정의된 커넥터는 내부 핀이 통합되어 있는 커넥터로 8개의 핀(1~8번)을 갖고 있다. 아마도 Harness를 구성하려면 최소한 1개 이상의 Cable과 1개 이상의 Connector가 정의되어야 할 것이다.
4.Harness 구성
Harness 구성은 자재란에 기술된 자재를 이용해서 Harness가 어떻게 구성되는지 정의한다. 기본적으로 Cable, Connector A, Connector B 등 3개 부분이 하나의 구성 세트를 이룬다. 하나의 케이블은 최소한 하나 이상의 Connector A와 Connector B가 필요하다. 하나의 도면에 여러 개 Cable을 드로잉하기 원할 경우 여러 개의 세트를 순서대로 기술하면 된다.
먼저 하나의 구성 세트 예를 살펴보자.
이 Harness는 하나의 Cable이 있으며 케이블 왼쪽(A쪽)에 1개의 커넥터가 있고, 오른쪽(B쪽)에 1개의 커넥터가 있다. 이 Harness에서 사용되는 자제는 3장 자재란에서 정의된 자재이다. 이 구성 정의는 다음과 같다.
먼저 케이블을 정의하고 그 다음 Connector A 그리고 Connector B 순서로 한다. 하나의 케이블에 연결된 커넥터 수 많을 경우, A 또는 B 쪽에 원하는 만큼 계속 정의해주면 된다. 단 입력되는 순서는 Connector A(s)를 다 입력한 후에 Connector B(s)를 입력해야 한다. 입력된 자재들의 종류는 Materials 열에서 Cable, Connector A, Connector B 중 하나의 키워드를 사용해야 한다.
Cable 자재는 반드시 아래와 같은 속성(Properties)을 가져야 하며, 순서대로 입력되어야 한다.
Material Designator
자재란에 정의된 자재Mat. Des.중 하나
Length
Cable길이(mm)
Shield
실드 케이블 사용 유무. A, B또는 빈칸
Label A
A쪽 라벨명
Tag A
A쪽 태그명(옵션)
Heat Shrink Tube Color A
A쪽 수축튜브 색상
Label B
B쪽 라벨명
Tag B
B쪽 태그명(옵션)
Heat Shrink Tube Color B
B쪽 수축튜브 색상
Connector A 또는 Connector B 자재는 아래와 같은 속성을 반드시 가져야 하며, 순서대로 입력되어야 한다.
Material Designator
자재란에 정의된 자재Mat. Des.중 하나
Length
Cable탈피 길이(mm)
Pin Assignment
케이블 와이어 번호. 커넥터 핀 수만큼 정의하며, 할당은 핀 번호 순서대로 콤마로 구분하여 기술한다.
Tag
Cable자재에서 태그를 사용하지 않을 경우, 커넥터 쪽에서 태그를 정의할 수 있다. 태그는 하나만 정의해서 커넥터 전체를 대표하거나, 콤마로 구분해서 핀 수만큼 정의한다.
Connector의 Pin Assignment 속성은 커넥터 핀과 케이블 와이어 간의 연결 관계를 정의한다. 앞예에서, A쪽 커넥터는 Mat. Des.가 2 이다. 자재란에서 2번 자재를 보면 시작 핀이 A1이고 마지막 핀이 B4이다. 즉 8개의 핀을 갖고 있다. 따라서, Pin Assignment에서 8개의 와이어에 연결을 해야 하고, 여기서는 핀번호 순서대로 각각 1, 2, 3, 4, 5, 6, 7, 8번 와이어를 연결했다. 커넥터의 핀에 와이어 할당을 하지 않으려면, 해당 위치는 빈칸으로 둔다. 만약 A2번 핀에 와이어를 할당하지 않으려면, “1, ,3,4,5,6,7,8”처럼 하면 된다.
5.도면 시트 크기
도면 크기는 A4, A3, AUTO 중 하나를 고를 수 있다.
6.Shield 처리
Shield된 케이블을 사용하는 경우, Cable 자재의 Shield Property 값으로 A 또는(그리고) B를 사용하면 된다. 이 부분이 비이 있으면 Unshielded(Normal) 케이블을 의미한다.
Shield는 커넥터 하우징과 Bonding 되거나 커넥터의 한 핀에 Drain Wire가 연결되는 형태를 취한다. 커넥터 하우징에 Bonding하기 원할 경우, Connector A(B) 자재 정의 부분에서 따로 정의할 것은 없다. 그러나, Drain Wire를 커넥터 핀에 할당하고자 할 경우, 해당 핀 번호 자리에 “shield”를 입력한다.
다음은 이전 예에서 Connector A의 하우징이 아닌 A4번 핀에 shield를 연결한 경우이다.
Connector A 커넥터에서 A4번 핀에 wire 4번이 생략되며 shied가 연결된다. Connector B 커넥터에서도 6번째 핀 자리가 빈칸이므로 wire 연결을 하지 않는다.
7.점퍼 처리
케이블에서 나온 하나의 wire를 커넥터 2개 이상의 핀에 연결하기 원할 경우, Pin Assignment 속성에서 해당 핀위치에 wire 번호를 동일하게 입력하면 된다.
다음 구성 예는 A와 B쪽 모두에서 5번과 7번 와이어를 2개의 핀에 할당한 경우를 보여준다.
아래는 구현된 도면이다.
8.커넥터 공유
위 도면처럼 하나의 커넥터가 2개의 케이블에서 공유되는 경우, 아래처럼 Share Des. 열에서 공유되는 커넥터에 동일한 지정자를 임의로 지정해 주면 된다.
9.다중 라벨
동일 Harness에 라벨(또는 길이)만 다르게 적용하고 싶은 경우, 도면에 라벨 테이블을 추가할 수 있다. 이 기능은 ‘테이블 시트 이름’ 항목에 테이블 정보가 있는 엑셀 시트 이름을 입력해주고, 해당 엑셀 시트에서 테이블을 만들어 주면 된다.
테이블 엑셀 시트의 A1 셀부터 도면에 표시될 표를 작성한다. 이때 헤더 부분의 각 항목은 “도면 생성” 시트의 Label A(B), Tag (A/B), 또는 길이와 이름을 같게 해주는 것이 바람직하다.
구성은 예는 아래와 같다.
생성된 도면은 다음과 같다.
10.핀과 태그 할당 편의 기능
커넥터에 핀 수가 많은 경우 와이어 할당에 어려움이 있을 수 있다. 와이어 번호와 핀 번호가 제대로 맵핑 되었는지 확인이 어렵기 때문이다(태그도 마찬가지). 이를 쉽게 하기 위해서 ‘핀 할당 적용’ 기능과 ‘핀 할당 펼치기’ 기능이 있다.
핀 할당 펼치기는 현재 커넥터에 할당된 핀과 태그가 4개 이상일 경우 오른쪽에 그것을 펼친다. 아래는 핀 할당을 펼치기 전이다.
아래는 핀 할당을 펼친 후이다.
핀 할당 펼치기의 반대가 핀 할당 적용이다. 커넥터 핀에 대한 와이어 번호 할당을 쉽게 할 수 있게 해준다. 아래는 핀 할당 적용 전이다.
아래는 핀 할당 적용 후이다.
별표(*)부분은 단순히 식별을 용이하게 하기 위한 목적이다.
11.Harness 도면 만들기
a.Harness Wizard 엑셀 파일에서 Harness 관련 정보 입력 후 생성 버튼을 클릭한다.
Allegro PCB Editor에서 PCB 디자인을 하려면 Orcad나 Allegro HDL 같은 Schematic Editor가 필요하다. Allegro는 회로를 물리적으로 만들어 주는 툴이고 자체적으로는 회로를 만들지 못하므로 회로 작성 툴에서 만든 회로를 import 받아야만 한다. 앞 서 언급한 툴들을 이용해서 회로도를 그린 후에 netlist를 packing하여 export한다. 그 다음, Allegro PCB Editor에서 패키징된 넷리스트를 import하여 회로를 입력 받는다. 그러면 이제 물리적으로 PCB를 디자인할 준비가 된 것이다.
간단한 회로나 테이블화된 값을 자주 사용하는 회로의 경우, 앞 서 언급한 회로도 작성 툴을 사용하지 않고 스프레트시트에서 간단하게 작성 후 바로 알레그로에서 사용할 수 있도록 넷리스트를 작성할 수 있는 기능을 엑셀에서 구현해 보았다.
알레그로는 넷리스트를 import할 때 넷리스트 패지징 정보가 담긴 폴더를 입력으로 받는다. ALLegro HDL에서는 기본적으로 packaged라는 폴더를 사용하고 OrCAD는 allegro라는 폴더 명을 사용한다. 폴더 명은 사용자가 임의로 수정할 수 있다. 여기서는 기본 값으로 allegro 폴더를 사용한다.
엑셀은 크게 3개의 시트 범주를 갖는다. libarry로 시작하는 시트, design으로 시작하는 시트, export 시트 3개 이다. 각각의 입력 포맷은 해당 시트에 주석으로 표시해 놓았다. 주석(회색)은 삭제하면 안되며, 포맷은 반드시 준수해야 한다.
Export 버튼을 누르면 allegro 폴더가 생성되면서 넷리스트가 만들어진다. 에러가 있을 경우, 넷리스트 작성에 실패하며, 어떤 부분에 에러가 있는지 결과를 보고 수정한다.
에러 없이 넷리스트가 만들어지면 allegro 폴더 아래 3개의 파일이 생성된다.
폴더 경로를 기억해 두고, Allegro PCB Editor를 수행해서 넷리스트를 import한다. import할 때 위 폴더를 선택한다.