회로의 discretization
on
이 말은 회로의 각 지점의 전압/전류를 discrete한 value로 나타내는 것을 의미한다. 즉 기타 앰프 회로를 디지털 영역에서 시뮬레이션한다고 함은 전압 혹은 전류를 discrete한 즉 연속적인 신호가 아닌 sample rate마다 변화하는 digital value로 나타내는 것이다.
우리가 듣는 소리라고 함은 그런 전압값의 변화, 전류값의 변화이기 때문이다. 흔히 나타내는 waveform도 그 전압값의 변화를 기록해놓은 것이고 말이다. 아예 Spice가 실시간으로 동작할 수 있다면 그 자체가 좋은 앰프 시뮬레이터가 되겠지만 그렇지 못하니 이것을 어떻게든 간단한 모양새로 가져오고자 하는 것이 플러긴 제작자들이 하는 일이다.
특히나 실제의 회로를 가장 근사하게 가져오면서도 가져올 때의 노력 또한 최소화해야 하는 것 또한 목표이기도 하고.
그 중 가장 걸림돌이 되는 것이 zero delay loop이라고 하는 것이다. 즉 실제 회로에 어떤 wire를 연겷해서 어떤 소자와 어떤 소자를 연결시키면 사실상 이 둘 간의 delay는 0이라고 본다. 그 이유는 wire를 통해 전파하는 신호의 파장이 wire에 길이에 비해 매우 크기 때문이다. 즉 하나의 wave, 1주기의 신호가 wire를 통해 전파한다고 할 때 파장이 wire에 비해 엄청나게 크다고 하면 사실상 그 wire의 전영역에 걸쳐서 거의 같은 신호가 지나가고 있을 것이기 때문이다. (이해가 잘 가는가? 이것을 lumped circuit이라고 해서 전기전자관련 학과에서 1학년때 배운다. 당시엔 솔직히 이게 뭐하는 소리인가 잘 이해 안가게 얘기해준다. 가르치는 사람도 그 개념이 어려웠던 것이라 난 생각한다. 아니면 설명하는 재주가 아예 없었거나. 내 보기에 전기전자과 교수들 잡아와서 물어봐도 반수 이상은 이 기초적인 내용에 대해서 대답 못하는 이들 많다고 본다.) 그렇지 않은 회로는 wire로 연결했다고 하더라도 그 안에서 phase가 다르다. 다시말해 길이가 길어지면 신호의 delay로 고스란히 연결된다. 이것은 distributed circuit이라고 한다.
어쨋거나 왜 이 zero delay loop가 문제가 되냐고 하면 회로를 아예 통째로 분석해서 수식으로 유도해 내야 하기 때문이다. 그렇지 않다면 순차적으로 나타낼 수 있을텐데 말이다.
여기서 좋은 예가 되는 것이 진공관 회로이다. 가장 쉬운 common cathode circuit만 보더라도 3단자, 즉 plate, grid, cathode의 전압이 정해지면 그 전압 관계에 따라 grid-cathode간 plate-cathode간 전류가 구해진다. 그런데 cathode와 plate, grid에 어떤 저항이 연결되어있다고 하자. 그러면 이들 전류가 구해졌다고 하더라도 그 전류에 의해서 3단자에 걸리게 되는 전압은 다른 값이 될 것이고, 그 값에 맞춰서 전압을 구하면 또 다른 값으로 구해지고 하는 것이다.
즉, 모든 회로 요소 (모델에 포함된 요소까지 모두) 전부 다 꺼내놓고 그 회로를 전부 방정식으로 끌어내어 풀어 주어야 입력 전압에 대한 특정 위치의 전압을 구할 수 있게 된다. 만일 여기에 feedback cap이 붙는다든가 plate/cathode에 cap을 더 붙이게 된다면 방정식을 다시 꾸려서 전부 다시 풀어내야 한다.그런데 진공관 모델이라는 것에는 좀 쉽게 계산하기 곤란한 함수들이 들어있다. close form을 일반인이 풀기 곤란하고 mathematica라는 tool을 써서 풀어도 그 해가 엄청나게 길게 뽑힌다. 해를 알긴 했지만 이렇게 긴 수식으로는 컴퓨터에게 일을 시키기 매우 어려워진다.
결국 중요한 방정식만 가져다 놓고 수치해석을 이용해서 풀어주어야 한다. 수치해석이란 게 무엇인가? 어떤 closed form의 해를 계산하기 곤란한 경우에 해의 근사값을 찾아내는 방법이다. 쉽게 말해 컴퓨터의 힘을 빌어 답을 찍는 것이다. Spice역시 그런 일을 한다고 보면 된다. 어차피 아날로그 회로라는게 우리가 쉽게 계산할 수 있는 방정식으로 풀어낼 수 있는 경우도 있고 아닌 경우도 있기 때문이다. 수치해석 과목 역시 공대의 경우 1학년때 대부분 배운다. 공학 교육을 하기에 앞서 도구가 되는 지식이라고 생각해서다. 그러나 내 경험을 비추어 볼 때 이 과목을 포함한 모든 도구용 지식들은 대부분 암기과목에 지나지 않았다. 도구가 왜 필요한지도 모르는 이들에게 과목을 주입식으로 갈아먹인 것이다. Newton-Raphson이니 하는 방법들이 그 좋은 얘가 되겠다.
본론으로 돌아와서 회로를 보다 정확하게 시뮬레이션하려면 이러한 방법밖엔 좋은 방법이 없다. 그런데 너무 불편한 것이다. 이를테면 진공관과 저항으로만 구성된 회로라면 이 방법으로 해도 쉽게 풀릴 수 있겠는데, 여기에 C와같은 성분이 달라붙는다, 즉 입력신호의 주파수에 전압/전류 특성이 변화하는 성분이 달라붙으면 복잡한 수치해석 루틴이 계속해서 돌아가야하니 또한 피곤한 일이 된다.
그래서 별 수 없이 discretization을 한다. 그런데 회로 개념상으로는 회로의 구성부품들을 개별 부품으로 떼어내는 작업이라고 보면 더 옳을 것 같다. 즉 영향을 덜 받고 덜 주는 단위에서 끊어서 보는 것이다. 이를테면 앞단에서 전류를 거의 끌어오지 않고 전압 값 만으로 드라이브가 된다면 앞단과 뒷단을 끊어볼 수 있다. 사실상 근사하면 거의 같아지기 때문이다. 진공관 회로는 일반적으로 이런 작업이 가능하다. 정상적인 bias가 걸리는 경우에는 입력단자에서 거의 전류가 흐르지 않기 때문에 오직 전압만으로 컨트롤 되기 때문이다. 거기에 사용하는 저항 대부분이 매우 큰 값이라 전류를 거의 끌어내지 않는다. 그저 전압만 분압하는 기능만한다.
그러나 distortion이 생기는 기타 앰프의 경우는 얘기가 좀 달라진다. positive grid bias가 걸리게 되면 앞단에서 전류를 끌어온다. 결과적으로 앞단의 증폭률을 어느 정도 떨어뜨리게 되고 분압비도 바꿔놓는다. 그렇게 흘러 들어온 전류가 뒷단의 증폭률에도 영향을 미친다. 칼같이 구부러져야 하는 파형도 둥그스름하게 만들어놓는다. 그것이 진공관의 중요한 특징이란다. 이 부분을 떼놓고 시뮬하면 왠지 좀 뭔가 빠진 것 같다는 기분도 든다.
다음에는 이런 회로를 어떻게 신호처리적으로 해석해야 하는지에 대해서 좀 더 구체적으로 알아보자.