어플리케이션 노트

디지털 회로 검증

Moku:Go 로직 분석기를 사용한 스트레스 테스트 로직 IC

대량 생산 전 적절한 하드웨어 검증 및 스트레스 테스트를 거치면 리콜 및 재설계 비용을 수백만 달러 절약할 수 있습니다. 이 애플리케이션 노트에서는 Moku:Go 로직 분석기/패턴 생성기를 이용하여 입력을 토글하고 해당 출력을 기록하여 디지털 4비트 가산기를 검증합니다. 클럭 속도는 증가하는 클럭 진동수로 하드웨어의 스트레스 테스트를 위해 변경되어 사용자에게 오류에 대한 인사이트를 제공합니다.

인쇄 가능한 버전 다운로드


Moku:Go

Moku:Go는 아날로그 입력 2개, 아날로그 출력 2개, 디지털 I/O 핀 16개 및 통합 전원 공급 장치 옵션을 갖춘 하나의 고성능 장치에 13개 이상의 실험실 장비를 결합합니다.

개요

모든 디지털 회로의 중심에는 전기 신호를 켜거나 끄는 데 사용되는 기본 반도체 장치인 트랜지스터가 있습니다. 이러한 스위치의 다양한 배열은 컴퓨팅의 기본 요소를 구성하는 논리 연산자로 대체됩니다. 가장 복잡한 통합 칩(IC)도 이러한 기본 구성 요소를 사용하여 구성할 수 있습니다. 본 애플리케이션 노트에서는 다양한 논리 게이트를 사용하여 4비트 가산기 회로를 구성하여 디지털 회로 설계 과정을 따라가볼 것입니다. 디자인 검증은 Moku:Go 로직 분석기/패턴 생성기를 활용하여 이루어집니다. 그 후, Moku:Go MATLAB API를 활용하여 검증 프로세스를 확장 및 자동화하고 스트레스 테스트를 실행하여 회로의 최대 클럭 속도를 결정합니다.

회로 설계

4비트 가산기는 4개의 완전한 1비트 가산기 회로로 구성되었습니다. 각 가산기에는 2개의 데이터 입력 An과 Bn이 포함되어 있고 하나는 입력 Cin을 전달합니다. 논리 연산 후에 입력 Sn의 합을 생성하고 출력 Cout를 전달합니다. 논리 게이트의 경우 XOR, AND, OR 게이트에 3개의 기성 논리 집적 회로(IC) 74LS86, 74LS08 및 74LS32가 사용되었습니다. 로직 IC와 로직 게이트 사이의 와이어 연결에 대한 자세한 레이아웃은 각각 그림 1(a)와 (b)에서 확인할 수 있습니다.

그림 1: (a) AND, XOR 및 OR 게이트로 사용된 논리 IC. (b) 1비트 전가산기를 구축하는 논리.

4비트 가산기 회로는 하위 유효 숫자 가산기의 Cout 포트에서 상위 유효 숫자 가산기의 Cin 포트로 연결하는 방식으로 구성됩니다. 최하위 유효 숫자의 Cin은 최하 상수를 위해서 남겨뒀습니다. 최상위 유효 숫자 (C3) 의 Cout는 전체 시스템의 최상위 유효 숫자를 나타내기 위하여 사용되었습니다. 4비트 가산기는 A0-3, B0-3 포트를 통해 두 개의 4비트 숫자를 인풋받고 그 결과를 S0-3핀으로 전달합니다. 만약 두 인풋이 모두 0b1111이었다면 C3은 하이 스테이트로, 아니라면 로우 스테이트가 됩니다. 그림 2는 회로도(a)와 브레드보드에 구축된 실제 회로를 보여줍니다.

그림 2: (a) 4비트 가산기의 회로도 및 (b) 브레드보드 레이아웃.

Moku:Go의 로직 분석기를 사용한 시스템 검증

기기 연결

회로를 검증하기 위해 4비트 가산기의 입력과 출력을 Moku:Go 16핀 디지털 I/O에 연결했습니다. 자세한 연결 및 핀아웃 맵은 그림 3에 나와 있습니다.

그림 3: Moku:Go 디지털 I/O와 4비트 가산기 간의 자세한 연결 맵.

단일 입력 테스트

먼저 입력 레벨을 수동으로 전환하여 회로를 테스트했습니다. 그림 4에서 로직 분석기의 출력(핀 0~8)은 0b8(A) 및 0b0101(b)로 설정되었으며 이는 10진수에서 5 + 4로 변환됩니다. 핀 9~12에서 십진수 9에 해당하는 0b1001을 읽습니다. 핀 10의 수행 신호가 낮았으며 이는 오버플로가 없음을 나타냅니다.

그림 4: 먼저 입력 논리 레벨을 수동으로 전환하여 회로를 테스트했습니다.

무작위 패턴 및 스트레스 테스트

테스트 세트를 확장하고 한계를 파악하기 위해 Moku:Go 로직 분석기의 무작위 패턴 생성 기능을 활용했습니다. 길이가 1024인 무작위 패턴이 62.5Hz에서 62.5MHz까지의 가변 클럭 진동수에서 생성되었습니다. 무작위로 생성된 출력 패턴과 입력 패턴을 모두 MATLAB으로 기록하고 분석했습니다.

그림 5: 무작위로 생성된 패턴을 사용하여 회로의 스트레스 테스트를 수행했습니다.

자동화된 검증을 위한 MATLAB 스크립트

자동화된 검증 스크립트에서 각 가산기 내 논리 게이트의 동작은 MATLAB 내장 논리 연산자를 사용하여 명시적으로 시뮬레이션되었습니다. 다음 코드 조각은 PIN 1과 2에서 무작위로 생성된 신호를 읽고 Full Adder1(FA1)에 대한 S0와 C1의 예상 출력값을 계산합니다.

%%%FA1
for
 i = 1:n
    S0(i) = xor(xor(data(i,2),data(i,3)),Cin);
    C1(i) = or(and(Cin,xor(data(i,2),data(i,3))),and(data(i,2),data(i,3)));
end

계산된 C1은 다음 FA의 동작을 시뮬레이션하기 위해 다음 코드 블록에서 사용되었습니다.

%%%FA2
for
 i = 1:n
    S1(i) = xor(xor(data(i,4),data(i,5)),C1(i));
    C2(i) = or(and(C1(i),xor(data(i,4),data(i,5))),and(data(i,4),data(i,5)));
end

전체 회로의 최종 히트 레이트는 다음 코드 블록을 통해 계산되었습니다.

hit = 0;

for
 i = 1:n
    if data(i,10)==S3(i) && data(i,11)==S2(i) && data(i,12)==S1(i) && data(i,13)==S0(i)
        hit = hit +1;
    end end
hit_rate = hit/n*100;

클록 진동수의 함수로서 4비트 가산기 회로의 최종 히트 레이트은 그림 6에 표시되어 있습니다. 히트 레이트는 y축에 (적중률 %)로 표시되었으며 클록 진동수는 헤르츠(Hz) 단위로 측정되었습니다. x축에 표시되었습니다. 회로는 1.25Mhz까지 안정적이었습니다. 클록 속도가 더 증가함에 따라 성능이 크게 저하되는 것이 관찰되었습니다. 우리는 회로가 31.25Hz – 1.25MHz의 진동수 사이의 안정적인 조건에서 작동한다는 결론을 내릴 수 있습니다.

그림 6: 클록 진동수에 따른 4비트 가산기의 적중률.

결론

튜토리얼의 두 번째 부분에서는 MathWorks의 Simulink 및 HDL Coder를 활용하여 Moku:Pro에서 DSP 모델을 구축, 검증 및 배포하는 방법을 다루었습니다. MATLAB만의 접근 방식과 비교하여 Simulink는 DSP 라이브러리를 통해 DSP를 설계하고 처음부터 고정 소수점 모델을 사용하여 모델을 구축할 수 있는 옵션을 제공합니다. 복잡한 DSP 시스템을 구축하는 데 권장됩니다.


질문이 있으시거나 인쇄가능 버전을 필요로 하십니까?

support@liquidinstruments.com로 문의 부탁드립니다.