정보공간_1

[4기 대구 유승범] 효율적인 하드웨어 설계 및 활용 본문

IT 놀이터/Elite Member Tech & Talk

[4기 대구 유승범] 효율적인 하드웨어 설계 및 활용

알 수 없는 사용자 2013. 12. 4. 18:33

안녕하세요 대구멤버십 22-1기 유승범 입니다.

  일반적으로 하드웨어 프로젝트를 진행하기에 앞서 무작정 아이디어만 가지고 프로젝트를 시작하는 오류를 범하기 쉽습니다. 그로 인해 테스트 및 디버깅에 너무나 많은 시간을 투자하게 되고, 예상하지 못한 문제점들로 인해 처음부터 다시 해야하는 경우가 발생하곤 합니다.

  소프트웨어 분야에서는 SE(Software Engineering)이라는 소프트웨어 설계 및 검증을 위한 좀 더 구체적인 학문이 있는 반면, 하드웨어는 HE(Hardware Engineering)이라는 분야가 따로 없이 개인적으로 설계단계를 거치던가 아니면 아예 생략하던가, 주변의 지인이나 선배로부터 전수받은 방법을 통해 설계 해야 합니다. 흔히들 하드웨어 설계라고 하면 FPGA 관련 SOC분야라고 생각하고 그에 관련된 자료들이 보통 많습니다.

  프로젝트 진행에 앞서 주제 다음으로 중요한 것이 설계라고 생각합니다. 그래서 본 포스팅을 통해 하드웨어 개발을 처음 하는 사람들에게 길잡이가 되고자 효율적인 하드웨어 설계에 관한 주제를 다루게 되었습니다.

1. 효율적인 하드웨어 설계가 필요한 이유

- 개발기간이 단축될 수 있습니다.

- 실수할 확률이 적고, 원인 분석이 가능합니다.

- 수정이 용이하고 시뮬레이션이 가능합니다.

2. 일반적인 하드웨어 설계

  일반적으로 하드웨어를 처음 입문하게 될 경우 학교 수업시간에 듣거나 선배의 조언을 통해 설계를 시작하게 됩니다. 어떻게 보면 아직 처음 입문 하는 사람에게 설계라는 단어가 낯설 수도 있습니다. 보통 처음에 어떤 회로를 구성하거나 부품을 테스트 하게 될 경우 다음과 같은 순서를 따르게 됩니다.


<그림 1 일반적인 설계 예시 1>

  위의 단계는 아이템을 선정하게 되면 부품의 특성을 고려해서 선택하는 것이 아니라 주위에 있는 부품 또는 주어지는 부품을 사용하게 됩니다. 이것을 가지고 브레드보드에 테스트를 하게 되고 기판에 납땜 후 최종 테스트를 거쳐 작품을 완성하게 됩니다. 하지만 위 설계 단계는 무엇이 잘못되었는지 생각해보면, 위에서도 언급했다시피 주제에 맞는 부품을 선택하고 각 부품에 대한 특성을 고려해야 합니다. 하지만 아직 입문자에게 이 단계는 어렵게 느껴질 수가 있습니다. 부품의 종류가 너무나 다양하고 패키지 타입도 각기 달라서 부품을 선택하기가 어려운 점이 사실입니다. 하지만 누군가의 조언을 통해 어떻게든 작품을 완성할 수는 있겠지만 시키는 대로 따라가는 경우이기 때문에 제작과정이나 결과에 대해서는 썩 만족스럽지 못할 것입니다.

<그림 2 일반적인 설계 예시 2>

  위의 경우는 무엇이 잘 못 되었을까요? 일단은 예시 1 에 비해 과정이 하나 생략 되었습니다. 첫 번째 프로젝트를 끝내고 다음 프로젝트를 수행하게 되면 사람은 이전에 비해 자신감을 얻게 됩니다. 그래서 브레드보드에 테스트 하는 과정을 과감히 생략하고 납땜 후 테스트를 하게 됩니다. 만약 동작을 하지 않게 될 경우 새로 땜질을 하거나 아예 처음으로 돌아가야 되는 경우가 발생하기도 합니다. 하지만 여기서 또 다른 점은 부품을 선택한다는 점입니다. 이전에 실패하거나 고생한 사례를 통해 자신에게는 적절한 부품을 선택해야 되겠다는 것을 깨닫기 때문에 부품 선택에 신중을 가하게 됩니다. 하지만 이번 예시 또한 좋은 예시는 아닙니다. 

<그림 3 일반적인 설계 예시 3>

  어느 정도의 프로젝트 경험이 있는 사람이라면 거의 위와 같은 경우로 프로젝트를 진행합니다. 아이템을 선정하고 부품을 선택하고 구매한 뒤 지금까지 없었던 과정인 회로를 디자인 하게 됩니다. 모든 땜질이나 테스트에 앞서 회로 설계는 정말 중요한 단계라고 볼 수 있습니다. 부품의 특성과 핀 번호 크기 등을 고려해 기판에 부품을 배치하고 땜질하는 과정을 효율적으로 진행 할 수 있도록 도와줍니다. 또한 기판 땜질 시간을 단축시키고, 실수를 줄일 수 있습니다.

3. 효율적인 하드웨어 설계

  위에서 일반적으로 사람들이 가장 많이 사용하는 방법과 실수하는 부분에 대해 살펴 보았습니다. 그렇다면 실수를 없애고, 좀 더 효율적으로 설계를 하려면 어떻게 해야 할까요?

<그림 4 효율적인 설계>

  첫 번째, 주제가 명확해야 합니다. 주제를 명확히 세우고, 세부적인 기능과 목표를 분명하게 설정해야 합니다. 주제가 명확하지 않으면 설계 시 어떤 점을 고려하고, 어떤 부품을 설정해야 되는지 몰라 자료조사에 많은 시간을 뺏길 수 있습니다.

  두 번째, 충분한 자료조사가 필요합니다. 하드웨어 프로젝트를 진행할 때 어떤 부품에 대해 자료 조사를 하고 진행하지 않으면 프로젝트를 진행 한 후 주제의 오류를 알게 될 수 있기 때문입니다.

  세 번째, 변수에 대한 고려가 필요합니다. 완벽한 설계란 없습니다. 부품의 특성이 각기 다르고 오차도 어느 정도 있게 마련인데, 정확한 설계를 통해 혹시나 발생하게 될 문제점이나 돌발상황에 대한 대안을 세워두는 것이 필요합니다.

  네 번째, 정확한 계산이 필요합니다. 부품에도 오차범위가 있습니다. 부품 스팩을 살펴보면 회사에서 부품의 오차율을 실험을 토대로 그래프나 글로 제공하고 있습니다. 좀 더 정확한 동작이나 퍼포먼스를 위해서 정확한 계산은 필수라고 할 수 있습니다.

  다섯 번째, 적절한 Tool 사용 하드웨어 설계 중 가장 막강한 기능이 아닐까 싶습니다. 하드웨어 툴들은 워낙 비싸고, 또한 귀합니다. 어떤 툴을 사용하느냐에 따라 시간이나 비용에서 엄청난 차이가 날 수 있습니다. 적절한 툴 사용을 통해 설계 단계에서 가장 큰 효율과 효과를 얻을 수 있습니다.