왜 임베디드 보드에 CPLD가 필요 한가요???

teaeune의 이미지

제가 ez-x5보드를 가지고 공부를 하고 있습니다.
그런데 궁금 한사항이 왜 cpld가 필요 한가 입니다.
혹시 작은 핀으로 많은 IO를 관리 하기 위함 인가요???
cpld 소스를 보니 대략 그런것 같기도 하던데요.
만약 보드를 설계 한다면 cpld가 꼭 필요 한건가요??

jachin의 이미지

대부분 일반적인 Mask 칩을 생산하는 원가는 1억에서 2억정도 됩니다.
기본 수량만 수백만개이지요.
겨우 천 대 정도 팔까 말까 한 시스템에 1억을 투자한다는 것은 무척 비쌉니다.
100,000,000 / 1000 = 100000, 대 당 10만원의 비용이 소요된다는 것이지요.
10만원이면 CPLD 한 개를 1만원으로 쳐도 10배의 가격입니다.
(백만대 이상의) 대량 생산을 위한 것이 아니라면, 소량생산을 위해 PLD 칩을
사용하는 것도 나쁘지 않습니다. 더욱이 CPLD 는 많이 보급된 상황이라,
개당 천원 이하로 수 만 게이트의 제품을 구입할 수 있어서 무척 저렴합니다.
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

훌륭한녀석의 이미지

jachin님께서 설명을 soc적으로 잘 해주셨는데요,
질문의 내용이 아마 임베디드 보드에 PLD를 굳이 써야 하나? 쓰지 않는 방법은 없냐.. 뭐 이런걸로 보이네요.
그래서, 제가 짧은 지식으로 몇말씀 드리면

주로 요즘 나오는 개발 보드에 CPLD가 들어가는 경우가 있는데요, 용도는 여러가지 입니다.
GPIO가 모자라서, 뱅크를 여러개를 쓰고 싶어서, 신호를 mux하고 싶어서, 싱크를 맞추기 위해서, IP에 없어 바로 붙이지 못하는 디바이스를 위해서 등등등
굳이 CPLD를 쓰지 않고 다른 방법으로 처리하는 방법으로는 위에 jachin님께서 설명하신 soc를 하는 방법과
로직으로 구현이 된다면 간단한 회로를 꾸미는 방법으로 처리 할 수 있습니다. 그건 PLD에서 처리하는 복잡도에
따라서 결정하시면 될것 같네요.
아.. 그리고 양산시에도 문제가 됩니다. PLD에다 퓨징하는 작업이 들어가게 되고 가격도 생각해 봐야죠.

----
훌륭한녀석!!

bushi의 이미지

왜 다른 chip 이 아니라 cpld 를 쓰느냐는 질문이 아니라 그 보드에서 cpld 가 하는 역할이 뭐냐는 질문같은데요.
(그리고, 단순 gate array 방식의 주문자 생산 칩은 그렇게 단가가 높지 않습니다.
제 돈 나간게 아니라서 정확히 얼만지는 모르지만 분명히 억대는 아니었습니다.
게다가 웨이퍼 하나에 여러 종류의 ic 를 구워내는 기술도 있고요.
전자공학과 학부생들 중에도 설계경험이 있는 분들이 있을겁니다.)

h/w 경험은 없고, 이런저런 보드에 이것저것 올리다 겪은 경험을 적습니다.

MPU 의 chip select (static memory bank) 가 크게 부족한 것은 아닌데,
reference 용의 보드를 만들다보면 좀 허덕이게 됩니다. address bus 디코딩을 cpld 로 하면 편하죠.
또는 종류가 다른 여러 개의 외부장치(flash, ethernet등등)를 스위치를 이용해 선택하게 할 경우도
복잡한 회로보단 cpld 에 로직을 적당히 구워넣는게 편하고요.
부가적으로 voltage shift 가 가능한 놈도 있고, 실제론 이 기능이 제일 애용되는 것 같습니다.

strongarm 시절에 중간에 cpld 하나만 집어넣고 EIDE CD-ROM 과 CPU 를 바로 붙인 보드에 리눅스를 올린 적이 있습니다.
시그널 조작하는 것은 CPU 의 chip select 신호에 따라 게이트 해주는게 전부인 것 같았고,
양방향 voltage shift 가 가장 큰 역할로 보였습니다.
EIDE HDD 를 붙이기 위해선 저항 하나를 바꿔야 한다는 말을 들었는데 왜 그런지는 안 물어봤고요.

OTL

회니의 이미지

네, CPLD는 주로 IO확장으로 사용됩니다.
CPU에 연결하는 소자가 증가하면 CPU를 재설계하거나 IO가 많은 CPU로 재선정 해야 할까요?
그냥 데이터핀은 공유하고, 컨트롤핀은 CPLD에서 디코딩하여 각 소자의 ChipEnable (ChipSelect)에 연결합니다.
그러면 CPU의 컨트롤핀 8개로 256개의 소자를 선택할수 있게 됩니다. 이런 시스템은 IO효율이 좋죠.
이러한 시스템은 각 소자와 CPU가 동시에 데이터를 주고 받을수 없는 단점이 있습니다.
왜냐하면 한소자와 통신하고 있으면, 데이터핀이 사용중이기 때문에 통신이 끝나야 다른 소자와 통신을 할 수 있습니다.
그렇지만 요즘나오는 CPU는 속도가 빠르기 때문에 이러한 문제가 개선되고 있습니다.

반대로 CPU에 직접 소자를 연결한다면, 각 소자마다 데이터핀과 컨트롤핀이 필요하게 됩니다.
CPU는 각 소자와 동시에 데이터를 주고 받을 수 있지만, IO효율이 않좋죠.
그래서 일반적으로 특수한 환경이 아니고서는 이러한 방식은 사용하지 않습니다.

jachin의 이미지

다른 각도로 질문을 이해하시고 답변들을 달아주시니 완벽한 답변이 되었네요.;;;

질문하신 분과 별도로 제가 감사드립니다.
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

teaeune의 이미지

많은 분들이 답변 주셨네요 감사합니다. ^^;;
저도 열공 하여 여러분과 같이 답변을 다는 위치로 가고 싶네요 ^^:;;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.