Embedded, F/W, MCU, FPGA 차이점

2017. 1. 17. 20:43 from FPGA

질문

안녕하십니까,

아날로그 회로 설계를 본 업무로, 2년정도 일을 했네요.

저의 업무는  회로도 작성(ORCAD) -> PCB artwork(PADS) -> 외주 PCB제작 -> FPGA 로직 설계(VHDL) 까지 였습니다.

하지만 새로운 프로젝트는  FPGA와 32bit MCU를 함께 사용한 보드를 제작해야 하고,

USB 3.0과  GTX , 보조로 Rs422 깢 ㅣ인터페이싱을 해야 하는 과제인데,,,

일단 저의 가장 큰 문제점은,,  개념을 잘 못잡고 있다는 것 입니다.

누군가 알려주면 곧바로 습득하여 그 일을 할 수 있고, 인터넷의 소스를 참고하여 응용또한 가능합니다.

어떻게든 원하는 시스템을 구축하게끔 만들 수는 있는데,  제가 뭘 하고 있는지 전체적인 그림이 그려지지 않네요..ㅠㅠ

더 시간이 지나 경력이 쌓이기전에, 일단 내가 하고 있는 분야가  큰 틀에서 어떤 부분인지 확실한 개념정립을 하고 싶어

여기에 글을 남기게 되었습니다.

질문은 아래와 같습니다.

 

 

1. Embedded 시스템이라는게  마이크로 컨트롤러 즉 MCU(ARM 계열 등등)를 사용하여 특정한 목적을 가지고 설계된 보드라고 알고 있는데,,, (만약 이게 아니라면 부연설명좀 부탁드리겠습니다.)

Spartan6 FPGA 하나와 PROM만으로  수많은 device들을 동작시키고, 원하는 시스템을 구축해보았는데...

FPGA 설계자로서, 왜 꼭 MCU로 설계해야하는지 이해가 가질 않습니다,,,

 

이 질문은 어찌보면,, C언어와 VHDL의 차이라고 볼수도 있나요? 전반적으로 이해가 가질 않습니다..

그냥 위에서 FPGA를 골라줘서 그걸로 VHDL로 짜라 하면 짤줄 알고,  MCU를 골라줘서  C언어로 짜라 하면 짤줄 아는데...



2. 펌웨어라는건  하드웨어 부팅시 최초로 구동되는 프로그램으로 알고 있습니다.

그걸 시행하기 위한 소스코드들은 PROM에 저장되어 있구요.

SW엔지니어 중에   펌웨어 엔지니어와, app 엔지니어의 차이가 무엇인지 잘 모르겠습니다..

둘다 C언어를 사용하여 어떠한 목적을 갖는 프로그램을 coding하는게 아닌가요??

 

 

 

3. 하드웨어와 소프트웨어라하면,, 하드웨어는 orcad, artwork, vhdl 코딩까지

소프트웨어는 dsp 보드나  mcu 보드를 동작을 제어하고,  firmware를 설계하고  OS와 커널 디바이스 부분을 건드리는 부분이라고 알고 잇습니다. 그런데 embedded라는 개념이 끼면,,, 뭔가 애매모호 해지네요,

 

제가 하고 있는 업무가 FPGA 기반으로 원하는 시스템을 구성하는건데 인터넷 검색결과 embedded는 거진 다  MCU로 시스템을 구성하더라구요,, 시스템의 심장(?)이라고 할 수 있는 FPGA와 MCU  각각 쓰임의 차이가 있나요?

 

1번 질문과 약간 겹치기도 하는 질문입니다만 ,, 답변 해주시면 감사하겠습니다.

 

 

가장 큰 질문은 위 3가지 인데,, 질문을 하면서도 헷갈리네요 ^^; 사회 초년생에게 고수님들께서 희망의 빗줄기를 내려주시길 기원하겠습니다..ㅠㅠ

 

 

 

꿈많은새


1. 일반적인 정의는 다음과 같습니다

http://ko.wikipedia.org/wiki/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C_%EC%8B%9C%EC%8A%A4%ED%85%9C


2. 간단히 애기하면 펌웨어는 H/W 초기화 및 드라이버 단을 작성합니다 

app 엔지니어는 그위에서 돌아가는 프로그램을 작성 하고요


3.완전히 하드웨어와 소프트웨어를 분리하기엔 조금 애매해지죠

---- 질문 하신것처럼 분리하면 소프트웨어 하시는 분도 하드웨어 하시는 분과 동일 내지는 그이상의 하드웨어 지식이 있어야 하드웨어 제어및 펌웨어를 할수 있읍니다

---- FPGA 는 특정 조건 에서 원하는 H/W 특성을 가진 형태의 MCU 를 설계하신다고 보시면 됩니다

---- 때로는 FPGA가 좋을수도 때로는 MCU 가 좋을 수도 있읍니다

 

  EmbededHAN

먼저 답변 진심으로 감사드립니다. 제가 이해가 완벽히 가지 않아,,, 추가 질문 몇가지 드려도 되겠습니까?


2. 펌웨어라는 정의를 따라간다면 FPGA칩으로 VHDL언어를 이용하면 동일한 구현을 할 수도 있는데, 왜 MCU를 이용해서 하는지..모르겠습니다.


3. 이번에 자동차 분야(전장품 설계)에 관심이 많아 이것저것 알아보았는데, 자동차의 전장품에는


모두 MCU로 동작한다고 하네요... FPGA를 사용하는곳은 없다고 하는데 그이유가 무엇인지 혹시 아시나요?? Spartan사의 FPGA로서도 충분히 CAN통신 구현이 가능하고 하드웨어 언어는 병렬식이어서 훨씬 더 빠른 타이밍도 나올 수 있을 뿐 아니라, 다양한 디바이스들과의 연동도 가능한데, 왜 MCU로써 모든 시스템을 구성하였는지 감이 잡히질 않습니다 


꿈많은새

EmbededHAN 2번이나 3번의 답변이 같은 내용이 될수도 있을것 같군요

제가 자동차 관련이 아니라 정확한 답변을 드릴수는 업겠으나 단가 및 성능 ,구매 용이성 에서 차이가 나지 않을까 추측해 봅니다


꿈많은새

EmbededHAN 우선 새 프로젝트에서 mcu 와 fpga 역활을 살펴 보세요 아마 일반적인 제어는 mcu가 하고 특수한 하드웨어 프로토콜을 fpga 가 처리해서 mcu로 보내는 형태 일갓 같군요


EmbededHAN

꿈많은새 예 맞습니다! 전체적인 시스템은 더 복잡하지만, 간단히 PC, display와의 인터페이스(USB와 HDMI) 및 모터제어는 MCU 타 보드들과의 LVDS 통신과 RS232 그리고 수신신호 DAC IC는 FPGA 로 하는데요, 대체 왜 이렇게 나눴을까..FPGA로도 다 할 수 있는데. 이걸 몰랐었던거였습니다 ㅠㅠ


저도 제가 궁금한걸 어떻게 질문해야하나 쓰면서도 몰랐는데 꿈많은새님이 제가 궁금한걸 쓸수 있게

만들어주시네요 ㅠㅠ 감사합니다!


세균맨

fpga보다 mcu가 싸기 때문?아닐까요?


EmbededHAN

저도 그런방향으로 생각해보았는데, 회사 선배님이 MCU와 FPGA가 각각의 쓰임이 존재한다는 말씀을 하셔서요 ㅠㅠ


람나라

2. 왜 MCU ? - 용도에 따라 다를 수도 있지만 동일한 기능을 구현할 수 있는 FPGA 와 MCU의 가격을 비교해보면 됩니다. 그 외에 개발의 연속성, 개발기간의 제약이라던지 다른 요인들도 있겠지요. MCU로 안되는 것은 FPGA로 합니다.

3. 이부분도 가격에 영향을 받지 않나 싶군요. 국내 모 자동차 회사에서는 원가를 낮춘다고 설계에 있는 나사도 몇개 안 박았다고 기사에 나왔었지요.


왜? 라는 질문은 타당할 수도 있지만 전체 그림을 보면 본인이 답을 찾을 수도 있습니다. 이유가 있으니 그렇게 하는 걸테니 말입니다.


EmbededHAN

답변 너무 감사 드립니다^^ 위 꿈많은 새님께도 여쭤본 것인데, 회사선배분이 아래와 같은 말씀을 하셨습니다... FPGA가 쓰임이 있는곳이 있꼬 MCU가 쓰임이 있는곳이 있기에, "이번 프로젝트는 하나의 보드에 FPGA와 32bit MCU가 모두 들어가야 된다." 라고 하셨꺼든요,, 그래서 위와 같은 질문을 드렸었씁니다 ^^;


천변만화

회사 선배분 의견이 맞습니다.

FPGA로 모두 구현 할 수 있다는 말은 일반적으로 FPGA 관련 경험이 적은 분들이 하는 표현입니다.

FPGA의 고충과 MCU의 편함을 모르는 것이죠. 비숫한 비유가 어셈블리어로 모두 구현이 가능한데 왜 C 언어를 사용하는가 하는 질문입니다.


동일 가격으로 FPGA로 구현 가능하고 MCU로 구현 가능하면 보통은 MCU가 답입니다.

아주 빠른 속도 처리가 필요하다면 구현의 불현함, 가격의 단점에도 불구하고 FPGA를 사용합니다.

정형화된 틀이 없는 하드웨어 인터페이스는 FPGA가 구현이 편합니다.

절대적인 가격 비교는 어렵지만 일반적으로 자동차에서 FPGA가 많이 사용되지 않는 이유는 가격 때문입니다. FPGA 가격을 커버하는 방법은 ASIC 칩을 만드는 것입니다. ASIC은 초기 투자 비용이 많이 들어가기 때문에 충분한 수량이 담보되어야 합니다.


FPGA로 아래 간단한 연산을 한번 해보세요.

쉽게 구현이 가능한가요?


예) 3.14159 * 480.829^3 / root(3)


MCU로 계산하면 어떨까요?


EmbededHAN

천변만화님 늦은밤 답변 너무 감사드립니다. 아... 아래 예제를 보니 이제좀 감히 잡힙니다. VHDL로,,, 소수점 연산을 하기위해 비트를 조정하고 divider 및 다양한 코어를 활용하여 리소스와 시간이 낭비되고,, 정확한 값이 나오지 않았던 경험이 있네요 ㅠㅠ 하지만 역시 천변만화님의 말씀대로 제가 아직 관련경험이 적은 초보자라서 FPGA의 고충과 MCU의 편함을 모르기에 저런질문을 한듯 싶네요 ^^;


아직 많은 걸 접해보지 않았지만 글이나 어떠한 자료나 예제같은을 접하여 확실한 느낌을 알고 난 후에,  경험을 쌓으려 하는데 경험을 쌓기전에 저러한 느낌들을 알 수 있는건 무리일까요???


  천변만화

EmbededHAN 오늘의 질문도 고민의 과정이구요. 많이 질문하고 고민하세요.

엔지니어는 항상 자신의 생각 반대편에서 스스로 모순이 없는지 질문할 수 있어야 합니다.

그리고 FPGA는 엄밀히 말하면 언어로 표현되지만 디지털 로직으로 구현되는 하드웨어입니다.

그렇기 때문에 하드웨어 인터페이스에서는 MCU보다 뛰어난 경우도 존재합니다.


EmbededHAN

천변만화 정말 감사합니다^^ 많은 도움되었습니다. 명일도 평일인데, 너무 늦게 주무시지 마시고 행복한 금요일 아침 맞이하십시오 ^^

'FPGA' 카테고리의 다른 글

FPGA란??  (0) 2017.01.18
Posted by 나무길 :