본문 바로가기
후즈대디 후즈대디

SPI 클럭 링잉을 줄이는 직렬 저항 값, 0Ω에서 220Ω까지 파형 비교

후즈대디 읽는 시간 약 28분

SPI 플래시 클럭선의 직렬 저항을 몇 Ω으로 할지, 저항별 ngspice 파형과 W25Q128JV 기준 읽기 타이밍 계산으로 비교합니다.

SPI 클럭 직렬 저항 0Ω 22Ω 47Ω 100Ω 220Ω에 따른 플래시 클럭 핀 전압 ngspice 시뮬레이션
직접 시뮬레이션(ngspice): 드라이버 25Ω, 선로 50Ω·지연 1ns(가정), 입력 용량 6pF에서 직렬 저항만 바꾼 클럭 상승 파형

보드에서 SPI 플래시를 읽는데 ID가 어떤 때는 맞고 어떤 때는 틀리거나, 덤프를 두 번 뜬 파일이 서로 다르게 나올 때가 있습니다. 클럭선을 스코프로 보면 에지 위에 뾰족한 산이 서 있고, 그 옆에 붙은 작은 칩 저항이 눈에 들어옵니다. 이 저항을 떼고 점퍼로 이어도 되는지, 없어진 자리에 몇 Ω을 달아야 하는지, 값이 크면 안전한 쪽인지 판단이 서지 않으면 수리가 거기서 멈춥니다.

이 글에서는 그 값을 숫자로 정해 봅니다. 클럭 입력의 기준은 3.3V 플래시인 Winbond W25Q128JV 데이터시트(Revision F)에서 가져왔고, 저항을 바꾼 파형은 ngspice로 세 조건에서 돌렸습니다. 보드 위의 짧은 배선, 프로그래머 클립과 긴 선을 물린 상태, 부하가 무거운 50MHz 클럭입니다. 여기에 읽기 타이밍 계산을 더해, 저항이 커질 때 클럭 상한이 얼마나 내려가는지도 표로 만들었습니다.

드라이버 출력 저항, 선로 임피던스와 지연, 클립 용량은 측정값이 아니라 제가 정한 가정값입니다. 실제 보드와 숫자가 똑같이 나오지는 않으니, 숫자 자체보다 저항을 바꿀 때 파형이 어느 방향으로 움직이는지를 읽어 주세요.

판단 기준이 되는 데이터시트 값

저항값을 고르려면 먼저 클럭 핀이 무엇을 요구하는지 알아야 합니다. W25Q128JV 데이터시트에서 이 글에 쓰는 값만 뽑았습니다. 다른 플래시를 다룬다면 해당 부품의 데이터시트 값으로 바꿔 넣어야 합니다.

항목데이터시트 값VCC 3.3V 환산
입력 High 전압 VIH최소 VCC × 0.72.31V
입력 Low 전압 VIL최대 VCC × 0.30.99V
핀 전압 절대 최대 정격VCC + 0.4V3.7V
20ns 미만 과도 전압 정격VCC + 2.0V5.3V
입력 용량 CIN최대 6pF시뮬레이션의 부하로 사용
클럭 슬루(tCLCH)최소 0.1V/ns계산 비교에 사용
출력 유효 시간 tCLQV최대 6ns계산에 사용
클럭 주파수Read Data(03h) 최대 50MHz, 그 외 명령 최대 133MHz(3.0~3.6V)시뮬레이션 조건

여기서 눈여겨볼 것은 두 줄입니다. 클럭이 VIH를 넘겨 High로 인정되어야 하고, 한번 High가 된 뒤 링잉으로 그 아래까지 되돌아가지 않는 편이 안전합니다. 저항이 너무 작으면 되돌림이, 너무 크면 VIH까지 못 올라가는 문제가 생깁니다. 두 문제 사이의 구간을 찾는 것이 이번 계산의 목적입니다.

출발값은 선로 임피던스에서 드라이버 저항을 뺀 값

직렬 종단(source termination)은 드라이버 쪽에 저항을 달아, 부하 끝에서 돌아온 반사가 드라이버에서 다시 튕기지 않게 하는 방식입니다. Renesas(구 ICS)의 LVCMOS 종단 앱노트는 출력 저항 약 7Ω 드라이버와 50Ω 선로에서 RS = ZO − RO = 43Ω으로 계산한 예를 보여 줍니다. 드라이버 출력 저항이 선로 임피던스보다 작으면 이 방식을 쓸 수 있고, 저항은 드라이버 출력 쪽에 놓습니다.

SPI 마스터의 출력 저항은 칩과 구동 세기 설정에 따라 다르므로, 아래 표처럼 범위로 놓고 계산해 봅니다. 직접 계산하면 값이 5Ω에서 45Ω까지 벌어집니다. 그래서 공식 하나로 값을 확정하기보다 후보 범위를 좁히는 데 쓰는 것이 맞습니다.

선로 Z0 \ 드라이버15Ω25Ω35Ω
40Ω25Ω15Ω5Ω
50Ω35Ω25Ω15Ω
60Ω45Ω35Ω25Ω

저항값에 따라 파형이 어떻게 달라지나

직접 시뮬레이션: 직렬 저항 0Ω에서 220Ω까지, 짧은 배선의 클럭 에지

맨 위 그래프의 조건입니다. 3.3V 펄스 전원(상승 1ns)에 드라이버 저항 25Ω을 넣고, 직렬 저항을 거쳐 50Ω·지연 1ns 선로로 보낸 뒤, 끝에 W25Q128JV의 입력 용량 최대값 6pF를 달았습니다. 저항값만 7가지로 바꿨습니다. 이 조건의 계산상 출발값은 25Ω이고, 값이 그 자리에 가까운 22Ω과 33Ω에서 무슨 일이 생기는지가 관심사입니다.

직렬 저항최고 전압첫 산 뒤 되돌림 최저VIH 2.31V 통과 시각10%→90% 상승
0Ω4.46V2.91V3.80ns0.72ns
10Ω3.91V3.19V3.88ns0.80ns
22Ω3.40V3.30V3.97ns0.97ns
33Ω3.30V되돌림 없음4.05ns1.40ns
47Ω3.30V되돌림 없음4.21ns3.03ns
100Ω3.30V되돌림 없음6.33ns5.93ns
220Ω3.29V되돌림 없음9.69ns13.17ns

시뮬레이션 결과 0Ω에서는 클럭 핀이 4.46V까지 치솟습니다. 절대 최대 정격 3.7V를 넘지만 20ns 미만 과도 정격 5.3V 안쪽이고, 되돌림도 2.91V에서 멈춰 VIH 2.31V 위에 있습니다. 즉 이 짧은 배선에서는 0Ω 점퍼로도 일단 읽힐 수 있습니다. 다만 매 클럭마다 절대 최대 정격을 넘는 전압을 핀에 주는 셈이라 수리 후 상태로 남길 일은 아닙니다.

시뮬레이션 결과 22Ω에서는 최고 전압이 3.40V로 내려오고, 33Ω과 47Ω에서는 3.30V 위로 넘어가지 않습니다. 반대로 100Ω부터는 다른 현상이 나타납니다. 그래프의 보라색 선을 보면 파형이 VIH 아래 전압에서 한 번 멈췄다가, 반사가 돌아온 뒤에야 올라갑니다. 시뮬레이션 결과 VIH 통과 시각이 47Ω의 4.21ns에서 100Ω의 6.33ns로 크게 늦어지는 이유가 이 계단입니다. 문턱 근처에 머무는 계단은 잡음에 약하므로, 파형에서 이 모양이 보이면 저항이 큰 쪽을 의심합니다.

* SPI SCK rising edge: series R sweep. driver 25ohm, line 50ohm 1ns (assumed), load 6pF
Vd0 d0 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro0 d0 a0 25
Rs0 a0 b0 0.001
T0 b0 0 r0 0 Z0=50 TD=1n
C0 r0 0 6p
Vd10 d10 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro10 d10 a10 25
Rs10 a10 b10 10
T10 b10 0 r10 0 Z0=50 TD=1n
C10 r10 0 6p
Vd22 d22 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro22 d22 a22 25
Rs22 a22 b22 22
T22 b22 0 r22 0 Z0=50 TD=1n
C22 r22 0 6p
Vd33 d33 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro33 d33 a33 25
Rs33 a33 b33 33
T33 b33 0 r33 0 Z0=50 TD=1n
C33 r33 0 6p
Vd47 d47 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro47 d47 a47 25
Rs47 a47 b47 47
T47 b47 0 r47 0 Z0=50 TD=1n
C47 r47 0 6p
Vd100 d100 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro100 d100 a100 25
Rs100 a100 b100 100
T100 b100 0 r100 0 Z0=50 TD=1n
C100 r100 0 6p
Vd220 d220 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro220 d220 a220 25
Rs220 a220 b220 220
T220 b220 0 r220 0 Z0=50 TD=1n
C220 r220 0 6p
.tran 0.01n 40n
.meas tran vmax0 MAX v(r0) from=2n to=40n
.meas tran vmin0 MIN v(r0) from=2n to=40n
.meas tran tvih0 WHEN v(r0)=2.31 RISE=1
.meas tran t10_0 WHEN v(r0)=0.33 RISE=1
.meas tran t90_0 WHEN v(r0)=2.97 RISE=1
.meas tran dip0 MIN v(r0) from=7n to=12n
.meas tran vmax10 MAX v(r10) from=2n to=40n
.meas tran vmin10 MIN v(r10) from=2n to=40n
.meas tran tvih10 WHEN v(r10)=2.31 RISE=1
.meas tran t10_10 WHEN v(r10)=0.33 RISE=1
.meas tran t90_10 WHEN v(r10)=2.97 RISE=1
.meas tran dip10 MIN v(r10) from=7n to=12n
.meas tran vmax22 MAX v(r22) from=2n to=40n
.meas tran vmin22 MIN v(r22) from=2n to=40n
.meas tran tvih22 WHEN v(r22)=2.31 RISE=1
.meas tran t10_22 WHEN v(r22)=0.33 RISE=1
.meas tran t90_22 WHEN v(r22)=2.97 RISE=1
.meas tran dip22 MIN v(r22) from=7n to=12n
.meas tran vmax33 MAX v(r33) from=2n to=40n
.meas tran vmin33 MIN v(r33) from=2n to=40n
.meas tran tvih33 WHEN v(r33)=2.31 RISE=1
.meas tran t10_33 WHEN v(r33)=0.33 RISE=1
.meas tran t90_33 WHEN v(r33)=2.97 RISE=1
.meas tran vmax47 MAX v(r47) from=2n to=40n
.meas tran vmin47 MIN v(r47) from=2n to=40n
.meas tran tvih47 WHEN v(r47)=2.31 RISE=1
.meas tran t10_47 WHEN v(r47)=0.33 RISE=1
.meas tran t90_47 WHEN v(r47)=2.97 RISE=1
.meas tran vmax100 MAX v(r100) from=2n to=40n
.meas tran vmin100 MIN v(r100) from=2n to=40n
.meas tran tvih100 WHEN v(r100)=2.31 RISE=1
.meas tran t10_100 WHEN v(r100)=0.33 RISE=1
.meas tran t90_100 WHEN v(r100)=2.97 RISE=1
.meas tran vmax220 MAX v(r220) from=2n to=40n
.meas tran vmin220 MIN v(r220) from=2n to=40n
.meas tran tvih220 WHEN v(r220)=2.31 RISE=1
.meas tran t10_220 WHEN v(r220)=0.33 RISE=1
.meas tran t90_220 WHEN v(r220)=2.97 RISE=1
  • 에지 위 산이 크게 보일 때: 직렬 저항 자리가 점퍼이거나 값이 작은지 먼저 봅니다. 도면이 없으면 같은 보드의 다른 SPI 선 저항과 비교합니다.
  • 에지 중간에 계단이 보일 때: 저항값이 너무 큰 쪽입니다. 저항이 열화해 값이 올랐을 수 있으니 전원을 끄고 측정합니다.
  • 값을 모를 때: 이 조건에서는 22~47Ω 구간이 과전압과 계단을 함께 피했습니다. 드라이버와 선로가 다르면 구간도 달라지므로 교체 후 파형으로 확인합니다.

이 모델의 한계도 분명합니다. 드라이버를 고정 저항으로 놓았지만 실제 CMOS 출력은 전압에 따라 저항이 변하고, 핀의 ESD 다이오드가 과전압을 눌러 주는 효과도 빠져 있습니다. 실측에서는 0Ω의 산이 이 값보다 낮게 잘릴 수 있습니다.

프로그래머 클립을 물리면 조건이 바뀝니다

직접 시뮬레이션: 클립과 긴 선을 단 상태의 클럭

보드에 달린 채로 플래시를 읽을 때는 집게 클립과 점퍼선이 추가됩니다. 이 상황을 선로 90Ω·지연 4ns, 부하 31pF(입력 6pF에 클립과 배선 25pF 가정)로 놓고, 드라이버 25Ω은 그대로 둔 채 저항을 바꿨습니다. 임피던스와 용량은 측정한 값이 아니라 느슨한 점퍼선을 가정해 정한 값입니다.

프로그래머 클립과 긴 선을 연결했을 때 직렬 저항별 클럭 파형 ngspice 시뮬레이션, 0Ω에서 큰 링잉
직접 시뮬레이션(ngspice): 선로 90Ω·지연 4ns, 부하 31pF, 드라이버 25Ω(모두 가정)에서 직렬 저항별 클럭 파형
직렬 저항최고 전압첫 산 뒤 되돌림 최저VIH 2.31V 통과 시각
0Ω5.60V2.13V8.17ns
22Ω4.48V2.99V8.64ns
47Ω3.64V3.28V9.29ns
100Ω3.30V되돌림 없음11.56ns
220Ω3.23V(70ns 시점, 아직 상승 중)되돌림 없음22.70ns

시뮬레이션 결과 0Ω에서는 최고 전압이 5.60V로 과도 정격 5.3V까지 넘고, 되돌림 최저 2.13V는 VIH 2.31V 아래로 내려갑니다. VIL 0.99V까지 떨어지지는 않으므로 이 숫자만으로 클럭이 두 번 세어진다고 단정할 수는 없습니다. 다만 High로 보장되는 구간을 벗어난 상태이니, 읽을 때마다 결과가 바뀌는 증상과 맞으면 먼저 의심해 볼 만합니다.

시뮬레이션 결과 47Ω에서는 최고 3.64V, 되돌림 최저 3.28V로 VIH 위에 머물고, 100Ω에서는 최고 3.30V로 산이 사라집니다. 앞의 짧은 배선에서는 22~47Ω이 좋았지만, 선이 길어지면 좋은 구간이 큰 쪽으로 옮겨 갑니다. 보드에 맞는 저항값과 클립을 물렸을 때 맞는 값은 같지 않다는 뜻입니다.

* In-circuit clip lead: line 90ohm 4ns (assumed), load 6pF+25pF clip (assumed)
Vd0 d0 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro0 d0 a0 25
Rs0 a0 b0 0.001
T0 b0 0 r0 0 Z0=90 TD=4n
C0 r0 0 31p
Vd22 d22 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro22 d22 a22 25
Rs22 a22 b22 22
T22 b22 0 r22 0 Z0=90 TD=4n
C22 r22 0 31p
Vd47 d47 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro47 d47 a47 25
Rs47 a47 b47 47
T47 b47 0 r47 0 Z0=90 TD=4n
C47 r47 0 31p
Vd100 d100 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro100 d100 a100 25
Rs100 a100 b100 100
T100 b100 0 r100 0 Z0=90 TD=4n
C100 r100 0 31p
Vd220 d220 0 PULSE(0 3.3 2n 1n 1n 70n 150n)
Ro220 d220 a220 25
Rs220 a220 b220 220
T220 b220 0 r220 0 Z0=90 TD=4n
C220 r220 0 31p
.tran 0.01n 70n
.meas tran vmax0 MAX v(r0) from=2n to=70n
.meas tran vmin0 MIN v(r0) from=2n to=70n
.meas tran tvih0 WHEN v(r0)=2.31 RISE=1
.meas tran t10_0 WHEN v(r0)=0.33 RISE=1
.meas tran t90_0 WHEN v(r0)=2.97 RISE=1
.meas tran dip0 MIN v(r0) from=20n to=35n
.meas tran vmax22 MAX v(r22) from=2n to=70n
.meas tran vmin22 MIN v(r22) from=2n to=70n
.meas tran tvih22 WHEN v(r22)=2.31 RISE=1
.meas tran t10_22 WHEN v(r22)=0.33 RISE=1
.meas tran t90_22 WHEN v(r22)=2.97 RISE=1
.meas tran dip22 MIN v(r22) from=20n to=35n
.meas tran vmax47 MAX v(r47) from=2n to=70n
.meas tran vmin47 MIN v(r47) from=2n to=70n
.meas tran tvih47 WHEN v(r47)=2.31 RISE=1
.meas tran t10_47 WHEN v(r47)=0.33 RISE=1
.meas tran t90_47 WHEN v(r47)=2.97 RISE=1
.meas tran dip47 MIN v(r47) from=20n to=35n
.meas tran vmax100 MAX v(r100) from=2n to=70n
.meas tran vmin100 MIN v(r100) from=2n to=70n
.meas tran tvih100 WHEN v(r100)=2.31 RISE=1
.meas tran t10_100 WHEN v(r100)=0.33 RISE=1
.meas tran t90_100 WHEN v(r100)=2.97 RISE=1
.meas tran vmax220 MAX v(r220) from=2n to=70n
.meas tran vmin220 MIN v(r220) from=2n to=70n
.meas tran tvih220 WHEN v(r220)=2.31 RISE=1
.meas tran t10_220 WHEN v(r220)=0.33 RISE=1
.meas tran t90_220 WHEN v(r220)=2.97 RISE=1
  • 클립으로 읽을 때만 불안정하면: 플래시나 저항을 갈기 전에 선을 줄이고 프로그래머의 클럭을 낮춰 봅니다. 증상이 사라지면 부품보다 접속 조건이 원인일 수 있습니다.
  • 덤프 검증: 같은 내용을 두 번 이상 읽어 파일을 비교한 뒤에 쓰기 작업으로 넘어갑니다.
  • 전원: 노트북은 어댑터와 배터리를 분리한 뒤 클립을 물립니다. 클립 전원이 보드의 다른 회로까지 먹이면 레일이 처질 수 있으니 플래시 VCC 전압도 함께 확인합니다.

이 모델은 클립과 점퍼선을 균일한 선로 하나로 단순화했습니다. 실제 점퍼선은 위치마다 임피던스가 다르고, 옆 선과의 결합과 접지 귀로의 길이도 파형을 바꿉니다. 그 영향은 이 그래프에 없습니다. 측정할 때 접지 집게가 만드는 가짜 링잉은 오실로스코프 사용법 글에 따로 시뮬레이션해 두었으니, 산을 보고 판단하기 전에 프로브 접지부터 짧게 만듭니다.

저항을 키우면 무엇을 잃나

직접 계산: 직렬 저항별 읽기 클럭 상한

링잉만 보면 저항은 클수록 좋아 보이지만, 읽기에서는 시간을 씁니다. 플래시는 클럭 하강 뒤에 데이터를 내고 마스터가 다음 상승에서 읽는다면, 쓸 수 있는 시간은 반주기입니다. 그 안에 클럭이 플래시까지 가고, 플래시가 출력을 내고, 데이터가 돌아와 마스터의 셋업을 채워야 합니다. 식은 다음과 같습니다.

반주기 ≥ 클럭 지연 + tCLQV + MISO 복귀 지연 + 마스터 셋업

클럭 지연은 첫 시뮬레이션의 VIH 통과 시각에서 드라이버 펄스 중간 시각 2.5ns를 뺀 값입니다. 엄밀히는 하강 에지를 재야 하지만 회로가 대칭이라 상승 값으로 대신했습니다. tCLQV는 데이터시트 최대값 6ns, 마스터 셋업은 가정한 대표값 3ns입니다. MISO 복귀 지연은 선로 1ns에 0.69 × (플래시 출력 25Ω + 직렬 저항) × 마스터 입력 10pF를 더했고, 25Ω과 10pF는 가정값이며 MISO에도 같은 저항이 달렸다고 봅니다.

SPI 직렬 저항 0Ω부터 220Ω까지 읽기 최대 클럭을 계산한 막대 도표
직접 계산: 반주기 예산으로 구한 직렬 저항별 읽기 최대 클럭. tCLQV는 W25Q128JV 최대값, 셋업·출력 저항·입력 용량은 가정값
직렬 저항클럭 지연MISO 복귀 지연합계최대 클럭클럭 슬루
0Ω1.30ns1.17ns11.48ns43.6MHz3.65V/ns
10Ω1.38ns1.24ns11.62ns43.0MHz3.28V/ns
22Ω1.47ns1.32ns11.79ns42.4MHz2.73V/ns
33Ω1.55ns1.40ns11.95ns41.8MHz1.88V/ns
47Ω1.71ns1.50ns12.20ns41.0MHz0.87V/ns
100Ω3.83ns1.86ns14.69ns34.0MHz0.45V/ns
220Ω7.19ns2.69ns18.88ns26.5MHz0.20V/ns

직접 계산하면 0Ω에서 47Ω으로 갈 때 잃는 클럭은 2.59MHz뿐이고, 0Ω에서 220Ω까지 가면 17.09MHz가 줄어듭니다. 47Ω 언저리까지는 링잉을 줄이는 대가가 작고, 그 위로는 계단 때문에 지연이 빠르게 늘어납니다. 클럭 슬루는 10%에서 90%까지의 전압 2.64V를 시뮬레이션의 상승 시간으로 나눈 값으로, 직접 계산한 220Ω의 0.20V/ns도 데이터시트 최소 0.1V/ns보다는 큽니다.

  • 저항을 바꾼 뒤 낮은 속도에서만 부팅되면: 값이 크지 않은지, 같은 값이 MISO에도 달렸는지 확인합니다.
  • 표의 상한을 그대로 쓰지 않기: 실제 칩은 샘플 지연을 조절하는 기능이 있을 수 있어 이 식보다 빠르게 돌 수 있습니다. 자기 마스터의 셋업 값과 위상 설정을 넣어 다시 계산합니다.

이 계산은 온도와 전압에 따른 변화, 플래시 출력 측 링잉, 쿼드 모드처럼 데이터선이 여러 개인 경우를 넣지 않았습니다. 저항끼리의 차이를 보는 용도로 쓰고, 절대값으로 믿지 않습니다.

값을 크게 잘못 달았을 때 나타나는 모습

직접 시뮬레이션: 50MHz 클럭에 저항 33Ω에서 1000Ω까지

마지막 조건은 극단적인 경우입니다. 저항을 잘못 읽어 수백 Ω이나 kΩ대 값을 달았거나, 열화로 값이 올라간 상황을 가정합니다. 50MHz(주기 20ns) 클럭, 드라이버 25Ω, 선로 50Ω·지연 1ns, 부하는 W25Q128JV 입력에 다른 소자까지 달렸다고 가정한 30pF입니다. 60ns부터 클럭을 넣고, 파형이 자리 잡은 260~360ns 구간의 최고와 최저를 읽었습니다.

50MHz SPI 클럭에서 직렬 저항 33Ω 100Ω 220Ω 470Ω 1000Ω별 진폭 감소 ngspice 시뮬레이션
직접 시뮬레이션(ngspice): 50MHz 클럭, 드라이버 25Ω·선로 50Ω·지연 1ns·부하 30pF(가정)에서 직렬 저항별 클럭 진폭
직렬 저항High 최고Low 최저진폭RC 근사 진폭판정(VIH 2.31V·VIL 0.99V)
33Ω3.26V0.04V3.23V3.10V여유 있음
100Ω2.80V0.50V2.30V2.19V통과
220Ω2.31V0.99V1.32V1.28V문턱에 걸림
470Ω1.99V1.31V0.67V0.66VHigh·Low 모두 미달
1000Ω1.81V1.46V0.35V0.32VHigh·Low 모두 미달

시뮬레이션 결과 220Ω에서 High 최고 2.31V와 Low 최저 0.99V로 문턱에 정확히 걸리고, 470Ω에서는 High가 1.99V, Low가 1.31V에 머물러 어느 문턱도 넘지 못합니다. 평균 전압 근처에서 작게 흔들릴 뿐이라 클럭으로 인정받을 수 없습니다. 1000Ω에서는 진폭이 0.35V까지 줄어듭니다.

이 숫자는 간단한 식으로 어림할 수 있습니다. 1ns·50Ω 선로의 등가 용량 20pF를 부하 30pF에 더한 50pF와 (25Ω + 직렬 저항)으로 시정수 τ를 구하고, 진폭을 3.3V × tanh(반주기 ÷ 2τ)로 놓습니다. 직접 계산하면 220Ω에서 τ는 12.25ns, 진폭은 1.28V로 시뮬레이션 결과의 1.32V와 가깝습니다. 저항이 커서 선로가 덩어리 용량처럼 보이는 구간에서 쓸 수 있는 어림식이고, 33Ω처럼 작은 값에서는 맞는다고 보기 어렵습니다. 비슷한 RC 어림은 I2C 풀업 저항과 상승 시간 글에서도 다뤘습니다.

* 50MHz SCK with heavy load: line 50ohm 1ns, load 30pF (assumed)
Vd33 d33 0 PULSE(0 3.3 60n 1n 1n 9n 20n)
Ro33 d33 a33 25
Rs33 a33 b33 33
T33 b33 0 r33 0 Z0=50 TD=1n
C33 r33 0 30p
Vd100 d100 0 PULSE(0 3.3 60n 1n 1n 9n 20n)
Ro100 d100 a100 25
Rs100 a100 b100 100
T100 b100 0 r100 0 Z0=50 TD=1n
C100 r100 0 30p
Vd220 d220 0 PULSE(0 3.3 60n 1n 1n 9n 20n)
Ro220 d220 a220 25
Rs220 a220 b220 220
T220 b220 0 r220 0 Z0=50 TD=1n
C220 r220 0 30p
Vd470 d470 0 PULSE(0 3.3 60n 1n 1n 9n 20n)
Ro470 d470 a470 25
Rs470 a470 b470 470
T470 b470 0 r470 0 Z0=50 TD=1n
C470 r470 0 30p
Vd1000 d1000 0 PULSE(0 3.3 60n 1n 1n 9n 20n)
Ro1000 d1000 a1000 25
Rs1000 a1000 b1000 1000
T1000 b1000 0 r1000 0 Z0=50 TD=1n
C1000 r1000 0 30p
.tran 0.01n 360n
.meas tran vmax33 MAX v(r33) from=260n to=360n
.meas tran vmin33 MIN v(r33) from=260n to=360n
.meas tran vmax100 MAX v(r100) from=260n to=360n
.meas tran vmin100 MIN v(r100) from=260n to=360n
.meas tran vmax220 MAX v(r220) from=260n to=360n
.meas tran vmin220 MIN v(r220) from=260n to=360n
.meas tran vmax470 MAX v(r470) from=260n to=360n
.meas tran vmin470 MIN v(r470) from=260n to=360n
.meas tran vmax1000 MAX v(r1000) from=260n to=360n
.meas tran vmin1000 MIN v(r1000) from=260n to=360n
  • 스코프에서 클럭이 3.3V까지 안 오르고 삼각파처럼 보이면: 부하가 무겁거나 저항이 큰 쪽입니다. 클럭 주파수를 낮춰 진폭이 커지는지 보면 RC 문제인지 구동 쪽 문제인지 구분에 도움이 됩니다.
  • 클럭 평균 전압이 전원의 절반 근처에 떠 있으면: 위 그래프에서 저항이 큰 곡선과 같은 모양입니다. 멀티미터 DC로 재면 이 평균만 보이므로 파형을 함께 봐야 합니다.
  • 진폭이 정상인데도 읽기가 실패하면: 클럭 문제에서 벗어나 CS#, 플래시 전원, MISO 쪽으로 넘어갑니다.

이 시뮬레이션도 이상적인 부품 모델이라 실제 측정값과 다를 수 있습니다. 입력 핀을 선형 용량으로만 두었고, 칩이 문턱 근처의 느린 입력에 어떻게 반응하는지는 계산에 없습니다. 플래시를 1.8V로 쓰는 보드라면 전압과 문턱이 모두 달라지므로 다시 돌려야 합니다.

현장에서 값을 정하는 순서

앞의 세 자료를 교체 작업 순서로 옮기면 다음과 같습니다. 전원 측 측정이 필요할 때는 전압 강하가 판단을 흐리지 않도록 멀티미터 부담 전압 글도 함께 참고합니다.

  1. 전원을 끄고 저항을 잽니다. 노트북은 어댑터와 배터리를 분리하고, 보드에 남은 전압이 없는지 확인한 뒤 측정합니다. 표기값과 많이 다르면 한쪽을 떼고 다시 잽니다.
  2. 도면과 같은 값을 우선합니다. 회로도나 같은 모델의 정상 보드 값이 있으면 그 값으로 복원합니다. 설계 값은 이 글의 가정보다 실제 보드를 더 잘 반영합니다.
  3. 값을 모르면 Z0 − 드라이버 저항으로 출발합니다. 근처 표준값을 답니다. 두 값 모두 불확실하면 이 글의 가정 조건에서 무난했던 22~47Ω을 후보로 삼습니다.
  4. 짧은 접지로 플래시 핀 쪽 파형을 봅니다. 산의 높이, 되돌림이 VIH 위에 있는지, 에지 중간의 계단, 진폭 네 가지를 확인합니다.
  5. 산이 크면 한 단계 키우고, 계단이나 진폭 부족이면 한 단계 줄입니다. 바꿀 때마다 같은 항목을 다시 재서 비교합니다.
  6. 덤프 비교로 마무리합니다. 파형이 좋아도 같은 내용을 두 번 읽어 일치하는지 확인합니다.

점퍼로 때워 놓은 보드를 받았을 때도 이 순서는 같습니다. 첫 번째 그래프처럼 짧은 배선에서는 0Ω도 읽히기 때문에, 읽힌다는 사실만으로 그 상태를 정상으로 보면 안 됩니다. 산의 높이를 재서 VCC + 0.4V 위로 올라가면 저항을 복원하는 쪽으로 판단합니다.

후즈대디

후즈대디
전자기기 수리 일을 하는 운영자가 현장에서 쓰는 진단 순서와 측정법을 정리합니다. 글에 실린 그래프는 ngspice 회로 시뮬레이션과 직접 계산으로 만들고, 가정한 조건을 함께 적습니다.
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.