UART 프로토콜 분석

1. 동의의 근거

1.1. 계약 소개

UART는 Universal Asynchronous Transceiver의 약자로 "Universal Asynchronous Receiver/Transmitter"입니다. 1860년대에 Bell은 컴퓨터와 전신 타자기 통신의 문제를 해결하기 위해 병렬 입력 신호를 직렬 출력 신호로 변환하는 UART 프로토콜을 발명했습니다. 단순하고 실용적인 특성 때문에 UART는 매우 널리 사용되는 통신 프로토콜이 되었습니다. 우리가 매일 노출되는 직렬 포트, RS232, RS485 및 기타 버스, 내부 사용은 기본적으로 UART 프로토콜입니다.

프로토콜과 버스 간의 관계를 더 잘 이해하고 분석하기 위해 일반적으로 전체 통신 사양을 물리적 계층, 프로토콜 계층 및 응용 프로그램 계층으로 나눕니다. 물리 계층은 실제 신호 특성(예: 전압, 전류, 구동 용량 등)과 전기 신호와 논리 신호 0 및 1 간의 대응만을 정의합니다. 프로토콜 계층은 기본 0과 1이 구현되는 방식에 신경 쓰지 않고 논리 신호의 프로토콜 사양과 통신 프로세스(예: 시작, 데이터 및 끝)만 지정합니다. 애플리케이션 계층은 데이터를 얻는 방법에 대해 신경 쓰지 않고 데이터 표현의 의미와 특정 비즈니스 로직을 구현하는 방법만 정의합니다.

UART 프로토콜의 가장 간단한 응용 프로그램인 일반적으로 물리 계층은 전송용과 수신용의 두 개의 전송 라인만 필요하므로 전이중 통신을 달성합니다. 단방향 전송의 경우 하나의 전송 라인만 사용할 수도 있습니다. 이러한 응용 프로그램의 가장 일반적인 예는 TTL 수준 기반 UART 통신을 가능하게 하는 서로 연결된 마이크로 컨트롤러의 RX/TX 포트입니다. 서로 다른 전송 거리와 안정성 요구 사항에 대해 서로 다른 물리적 계층 구현을 교체하면 공통 RS232, RS485 및 기타 통신 버스를 얻을 수 있습니다.

1.2. 다양한 물리 계층 구현

UART 프로토콜 계층에 대한 입력은 논리 0/1 신호이므로 논리 0/1 신호는 물리 계층에서 서로 다른 레벨 표준으로 구분할 수 있습니다. 서로 다른 통신 요구 사항에 대해 서로 다른 물리적 계층을 사용할 수 있습니다. 예를 들어 간단한 온보드 통신 또는 일반적인 장치 디버깅 시나리오에서 두 장치 간의 UART 프로토콜 통신은 간단한 LVTTL/TTL 수준을 사용하여 수행할 수 있습니다.

범용 직렬 포트는 RS232 레벨을 사용하므로 전송 거리를 늘리고 어느 정도의 신호 간섭에 저항할 수 있습니다. 비용은 해당 레벨 변환 칩이 물리적 계층에서 필요하고 송신기는 내부 고레벨 및 저레벨 신호를 더 높은 전압 +/- 전압 신호로 변환해야 하고 수신단은 +/를 변환해야 한다는 것입니다. - 내부 고레벨 및 저레벨 신호로의 전압 신호.

산업용 통신의 경우 전송 거리를 더욱 향상시키고 신호의 신뢰성을 향상시키기 위해 일반적으로 RS485 레벨 표준이 사용됩니다. 일반 하이 및 로우 레벨 신호는 송신단에서 한 쌍의 차동 신호로 변환되고 차동 신호는 수신단에서 일반 하이 및 로우 레벨 신호로 변환됩니다. 또한 RS485를 사용하면 버스에 최대 128개의 트랜시버를 연결할 수 있으며 TTL 또는 RS232는 지점 간 연결입니다.

1.2.1. TTL 기반 UART 통신

TTL 기반 UART 통신은 UART 프로토콜 응용 프로그램의 가장 간단한 사용 사례입니다. 즉, 디지털 I/O 출력의 하이 레벨과 로우 레벨이 실제 물리적 신호로 직접 전송됩니다. 물리적 연결은 장치만 공통 접지면 되며 신호선을 통해 단방향 장치 통신을 완료할 수 있습니다. 양방향 전이중이 필요한 경우 두 개의 신호 라인이 사용됩니다.

다른 물리 계층 구현의 차이점을 비교하기 위해 동일한 데이터가 전송될 때 다른 물리 계층의 실제 신호가 어떻게 다른지 관찰할 수 있습니다. 여기에서 전송 문자 'D'를 예로 들어 스톤 오실로스코프를 통해 TTL에서 전송되는 신호를 직접 관찰합니다(프로브 접지 단자는 장치의 공통 접지 끝에 연결되고 프로브 신호 끝은 위 그림의 파란색 신호선), 그림 1-4와 같은 신호 파형을 얻을 수 있습니다. 파형에서 볼 수 있듯이 데이터 전송이 없을 때 UART 신호는 높은 수준으로 유지되고(특정 신호 진폭은 I/O의 공급 전압에 의해 결정됨) 데이터 전송 중에 신호가 점프합니다. , 신호는 전송이 완료된 후 유휴 하이 레벨 상태로 돌아갑니다.

1.2.2. RS232 기반 UART 통신

전송 거리와 신뢰성을 높이기 위해 구동 능력을 향상시키기 위해 RS232 버스는 물리적 전송을 위해 바이폴라 전압 신호를 사용합니다. 신호를 송수신하기 전에 내부 신호와 버스 신호는 레벨 시프팅 칩을 통해 서로 변환됩니다. 연결 방법은 TTL 레벨과 완전히 동일하며 전체 물리 계층은 레벨 변환의 한 계층만 더 있습니다.

또한 전송 문자 'D'를 예로 사용하여 Pushi 오실로스코프의 프로브를 신호 끝에 연결하고 그림 1-6과 같은 실제 파형을 캡처할 수 있습니다. RS232 파형은 유휴 상태일 때 음의 전압이고 데이터 전송이 있을 때 신호가 양과 음의 전압 사이를 점프하기 시작하고 전송이 완료된 후 유휴 음의 전압 상태로 돌아갑니다.

1.2.3. RS485 기반 UART 통신

RS485는 복잡한 산업 환경을 위해 설계되었으며 RS485 버스의 가장 큰 특징은 다른 UART 프로토콜의 물리 계층과 비교하여 차동 신호 전송을 사용한다는 것입니다. 신호가 전송되기 전에 단일 종단 신호는 RS485 송수신기에 의해 차동 신호로 변환된 다음 전송을 위해 버스로 전송됩니다. 또한 수신하기 전에 버스의 차동 신호는 트랜시버에 의해 단일 종단 신호로 변환된 다음 수신을 위해 UART 컨트롤러로 전송됩니다. RS485 버스에서 전이중 양방향 통신을 위해서는 두 쌍의 차동 신호 라인(즉, 4개의 신호 라인)이 필요합니다. 반이중 양방향 통신만 수행되는 경우 한 쌍의 차동 신호만 필요합니다.

다시, 전송 문자 'D'를 예로 사용하여 그림 1-8에 표시된 실제 파형은 A/B 끝에 연결된 Pushi 오실로스코프의 프로브 중 XNUMX개의 채널 프로브(일반적으로 참조됨)를 사용하여 얻을 수 있습니다. 차동 신호 중 하나. A/B 끝의 파형이 상보적임을 알 수 있습니다. A 단자 파형은 순논리(유휴 시 양의 전압)이고 B 단자 파형은 역논리(유휴 시 음의 전압)입니다.

2. 프로토콜 사양

2.1. UART 프레임 구조

앞 장 소개에서 스톤 오실로스코프를 통해 실제 UART 파형을 관찰했는데 이 파형이 정확히 어떻게 다른 것이 아닌 'D' 문자로 정확하게 인식되는 것일까요? 여기에는 UART 프로토콜의 프레임 구조 정의가 포함됩니다. 그림 2-1과 같이:

두 장치가 UART 프로토콜을 통해 통신해야 하는 경우 다음 사항에 동시에 동의해야 합니다.

  • 신호당 시간 길이 T(전송 속도 = 1/T)
  • 프레임 구조의 각 항목에 있는 특정 비트 수
  • 체크 디지트가 있는지 여부와 체크 디지트의 메커니즘(홀수/짝수/…). )

이러한 규칙을 사용하면 수신 장치는 시작 비트가 도착할 때까지 기다린 다음 전송된 특정 정보를 얻기 위해 일정한 간격으로 후속 파형을 샘플링하면 됩니다. 문자 'D'의 파형을 예로 들면 분해능 과정이 그림 2-2에 나와 있습니다.

2.1.1. 전송 속도

Baud rate는 UART 프로토콜 또는 모든 비동기 직렬 프로토콜의 매우 중요한 개념, 즉 단위 시간(1초)당 표현할 수 있는 비트 수 또는 비트 폭의 역수로 표현할 수도 있습니다. . 예를 들어, 전송 속도가 115200인 UART 파형은 초당 115200비트를 수용할 수 있음을 의미하며, 이는 각 데이터 비트가 약 8.68uS의 시간을 설명한다는 의미입니다.

UART와 같은 비동기 직렬 프로토콜은 신호의 물리적 연결을 단순화하고 통신 비용을 줄이기 위해 일반적으로 하나의 신호 라인만 가지며 데이터와 클록 신호를 동시에 전송할 수 없습니다. 송수신기/전송 장치가 파형을 올바르게 해석하려면 동일한 전송 속도 설정에 있어야 합니다. 다른 전송 속도를 사용하는 동일한 파형은 완전히 다른 정보를 얻을 수 있습니다. 수신 장치의 경우 시작 비트만 데이터 프레임의 동기화 지점으로 사용할 수 있으며 다른 데이터는 전송 속도에 의해 결정되어 특정 샘플링 위치를 결정합니다.

다시, 그림 2-4와 같이 문자 'D'의 파형을 예로 들어, 잘못된 전송 속도로 수신하면 완전히 잘못된 데이터 정보를 얻을 수 있습니다.

2.1.2. 유휴 비트

장치 간에 데이터가 전송되지 않을 때 높은 수준이 지속되면 유휴 상태를 나타냅니다. 유휴 비트 기간이 길수록 두 데이터 프레임 사이의 간격이 길수록 단위 시간당 전송되는 데이터는 줄어듭니다.

2.1.3. 비트 시작

UART 수신기는 항상 신호 라인의 레벨 변화를 감지하고 데이터가 전송될 때 발신자는 신호 라인을 하이 레벨에서 로우 레벨 끝까지 풀링하여 유휴 상태로 유지하고 약간의 시간을 유지합니다. 수신기가 하이-로우 레벨 시프트를 감지하면 신호 수신을 시작합니다.

2.1.4. 데이터 비트

데이터 비트에는 전송된 실제 데이터가 포함되며, 패리티를 사용하는 경우 5~8비트 길이, 패리티를 사용하지 않는 경우 5~9비트입니다. 일반적으로 데이터 비트는 8비트이며 데이터는 최하위 비트부터 먼저 전송되고 상위 비트가 두 번째로 전송됩니다.

2.1.5. 숫자 확인

확인 숫자는 전송의 신뢰성을 향상시키는 데 사용할 수 있습니다. 전송 과정의 간섭으로 신호가 잘못되어 일부 위치의 레벨에 오류가 발생하는 경우 수신 데이터와 체크 디지트가 일치하는지 여부를 계산하여 수신 데이터와 체크 디지트가 일치하는지 여부를 판단할 수 있으므로 해당 데이터를 수락/폐기하기로 결정하기 위해 애플리케이션 계층에 유효한 정보를 제공합니다.

2.1.6. 정지 비트

정지 비트는 데이터 프레임의 끝을 나타내며 실제 신호는 시간이 높은 기간입니다. 정지 비트의 길이는 1, 1.5 또는 2비트의 정지 비트로 설정할 수 있습니다. 대부분의 경우 1비트의 정지 비트를 사용합니다.

UART는 비동기식 프로토콜이기 때문에 각 프레임의 시작은 점프 에지와 동기화될 수 있지만 정지 비트는 baud rate에 의해서만 상대 위치를 계산할 수 있으며 정지 위치에서 로우 레벨이 인식되면 프레임 오류가 발생합니다. 생성됩니다. 통신 프로세스에서 전송 속도 오류로 인한 문제를 줄이기 위해 다른 정지 비트 길이를 적응하도록 설정할 수 있습니다.

3. 로직 애널라이저를 이용한 UART 통신 분석

3.1. 오실로스코프 대 로직 분석기

주요 범용 테스트 및 측정 장비인 오실로스코프는 아날로그 신호의 세부 사항을 관찰하는 데 자연스러운 이점이 있습니다. 예를 들어, 파형 재생률이 높은 실시간 작동은 갑작스러운 비정상 신호를 쉽게 관찰할 수 있습니다. 예를 들어, 노이즈 평가 및 신호 품질 최적화를 수행할 때 오실로스코프는 동일한 버스 및 다른 노드에서 신호의 유사점과 차이점을 비교하여 숨겨진 신호 무결성 문제를 찾을 수 있습니다.

그러나 오실로스코프에는 자연적으로 몇 가지 불편한 장소가 있습니다. 몇 개의 채널 외에도 화면이 일반적으로 작고 작동이 컴퓨터 + 마우스 방식이 아니며 이러한 형태 학적 문제를 유연하고 제어 할 수 없습니다. 디지털 신호의 수집 및 분석을 위해 가장 큰 오실로스코프의 문제는 저장 깊이가 너무 작다는 것입니다. 수십만 위안의 오실로스코프도 저장 깊이가 수백 Mpts에 불과할 수 있습니다. 동시에 저장 깊이의 제한으로 인해 약간 더 긴 시간 수집을 수행해야 할 때 오실로스코프의 실제 샘플링 속도가 급격히 떨어지므로 수집된 파형이 실제 신호를 복원할 수 없어 손실됩니다. 분석의 중요성.

로직 애널라이저는 디지털 신호 수집 및 분석을 위해 특별히 설계된 테스트 및 측정 장비이며 수집된 파형 결과는 하이 및 로우 레벨(즉, 논리 0 및 1)만 있습니다. 그러나 디지털 신호를 수집하고 분석하는 데 오실로스코프가 부족한 점을 보완합니다.

  1. 1. 대부분의 로직 분석기는 데스크탑 프로세서의 강력한 성능과 성숙한 운영 체제의 상호 작용 경험으로 PC에서 작동하므로 디지털 신호 분석의 편의성과 효율성이 크게 향상됩니다.
  2. 2. 로직 애널라이저 채널의 수가 많고, 보급형 DSLogic 로직 애널라이저는 16개의 채널을 동시에 수집할 수 있으며, 사용자는 수십 또는 수백 개의 채널이 있는 로직 애널라이저 제품을 매우 합리적인 가격에 얻을 수도 있습니다. 비용.
  3. 3. 로직 분석기의 저장 깊이가 더 큽니다. 예를 들어 DSLogic은 스트림 모드에서 16G의 저장 깊이에 도달할 수 있으며 동시에 대부분의 오실로스코프의 수집 기능을 훨씬 능가하는 상당히 높은 샘플 속도를 유지할 수 있습니다.
  4. 4. 로직 분석기는 일반적으로 디지털 신호에 대한 심층 분석을 수행할 수 있는 풍부한 프로토콜 디코딩 기능을 제공합니다. 예를 들어, DSLogic은 현재 100개 이상의 디코딩 프로토콜을 지원합니다. 대부분의 오실로스코프는 디코딩 기능이 제한되어 있으며 대부분의 경우 해당 플러그인을 별도로 구매해야 합니다.

다음으로 다양한 상황에서 UART 신호의 수집 및 분석을 위해 로직 분석기를 사용하는 방법에 중점을 둘 것입니다.

3.2. 로직 애널라이저를 위한 테스트 환경 구축

3.2.1. DSLogic에 연결

DSLogic은 USB 연결을 기반으로 하는 휴대용 로직 분석기입니다. DSLogic 호스트는 신호 수집 및 캐싱을 담당하고 USB를 통해 PC의 호스트 컴퓨터 소프트웨어 DSView로 데이터를 전송합니다. DSView는 파형 데이터 처리, 표시, 분석 및 해당 인간-컴퓨터 상호 작용 기능을 담당합니다.

사용할 때 USB 데이터 케이블을 통해 DSLogic 호스트를 PC 보드의 USB 포트에 직접 연결하고 DSView 소프트웨어를 열고 DSLogic 호스트의 INDICATOR가 항상 녹색인지 확인합니다. 이 시점에서 로직 애널라이저의 연결 및 초기화가 완료됩니다. 그림 3-4와 같이 왼쪽 상단 모서리에 있는 현재 장치 이름과 해당 연결 상태는 DSView 소프트웨어에서 볼 수 있습니다.

3.2.2. UART 신호 연결

모든 측정에서 테스트 장비와 측정할 신호는 일반적으로 접지라고 하는 공통 기준 평면을 기반으로 해야 측정된 신호를 올바르게 획득하고 측정할 수 있습니다. 어떤 경우에는 명시적인 접지가 없지만 측정 결과는 문제가 없는 것처럼 보입니다. 이는 측정 장비와 측정된 신호가 동일한 전원 공급 장치를 사용하거나 참조하는 것과 같은 다른 방식으로 접지에 연결되기 때문입니다. 접지는 동시에 주전원의 접지 단자에 연결됩니다. 그러나 엄격한 측정을 할 때 측정 장비는 테스트 중인 신호에 따라 접지되어야 합니다. 측정 신호에서 측정 장치까지 신호 접지 단자의 루프 영역이 클수록 신호가 간섭받기 쉬워 측정 오류 또는 측정 오류가 발생합니다.

UART 신호의 경우 로직 분석기에 액세스할 때 가장 간단한 경우는 2개의 와이어만 연결하면 됩니다. 하나는 기준 접지에, 다른 하나는 측정된 신호에 연결하면 됩니다. 앞에서 언급한 UART 프로토콜의 다양한 물리적 계층 구현의 경우 신호가 연결되는 방식이 약간 다릅니다.

예를 들어, TTL 레벨의 UART 신호의 경우 기준 접지를 연결하는 것 외에도 테스트할 신호(TX 또는 RX)를 로직 분석기의 해당 채널 입력에 연결하기만 하면 됩니다.

RS232 버스 신호의 경우 레벨 변환 후 버스 신호를 측정하거나(DSLogic은 케이블 입력에서 +-30V의 내전압 범위를 가지며 RS15의 +-232V 신호 범위는 직접 연결할 수 있음) 측정할 수 있습니다. 레벨 변환 전의 내부 디지털 신호. 그것의 배선 방법은 TTL 신호와 일치합니다. 주목해야 할 유일한 것은 RS232 신호가 레벨(유휴 상태일 때 음의 전압, 즉 낮은 레벨)을 뒤집는 것입니다. UART 프로토콜을 디코딩할 때 해당 신호 레벨을 역전시킬 수 있습니다. DSView의 디코딩 설정 창(Invert Signal 옵션이 yes로 설정됨).

RS485 버스는 차동 신호를 사용하며, 신호 수집을 위해 로직 분석기를 사용할 때 측정된 신호의 연결에 특별한 주의가 필요합니다. 우선, 로직 분석기의 기준 사이트는 테스트 중인 해당 장치 RS485 트랜시버의 기준 접지에 연결되어야 로직 분석기가 정확한 레벨 기준 평면을 갖도록 보장할 수 있습니다. 둘째, 차동 신호의 경우 로직 분석기는 내부 신호와 높은 수준 및 낮은 수준의 동극성을 획득하기만 하면 됩니다. 디지털 신호의 관점에서 차동 방식은 추가 정보를 추가하지 않고 신호 전송의 신뢰성만 향상시킵니다. 그림 3-7과 같이 로직 분석기를 사용하여 485 버스 신호를 테스트할 때 해당 장치의 트랜시버의 기준 접지와 차동 버스의 A+ 신호를 연결합니다.

물론 B 신호만 수집할 수 있는 경우 DSView에서 디코딩할 때 올바른 프로토콜 해상도 결과를 얻기 위해 신호를 반대로 하도록 UART 디코더를 설정할 수도 있습니다.

3.2.3. 임계값 설정

논리 분석기의 임계값은 고저 레벨의 판단 전압입니다. 즉, 입력 신호 전압이 임계값 전압보다 높을 때 획득은 하이 레벨입니다. 입력 신호 전압이 임계 전압보다 낮으면 획득이 낮습니다.

UART 프로토콜의 경우 이전에 다른 물리 계층 구현이 있고 다른 물리 계층 구현이 다른 수준 표준을 가짐을 소개했습니다. 서로 다른 경우에 높은 수준과 낮은 수준을 구별하기 위해 해당 임계값만 선택하면 됩니다. 그림 3-8에 표시된 임계값은 기본적으로 이 요구 사항을 충족할 수 있습니다.

경우에 따라 RS485 버스의 차동 신호 진폭은 구성 또는 디버깅으로 인해 넓은 범위에 걸쳐 달라질 수 있습니다. RS485 사양에서는 AB 간의 차동 전압이 200mV보다 크면 높은 것으로 간주할 수 있다고 규정하고 있습니다. 이 시점에서 스톤 오실로스코프를 사용하여 실제 신호 레벨 진폭을 관찰한 다음 적절한 임계값 설정을 결정할 수 있습니다. 설정한 임계값 전압이 높은 수준과 낮은 수준을 합리적으로 구별할 수 있는지 확인하기만 하면 됩니다.

3.3. 간단한 UART 신호 수집

대부분의 UART 신호는 신호 주파수가 115200KHz에 불과함을 나타내는 115.2의 가장 일반적으로 사용되는 전송 속도와 같은 저속 신호입니다. 이러한 신호는 DSLogic의 기본 설정을 사용하여 직접 수집할 수 있습니다. 여기에서는 호스트가 고정된 1초 간격으로 문자 'D'를 반복적으로 보내는 경우를 예로 들어 로직 애널라이저를 사용하여 이러한 UART 신호를 수집하고 분석하는 방법을 설명합니다.

3.3.1. 신호 수집

하드웨어 및 신호 연결이 준비된 후 DSView 소프트웨어의 "시작" 버튼을 클릭하여 기본 설정(1MHz 샘플 속도 획득 시간 1초)에서 테스트 중인 신호를 획득합니다. 샘플 속도와 수집 기간을 수정하려면 해당 드롭다운 상자에서 해당 매개변수를 직접 선택합니다. 샘플링 레이트 설정 원리는 측정된 신호의 최대 주파수의 10배 이상을 권장합니다. 예를 들어, 115200 baud의 UART 신호의 경우 가장 빠른 신호 주파수는 115.2KHz이며, 1M 샘플링 레이트는 다음과 같습니다. 선택되면 각 비트 신호는 8 또는 9개의 샘플링 포인트를 가지며 해당 위상 오류는 +-1/8(12.5%)입니다. 10M 샘플 속도가 선택되면 신호 비트당 86 또는 87 샘플 포인트가 있으며 이는 +-1/86(1.16%)의 위상 오류에 해당합니다. 물론 너무 높은 샘플링 속도를 사용하는 것은 일반적으로 권장하지 않습니다. 샘플링 속도가 높을수록 수집할 수 있는 시간이 짧아지고 너무 높으면 단일 점프에서 여러 점프를 수집할 수 있기 때문입니다. 느린 신호의 가장자리, 따라서 프로토콜 디코딩에 문제를 일으킵니다. 그림 3-9는 기본 설정을 사용하여 획득한 결과 신호 파형을 보여줍니다.

그림 3-9에서 볼 수 있듯이 채널 0은 지속적으로 높은 신호를 획득하지만 점프를 찾지 못합니다. 파형 창 위의 시간 눈금자와 창 아래쪽의 스크롤 막대를 주의 깊게 관찰하여 현재 창에 모든 신호가 아니라 수집된 파형의 일부만 표시된다는 것을 알 수 있습니다. 이 시점에서 마우스 휠로 확대/축소하거나 파형 영역을 마우스 오른쪽 버튼으로 클릭하여 전체 획득 기간 동안 모든 파형을 표시할 수 있습니다. 그림 3-10과 같은 결과를 얻으십시오.

위 그림을 기준으로 채널 0의 트랜지션 부분만 보고자 합니다. 옵션 창에서 다른 채널의 파형 표시를 끄고 채널 신호의 표시 높이를 조정할 수 있습니다. 그런 다음 목표 파형에 마우스를 가리키고 동시에 마우스 휠을 통해 가리킨 위치의 파형을 확대합니다. 또는 상자에서 마우스 오른쪽 버튼을 누른 상태에서 확대하려는 파형 영역을 선택할 수 있습니다. 또한 마우스 왼쪽 버튼을 누른 상태에서 파형을 좌우로 이동합니다. 그림 3-11에 표시된 파형 세부 정보를 가져옵니다.

파형을 관찰할 때 펄스 파형 위에 마우스를 놓으면 현재 신호의 펄스 폭, 주기, 주파수 및 듀티 사이클과 같은 정보를 표시할 수 있습니다. 동시에 마우스 왼쪽 버튼을 더블 클릭하여 커서를 추가할 수도 있으며, 커서를 이동하면 자동으로 가까운 점프 가장자리에 스냅됩니다.

3.3.2. UART 디코딩

로직 분석기에 의해 수집된 신호 파형은 높은 수준과 낮은 수준(0/1)에서만 시간이 변하므로 신호 전송의 프로세스 및 내용에 대한 우리의 목표 분석에 도움이 되지 않습니다. 프로토콜 사양에 따라 파형에 해당하는 프로토콜 콘텐츠를 육안으로 번역할 수 있지만 분석 효율성이 크게 저하됩니다. DSView의 내장 디코더는 풍부한 프로토콜 디코딩 콘텐츠를 제공하여 지루한 파형을 의미 있는 문자, 마커 및 데이터 콘텐츠로 바꿉니다. 엔지니어가 오류 메시지 또는 중요한 데이터를 찾기 위해 신호를 분석하고 이해하는 데 크게 도움이 됩니다.

DSView 소프트웨어에서 획득한 파형의 프로토콜 디코딩은 매우 간단합니다. "디코드" 패널을 열고 해당 디코더를 검색하고(여기서 1: UART 프로토콜 선택) 해당 디코더 옵션(디스플레이/채널 포함)을 설정하기만 하면 됩니다. /프레임 구조/형식 등). 결정되면 소프트웨어는 선택한 채널에서 UART의 프로토콜을 디코딩하기 시작합니다. 디코딩된 결과는 프로토콜 채널에 표시됩니다. 이것은 그림 3-12에 나와 있습니다.

디코더를 선택할 때 DSView는 편리한 프로토콜 검색 기능을 제공합니다. 프로토콜 검색 상자에 주요 문자를 입력하기만 하면 DSView는 사용자가 올바른 디코더를 선택할 수 있는 이러한 문자를 포함하는 모든 디코더를 나열합니다. 그림 3-13에서 볼 수 있듯이 UART 0과 관련된 두 가지 프로토콜: UART 및 1: UART, 여기서 0: UART는 비트 정보를 구문 분석하지 않고 상위 수준 프로토콜의 스택을 지원하지 않는 단순화된 디코더입니다. 파형에 해당하는 데이터만 가져오려는 경우 이 단순화된 프로토콜을 사용하여 디코딩 시간과 메모리 리소스를 줄일 수 있습니다.

디코더의 설정 창에는 디코딩과 관련된 많은 설정 옵션이 있으며 프로토콜에 따라 설정 창의 내용이 다릅니다. 채널과 프로토콜 신호 간의 대응과 같이 모든 디코더가 설정해야 하는 몇 가지 옵션이 있습니다. 여기서는 채널 0에서 캡처한 UART 신호를 사용하므로 디코딩해야 하는 해당 채널은 채널 0으로 설정해야 합니다.

그리고 우리가 프레임 구조 섹션에서 자세히 설명한 프로토콜 관련 설정 옵션은 실제 작동에서 이 정보를 얻기 위해 직렬 포트 호스트 컴퓨터 소프트웨어(직렬 포트 디버깅 도우미 등)를 통해 얻을 수도 있습니다. 이것은 그림 3-14에 나와 있습니다.

디코딩된 데이터 콘텐츠의 경우 DSView는 다양한 표시 형식을 지원합니다. 예를 들어, 이전에 획득한 UART 신호는 ASCII 코드 형태로 문자 'D'를 표시하거나 0진수(Hex)의 표시 모드로 수정할 수 있으며 결과는 44x3로 표시됩니다. 이것은 그림 15-XNUMX에 나와 있습니다. 현재 지원되는 표시 형식은 XNUMX진수(XNUMX진수), XNUMX진수(XNUMX진수), XNUMX진수(XNUMX진수), bin(XNUMX진수) 및 ASCII 코드입니다.

3.4. 단일 UART 전송 획득

캡처하려는 파형이 비정기 신호일 때 파형이 언제 나타날지 모르며 직접 획득 방법을 사용하면 대부분의 시간 동안 유휴 신호 파형만 캡처할 수 있으며 캡처할 수 없습니다. 실제 전송 시 신호를 캡처합니다.

이때, 트리거링으로 포획할 수 있다. 해당 트리거 조건을 설정하면 파형의 변화에 ​​따라 신호 수집 시작 시간을 제어하여 보고 싶은 신호 파형을 정확하게 캡처할 수 있습니다.

3.4.1. 버퍼 모드

DSLogic은 스트림 모드와 버퍼 모드의 두 가지 수집 모드를 지원합니다. Stream 모드에서 수집된 데이터는 실시간으로 PC로 전송되어 DSView에서 처리됩니다. 버퍼 모드에서 수집된 데이터는 먼저 DSLogic의 내부 하드웨어 캐시에 캐시된 다음 수집이 완료된 후 PC로 전송되어 DSView에서 처리됩니다.

더 높은 샘플 속도를 달성하는 이점 외에도 버퍼 모드는 다중 레벨 트리거링, 직렬 트리거링 및 트리거 위치 설정과 같은 더 많은 트리거링 옵션 및 설정을 지원합니다. 반면에 스트림 모드는 단순 트리거링만 지원합니다.

3.4.2. 트리거 설정

간단한 트리거링을 위해 채널 바로 옆에 트리거 옵션을 설정할 수 있습니다. 상승 에지, 하이, 하강 에지, 로우 레벨 및 모든 에지 트리거에 순차적으로 대응합니다. 트리거 패널에서 기본 단순 트리거 모드를 유지하십시오. 예를 들어, 언제 발생하는지 모르는 UART 전송의 경우 하강 에지를 트리거하도록 선택할 수 있습니다. UART 신호가 유휴 상태를 유지하면 트리거가 충족되지 않습니다. DSLogic은 그림 3-17과 같이 트리거 조건이 도달할 때까지 기다립니다.

UART가 첫 번째 시작 비트 전송을 시작하면 트리거 조건이 활성화되고 DSLogic은 트리거 시점의 신호 파형을 획득합니다. 이것은 그림 3-18에 나와 있습니다.

장치 A가 장치 B에 지속적으로 무작위로 데이터를 보내고 장치 B가 장치 A가 보낸 데이터 내용에 따라 다른 데이터에 응답하는 것과 같은 더 복잡한 트리거 시나리오를 고려해 보겠습니다. 장치 A가 장치에 보낸 데이터를 알고 싶다면 B 데이터 0을 보내기 전에 해당 순간에 파형을 잡기 위해 트리거 조건을 어떻게 설정합니까?

여기서 해결해야 할 두 가지 문제가 있습니다. 먼저 트리거 위치를 설정하여 트리거 이후의 데이터가 아니라 트리거 이전의 데이터를 볼 수 있도록 해야 합니다. 둘째, 데이터 0을 보내는 장치 B의 파형 특성을 찾아 해당 트리거 조건으로 변환해야 합니다.

UART 프로토콜 분석

그림 3-19 트리거 위치

UART의 프로토콜 규칙에 따르면 데이터 0을 보내는 파형은 상대적으로 넓은 연속 저레벨 펄스 신호가 됩니다. UART의 전송 속도가 115200이고 설정한 샘플링 속도가 1MHz인 경우 데이터 0의 파형은 그림 3-20과 같이 약 78.125uS의 저레벨 펄스가 됩니다.

고급 트리거 또는 트리거 위치를 설정하려면 버퍼 모드 지원이 필요합니다. 먼저 "옵션"에서 "실행 모드"를 "버퍼 모드"로 설정하고 "RLE 하드웨어 압축" 옵션을 선택하지 않아야 합니다. 고급 트리거 조건을 1 샘플 포인트의 연속 로우로 채널 75로 설정하고(1us의 낮은 레벨인 75MHz 샘플 속도에 해당) 트리거 위치를 80%로 설정하여 트리거하기 전에 데이터를 쉽게 관찰할 수 있습니다. 특정 설정은 그림 3-21에 나와 있습니다.

이 트리거 조건에 따라 장치 B가 데이터 0을 보낼 때 트리거되며 획득한 파형은 그림 3-22와 같습니다.

3.4.3. 컬렉션 반복

어떤 경우에는 버스트가 보내는 데이터 내용과 같은 일부 신호의 상태를 매번 동적으로 관찰해야 하지만 데이터가 언제 전송되는지 알지 못하고 "시작" 버튼을 자주 클릭하는 것이 불가능합니다. . DSView는 트리거링이 충족될 때 파형을 자동으로 획득하고 업데이트하는 "반복" 획득 모드를 제공합니다. 일부 주기적 버스트 신호를 디버깅할 때 반복 모드를 통해 동적 수집 및 프로토콜 구문 분석 결과를 관찰하는 것이 매우 편리합니다.

반복 모드는 그림 3-23과 같이 설정할 수 있습니다. 반복 간격은 파형 관찰 및 이전 획득의 디코딩 결과를 용이하게 하기 위해 두 샘플 사이의 최소 체류 시간입니다.

3.5. 장기 UART 전송 획득

분석을 위해 매우 긴 파형을 수집해야 하는 경우 스트림 모드를 사용할 수 있습니다. DSLogic은 스트림 모드에서 채널당 16G의 샘플링 깊이를 달성할 수 있습니다. 1MHz의 샘플링 레이트에서 획득 시간은 16시간 이상인 1G/16000M ≈ 4초에 도달할 수 있습니다.

3.5.1.스트림 모드

스트림 모드 설정은 그림 3-24에 나와 있으며 다른 DSLogic 하드웨어 버전은 다른 스트림 모드 채널 옵션을 지원합니다. U3Pro16의 경우 USB3.0 포트를 기반으로 최대 3GHz 샘플 속도에서 1개 채널, 최대 6MHz 샘플 속도에서 500개 채널, 최대 12MHz 샘플 속도에서 250개 채널 및 최대 16MHz 샘플 속도에서 125개 채널을 달성할 수 있습니다.

수집된 데이터의 양이 상대적으로 많을 때 0:UART 프로토콜을 디코딩에 사용할 수 있는 반면 비트 정보의 출력을 생략하고 고급 프로토콜 스태킹을 지원하지 않으며 디코딩 시간을 단축할 수 있습니다. 메모리 점유를 줄입니다. 다른 기능은 1:UART와 동일합니다. 디코딩 효과는 그림 1-3에 나와 있습니다.

3.5.2. 프로토콜 목록이 표시됩니다.

다음 그림과 같이 그래픽 디코딩 결과는 획득한 파형과 시간적으로 완전히 동기화되어 파형을 이해하고 문제를 찾는 데 도움이되지만 동시에 시간의 표시 스케일로 인해 그렇지 않습니다. 디코딩 결과를 보는 데 도움이 됩니다. 목록 표시는 이러한 단점을 보완하여 많은 양의 디코딩된 콘텐츠를 쉽게 보고 분석할 수 있도록 합니다.

DSView는 그래픽 결과와 목록 결과 사이를 이동할 수 있는 방법을 제공합니다. 목록 결과에서 임의의 행을 클릭하면 해당 파형 결과로 자동으로 이동하고 점프할 때 파형을 자동으로 확대할지 또는 파형의 현재 확대/축소 비율 열을 고정할지 선택할 수도 있습니다. 또한 특정 순간에 파형을 볼 때 이 파형에 해당하는 디코딩 결과가 목록에서 표시되는 위치로 점프하려면 오른쪽 상단 모서리에 있는 위치 버튼을 클릭하기만 하면 됩니다. 목록 표시 창.

또한 디코딩된 콘텐츠는 목록 표시를 통해 파일로 내보낼 수 있습니다. 위 그림과 같이 목록에 표시된 "저장" 버튼을 클릭하면 현재 디코딩된 내용을 csv 또는 txt 파일로 내보내도록 선택할 수 있습니다. 이는 matlab에 대한 입력과 같은 더 많은 타사 데이터 처리에 편리합니다. 분석을 위해 또는 다른 소프트웨어를 위한 데이터 입력으로.

3.5.3. 디코딩 데이터 검색

목록 표시의 또 다른 장점은 디코딩된 결과를 특정 작업 또는 특정 바이트의 데이터 검색과 같은 결과 검색을 위한 문자열로 사용할 수 있다는 것입니다.

검색 상자에 검색하려는 키워드를 입력한 다음 앞으로/뒤로 버튼을 눌러 키워드가 포함된 디코딩된 내용을 찾으면 파형 인터페이스가 분석을 위해 적절한 위치로 이동합니다. 세그먼트 결과를 구문 분석하는 경우 체크리스트에서 행을 클릭할 수 있으며 앞으로/뒤로 버튼은 처음부터 시작하는 대신 이 동작으로 시작하는 이전 및 다음 일치 항목을 찾습니다.

UART 프로토콜의 경우 DSView는 다중 행 데이터 검색도 지원합니다. 데이터에 나타나는 일부 연속 문자열 결과를 찾는 데 사용할 수 있습니다. 그림 3-29에서 볼 수 있듯이 여러 줄 데이터 검색은 "-" 문자로 여러 키워드를 연결합니다.

3.5.4. 파형 검색

DSView는 디코딩된 결과의 검색뿐만 아니라 원본 파형의 검색 기능도 지원합니다. 파형은 많은 장면에서 빠르게 찾을 수 있습니다. 예를 들어 파형이 갑자기 전송되는 경우 유휴 기간이 비교적 길기 때문에 동시에 여러 번 전송되는 자세한 파형을 볼 수 없으므로 파형 검색을 사용하고 다음 파형 점프 후 즉시 다음 파형 점프로 건너뛸 수 있습니다. 확대 비율이 변경되지 않았는지 확인하기 위해 이전 순간에 파형을 확인합니다.

"검색" 도구 모음을 확인하면 소프트웨어 창 아래에 검색 상자가 나타납니다. 검색 상자를 클릭하고 검색 설정 창을 띄우고 채널 점프 에지를 결정하면 기준에 맞는 파형을 좌우로 검색할 수 있습니다. 키. 동시에 검색 커서를 수동으로 이동하여 검색이 시작되는 위치를 결정할 수도 있습니다.

검색 선택 시 "S" 태그가 있는 커서가 나타나고 초기 상태는 회색이며, 좌/우를 클릭하여 검색 조건에 맞는 파형을 찾으면 커서가 파란색으로 변하며 검색 위치로 자동 이동 . "S" 커서를 수동으로 이동하면 커서가 다시 회색으로 바뀝니다.

3.5.5. 커서 사용법

DSView는 광범위한 커서 작업을 지원하므로 커서로 타이밍 측정을 할 수 있을 뿐만 아니라 커서로 특수 파형을 표시하고 추적할 수 있습니다. 파형이 유휴 상태이거나 간격이 길 때 관심 있는 각 위치에 커서를 삽입할 수 있으며 관심 있는 파형으로 이동하려는 경우 눈금자 영역을 마우스 오른쪽 버튼으로 클릭한 다음 해당 커서 위치로 점프할 수 있는 점프하려는 커서 시퀀스 번호.

커서를 이동하려면 커서 근처에서 마우스를 이동하기만 하면 됩니다. 커서가 굵게 표시되면 마우스 왼쪽 버튼을 클릭하여 선택하고 커서가 마우스 움직임을 따라 이동하여 위치를 결정하고 다시 왼쪽 버튼을 클릭하면 됩니다. 커서를 해제합니다. 커서가 특정 채널 파형의 점프 에지 중 하나에 스냅되도록 하려면 점프 에지 근처에서 마우스를 움직이기만 하면 됩니다. 그러면 커서가 자동으로 점프 에지에 스냅됩니다.

3.5.6. 마우스 측정

커서 기반 측정 외에도 DSView는 보다 편리한 마우스 측정을 제공합니다. 예를 들어, 현재 펄스 폭, 주기, 듀티 사이클 및 주파수 측정(변화하는 펄스 위에 마우스를 놓기만 하면 됨); 에지 수 측정(파형의 시작 및 끝 위치를 클릭하면 이 간격의 점프 에지가 자동으로 계산됩니다.) 및 가장자리 거리 측정(시작 가장자리를 마우스로 클릭하고 끝 가장자리로 이동).

그림 3-31과 같이 시작 전환 가장자리 위치로 마우스를 이동하고 마우스 왼쪽 버튼을 클릭하여 시작 전환 가장자리를 선택하고 끝 전환 가장자리 위치로 마우스를 이동하고 두 가장자리 사이의 거리 전환 에지(지속시간/샘플링 간격 포인트)가 표시되고 마우스 왼쪽 버튼을 다시 클릭하면 측정이 완료됩니다.

4. 자주 묻는 질문

4.1. 알 수 없는 전송 속도 확인

UART 파형의 전송 속도를 미리 얻을 수 없는 경우 획득한 파형으로 실제 전송 속도를 추측할 수도 있습니다. DSView는 임의 파형 문자열의 전송 속도 매개변수를 추측하기 위해 "비트 전송률 추측" 디코더를 제공합니다. 비트 전송률 추측의 원리는 파형에서 가장 좁은 펄스 폭을 차례로 비트의 파형 폭으로 찾은 다음 그 역수를 보드율로 계산하는 것입니다. 따라서 여러 결과가 있을 수 있으므로 해당 펄스가 적절한 펄스 폭인지 관찰한 다음 최대 전송 속도 결과를 선택하기만 하면 됩니다. 이것은 그림 4-1에 나와 있습니다.

전송 속도를 얻으면 UART 디코더에 대한 옵션으로 설정할 수 있습니다. UART 프로토콜은 각 시작 비트를 재동기화하기 때문에 전송 속도의 오류는 데이터의 한 프레임에만 누적되며 한 프레임 내의 오류가 비트 비트의 경계를 초과하지 않는 한 올바른 디코딩 결과를 얻을 수 있습니다. .

물론, 파형에 단일 비트 폭의 펄스가 없는 것과 같이 파형의 작은 샘플이 있는 경우 추측된 전송 속도가 정확하지 않아 디코딩 결과가 올바르지 않을 수 있습니다. 프로토콜을 따르지 않는 파형이 있는 경우 UART 디코더는 그림 4-2와 같이 프레임 오류와 같은 가능한 오류 힌트도 제공합니다. 숙련된 엔지니어는 올바른 디코딩 결과를 얻기 위해 파형 및 디코딩 결과를 관찰하여 전송 속도를 조정할 수 있습니다.

4.2. 반신뢰 신호 디코딩

이전 섹션에서 UART 프로토콜은 서로 다른 물리적 신호로 전송될 수 있으며 일부 물리적 계층 신호는 RS232 또는 RS485 차동 신호. 수집한 신호가 반전되면 DSView의 UART 디코더도 올바른 디코딩 결과를 얻도록 설정할 수 있습니다.

사용자는 "Invert Signal ?"만 교체하면 됩니다. UART 디코더 설정에서 옵션이 "예"로 설정되어 있습니다. 역방향 신호의 디코딩은 다음 그림과 같습니다.

4.3. 다중 그룹 UART 통신 디코딩

DSView의 UART 디코더는 단일 채널 접근 방식으로 의도적으로 설계되어 디코딩 시 다중 통신을 위한 임의 채널 설정을 용이하게 합니다. 예를 들어 TX 신호와 RX 신호가 모두 있는 전이중 UART 통신의 경우 TX 및 RX 디코딩에 해당하는 두 개의 UART 디코더만 추가하면 됩니다.

아래 그림과 같이 XNUMX개의 UART 신호를 동시에 디코딩한 경우입니다.

4.4. 시작 위치로 인한 디코딩 오류

모든 통신 프로세스에서 장치는 통신 내용을 올바르게 수신하기 위해, 즉 프로토콜 프레임을 올바르게 식별하고 분석하기 위해 초기 상태에서 시작해야 합니다. 로직 분석기의 경우에도 마찬가지입니다. 신호 수집이 데이터 프레임의 중간에서 정확히 시작되면 잘못된 시작 위치로 인해 잘못된 디코딩 결과가 나올 수 있습니다. 다음 그림과 같이 장치는 "DreamSourceLab" 문자열을 계속 전송하지만 첫 번째 캡처 위치가 데이터 프레임의 정확히 중간에 있기 때문에 첫 번째 파형의 디코딩이 깨져 보입니다.

데이터의 잘못된 디코딩을 피하기 위해 디코딩의 시작 위치와 끝 위치를 인위적으로 설정할 수 있으므로 잘린 데이터 프레임으로 인한 디코딩 오류를 방지할 수 있습니다. 디코딩 위치는 모든 커서의 지정된 위치일 수 있으며 작업은 해당 커서를 삽입한 후 디코더 설정에서 해당 시작 및 종료 위치를 설정하기만 하면 됩니다. 다음 그림과 같이 시작 위치를 설정하면 첫 번째 잘린 파형의 잘못된 디코딩을 방지할 수 있습니다.

5. 고급 분석

5.1. 다계층 프로토콜 파싱

UART는 매우 널리 사용되는 기본 프로토콜이며 실제 응용 프로그램에서 사용되는 많은 전송 프로토콜은 UART를 기반으로 확장됩니다. 예: DMX512, LIN, MIDI 및 Modbus 등의 기본 통신 기반은 UART 프로토콜입니다. 、

이 기능에 따라 DSView는 다층 프로토콜의 구문 분석 스택도 지원합니다. 복잡한 프로토콜의 디코더를 추가하면 DSView는 최상위 수준에서 전체 프로토콜 스택을 자동으로 구축하여 디코딩 결과를 더 풍부하고 완벽하게 만들어 사용자의 심층 분석 및 프로토콜 이해에 매우 유용합니다.

DSView가 다계층 프로토콜을 분석하는 프로세스를 이해하기 위해 Modbus RTU를 예로 들어 보겠습니다. Modbus RTU는 UART 바이트 전송 기능을 기반으로 각 바이트의 구체적인 의미를 구체적으로 지정하여 여러 UART 프로토콜 프레임을 결합하여 Modbus의 프레임 구조를 구성합니다. 이것은 다음 그림에 나와 있습니다.

이러한 프로토콜 디코딩에 DSView를 사용할 때 프로토콜 검색 상자에 해당 프로토콜을 입력하고 추가하기만 하면 됩니다. DSView는 다음 그림과 같이 전체 스태킹 프로토콜에 대한 설정 페이지를 자동으로 구축하고 사용자는 해당 설정을 할 수 있습니다.

다음 그림과 같이 Modbus RTU의 디코딩 결과에서 프로토콜의 스택 구조를 명확하게 볼 수 있습니다. 각 프레임의 Modbus는 8개의 UART 바이트 프레임으로 구성됩니다. Modbus 프레임의 내용에는 특정 의미를 나타내는 명확한 설명도 있습니다. 전송 오류가 발생하면 이러한 디코딩 결과는 오류의 위치와 오류의 원인(기본 UART의 문제인지 Modbus 프로토콜 계층의 문제인지)을 매우 명확하게 찾을 수 있습니다. 기본 세부 정보를 보고 싶지 않은 경우 디코더의 설정 페이지에서 해당 디코딩된 콘텐츠를 숨길 수 있습니다.

코멘트를 가장 먼저하십시오

댓글을 남겨주세요.

귀하의 이메일 주소는 공개되지 않습니다.


*