메뉴 건너뛰기

개발도구


* 주의 : 이 글은 (주)싱크웍스가 DSP를 사용하거나, 시작하시려는 분들을 위해서 준비한 기술 자료이며 향후 인쇄매체에 활용될 예정입니다. 다른 매체에 이용하시려는 분들은 미리 연락을 취해주시기 바랍니다.

Fixed Point Processor가 뭘까?

지금까지 열심히(?) Floating Point Processor에 대해서 살펴보았다. 이제부터는 Fixed Point Processor에 대해서 살펴보고자 한다. Fixed Point Processor가 먼저 소개되는 것이 순서일텐데, 글을 구상하다 보니 Fixed Point Processor에 대한 내용이 무진장 많아질 듯 해서 순서를 뒤로 미루었다. 우리가 전문적으로 다뤄야 할 프로세서는 Fixed Point Processor다. Floating Point Processor를 선호하는 분들도 한번쯤 Fixed Point Processor에 눈길도 줘보고, 시간을 할애해서 어루만져주고 해보시기 바란다. 본전 뽑고도 더 뽑을 수 있는 프로세서다. 본격적으로 알아보자.

먼저 Fixed Point Processor를 단어단위로 이해해 보자.

Fixed - 고정된, 무엇이 고정이 되어 있을까?
Point - 포인트, 점? Floating Point Processor의 설명 연장선상에서 이해한다면 소수점이 될 수 있겠다.
Processor - 프로세서, 누가 만들었는지는 모르겠지만 연산자(차라리 프로세서가 나은 듯 하다.)
흔히들, 고정 소수점 연산자라고 부른다. 필자는 이대목에서 어이없는 웃음을 터뜨리기도 하는데, 고정 소수점 연산자나 Fixed Point Processor나 뭐가 다른가? 한글로 바꾼 의미가 하나도 없다, 무늬만 한글. 사실 더하다. Fixed Point Processor라는 용어를 이해하고자 용어사전을 찾아보는데, 떡하니 '고정 소수점 연산자'로 풀이하고 그만이다. 도둑을 피하니 강도를 만난다고... '고정 소수점 연산자라'는 말이 사실 더 무섭다. 이공계기피현상에는 이공계 종사자들도 한 몫하고 있다는 생각을 지울 수 없는 대목이다. 쉽고, 피부에 와닿고, 쓰임새가 팍팍 느껴지는 그런 내용이 많아졌으면 한다. 돈 안되는 소리는 여기까지 하고...

Fixed Point Processor라는 용어를 이해하기란 썩 쉽지는 않다. 왜 Fixed 라는 말이 쓰이게 되었는지는 이어지는 연재물에서 다루도록 하겠다. Point라는 말은 말그대로 점이다. 0.1을 '영 점 일' 이라고 말하듯, 영어권에서는 '제로 포인트 원'이라고 말한다. 여기서 쓰인 '포인트'와 동일하다. 그러나, Fixed Point Processor에서 소수점을 표현하는 회로를 찾아내기란 불가능하다. 실제로는 없다. 다시말해, 7,8편에서 본 Floating Point Processor의 구조처럼 지수(exponent)를 표현하는 회로가 없다는 것이다. 모두가 밑이다. 그럼에도 불구하고 Fixed Point라니 혼란을 불러일으키는 대목이다. Integer Processor라는 말이 더 어울리기는 한데, Integer Processor라는 말을 기피하는 이유는 혹시나 소수점을 표현못한다는 선입견이 생길까봐서이다.

여기서 잠시 Analog-to-Digital Conveter의 예를 통해서 Fixed Point로 소수를 표현하는 방법을 알아보자.

입력신호 범위가 0 ~ 1V 인 16비트 ADC가 있다.
이 ADC에 0.5V의 신호가 입력되었다면, ADC의 결과는 얼마인가?
0x8000이다. 10진수로 32768 이다.
0.1V가 인가되었다면, 그 결과는 0x0CCC 혹은 10진수로 3276 이 된다.
위 내용을 다시한번 자세히 살펴봐주시기 바란다. 0.5라는 양을 표시하는 수가 0x8000 으로 바뀌는 과정이 바로 Fixed Point Processor에서 소수를 표현하는 방법인 것이다. 즉, Fixed Point Processor내부에서 0x8000이라는 수치가 계산에 사용되고 있다면, '아, 지금 0.5 라는 수를 Fixed Point로 표현해서 다루고 있구나!' 라고 생각하면 반은 맞추고 들어가는 셈이 된다. 문제는 위에서 언급한 예제와는 달리 입력신호의 범위가 0 ~ 1V가 아니라 -5V ~ 5V 등으로 다양해질 수 있다는 부분인데, 단순 확장으로 처리가 가능해진다. 이 부분은 다음 편에서 다룰 예정이다. 시간나시면, Q math 게시판도 참고해주시기 바란다. 다듬어지지 않은 내용이기는 하지만, Fixed Point Number의 기초를 얻기에는 매우 좋은 자료다.

여기서 잠깐, Floating Point Number를 다루는 데이터 변환기(ADC나 DAC)가 있는지 없는지 생각해보는 것도 아주 좋겠다.

<자료출처 - (주)싱크웍스(http://www.syncworks.co.kr)>

※ 글을 옮겨갈 때에는 꼭 출처를 밝혀주시기 바랍니다.






번호 제목 날짜 조회 수
공지 [TIP] Jedis로 원격지 Redis접속에 실패할때 2017.09.27 7038
공지 [TIP] 앱 실행시 관리자 권한을 얻도록 Visual Studio에서 설정하기 2017.01.22 6556
공지 [TIP] 파이선에서 C 코드 호출하기 (How to call C function from Python) [1] 2018.08.14 6421
33 [LINK]PID 제어와 연관해서 만든 로봇 정보 2005.03.25 575
32 [LINK]프린터 포트이용 ARM9 디버깅 2005.03.03 547
31 [LINK] 소스코드 깔끔히 하이라이트 시켜주는 툴 2004.10.25 596
30 [LINK] The Art of assembly language 2004.10.23 499
29 [LINK] USB정보 분석 툴- USB Monitor, USB머하니 2004.10.13 2881
28 [TIP] WinCVS의 간략한 사용방법 [1] 2004.10.11 455
27 [TIP] Linux상에서 메모리 릭 잡는 도구 2004.08.24 619
26 [TIP] CYGWIN 설정/변경하기 2004.06.21 664
25 [TIP]OUTLOOK에서 첨부파일 형식 허용 및 차단하는 방법 2004.05.19 824
» [DSP]제9편 - Fixed Point Processor - (1) 2004.05.07 690
23 [DSP]제8편 - Floating Point Processor의 한계 2004.05.07 621
22 [DSP]제7편 - Floating Point Processors 2004.05.07 719
21 [DSP]제6편 - DSP 칩을 제대로 익히기 위해서(3) - DSP와 인터럽트 2004.05.07 1398
20 [DSP]제5편 - DSP 칩을 제대로 익히기 위해서(2) - 메모리 맵의 이해하기와 DSP 칩이 갖춰야 할 덕목 2004.05.07 1151
19 [DSP]제4편 - DSP 칩을 제대로 배우기 위해서 - Core 이해하기 2004.05.07 741
18 [DSP]제3편 - DSP는 RISC 인가? CISC인가? 아니면 뭔가? 2004.05.07 950
17 [DSP]제2편 - DSP 칩, 왜 필요한가? 2004.05.07 858
16 [DSP]제1편 - DSP 칩, 그것이 알고 싶다. 2004.05.07 1187
15 [TIP] Windows Update 가 안될때 ... 2004.04.30 892
14 [LINK] 8051 CPU Application Notes 2004.04.27 550
위로