Monday, December 29, 2014

[매드프로젝트 강좌] CORDIC - 02. 알고리즘-2

최종 알고리즘은 아래와 같다!!!!



회전모드(Rotation)
z를 현재 각도라고 하고 z를 0으로 만들면 
초기값 x = 0.607253, y = 0, z = θ  

i = 0 -> n 까지 
z > 0 이면 di = 1 그렇지 않으면 di = 0

xi+1 = xi - di*(2^-i)*yi
yi+1 = yi + di*(2^-i)*xi
zi+1 = zi - di*ai

결과 xn = cos(θ ), yn = sin(θ )
정확도 n bits

헉헉... 힘든 여정이였다. 이해가 잘되었는지 모르겠다. 위 공식에 의해서 최종 값 x는 cos이고 y는 sin이 되는 것이고 정확도는 가져간 n만큼 비트수가 되겠다.
(사실 필자도 아직 코딩 안해서 ... 맞는지는... 코딩하다 문제있으면 추후 수정)

벡터모드는 위 식을 반대로하면 되는데 증명은 안하고 식만 .. (히..힘드니까욤)

xn = 1/K(x^2 + y^2)^(1/2)
yn = 0
zn = z + tan^-1(y/x)

고맙게도 식과 함께 CORDIC 기본 모드부터 Linear, Hyperbolic을 한번에 정리해 놓은 것이 있어 그대로 붙여 넣는다.


아 정말 깔끔하다. 이거 만든분에게 정말 감사해야 할 듯.

이 CORDIC 알고리즘을 이용하여 계산할 수 있는 수식을 정리하면 아래와 같다.

직접적으로 계산가능한 것은
sin, cos, sinh, cosh
tan^-1, tanh^-1
Division
multiplication
tan^-1(y/x)
y + x*z
(x^2+y^2)1/2
(x^2-y^2)1/2
e^z = sinh(z) + cosh(z)

간접 계산으로 가능한 수식들도 있는데 나머진 위키북 자료를 참조하시기 바라며

최종 요약이다.

(귀찮아서 잘라 붙인게.... 맞습니다. ㅠ)

조금 먼가 수식들 때문에 복잡해 보인다면 같은거지만 추가로 위키북에서도 가져오면 




하드웨어 아키텍쳐도 위키북에서 가져와 추가해본다.
(3화로 하드웨어를 포스팅할려고 했으나 내용도 별로 없어서 그냥 붙여 넣음!!!)

- 하드웨어 재사용을 이용한 면적 최적화 아키텍쳐
그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC




- 파이프라인을 이용한 속도 최적화 아키텍쳐
그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC



이해할 수 있도록 자료를 잘 만들어 준 
Minnesota 대학의 Kia Bazargan 님에게 감사하며... 이 강좌를 마친다.

reference
2. EE 5324 – VLSI Design II, Part IX: CORDIC Algorithms, Kia Bazargan, University of Minnesota, spring 2006

Sunday, December 28, 2014

[이번주 TED Talk] David Merrill: Toy tiles that talk to each other


이번주는 재미있는 주제가 선정되었다. IT에 관련된 교육용 디바이스에 대한 내용인데 이름은 Siftables(쉬프터블)이라고 한다.

TED는 2009년에 만들어진 것으로 그 당시 상황을 생각해보면 이 디바이스는 아마 굉장히 혁신적으로 보였을 것 같다. 디바이스간에 서로 통신을 하면서 새로운 또 다른 컨텐츠를 만들어 내는 것이 정말 혁신이였다. 이 쉬프터블은 하나의 플랫폼으로 서로 연동하여 무엇을 만드느냐에 따라 달라지는 것이다.

데모를 통해서 각각의 쉬프터블을 이용한 덧샘 뺄샘을 할 경우 자동적으로 결과값이 나온다던가 특정 문자 맞추기를 통해서 정답인지 아닌지를 판별한다던가 페인트를 붓는 동작을 통해 색깔이 변하는 등의 것들은 지금 봐도 '아' 라는 탄성을 만들어낸다. 이 얼마나 혁신적인가 디바이스간의 통신을 이미 2009년에 생각하고 서로 인터렉션하는 것이였다. 거기에 사람이 직접 디바이스를 만지면서 1석 2조의 효과를 거두는 것이다. 이것이 어디에 가장 효과적일 것인지는 단연 '교육' 분야 였다.

이를 제안한 David Merrill도 교육 분야를 타겟으로 컨텐츠들을 양산한것 같은데 최근 인터넷을 통해 Siftables을 검색했을 때는 성공하지 못한것 같다. 이유는 잘 모르겠지만 아마 한정된 컨텐츠와 가격이 문제였지 않았을까 하는 생각이 든다. 아이디어는 너무 좋은데 컨텐츠는 한정되어 있고 새로운거에 항상 배고파하는 아이들에게는 기껏해야 1~2달 가지고 놀 장난감에 불과했던게 아닌가 싶다. 심지어 게임조차도 1달정도 사용하면 버리는데 교육목적의 장난감이라면 1주일이나 갈려나 싶다.

필자도 어릴 때 저런 장난감들을 어머니께서 많이 사주셨다. (어머니 감사하고 사랑합니다.) 이 못난 자식에게 많은 투자를 하셨지만 아직도 투자대비 성능이 안나오고 있는 상황이다. (흑흑 ㅠ) 어쨋든 그런 것들을 필자도 조금 쓰다가 버리는 상황이 비일비재했고 내 생각에는 교육목적으로 아이들에게 무언가를 가르친다는 것은 너무나 어려울 것 같다. 가능하면 게임과 연동한 알게 모르게 교육되는 것을 가르치면 좋을 것 같은데 ... 그냥 생각 뿐이다. 그런게 가능했으면 벌써 옛날에 머리 좋은 사람들이 만들지 않았겠는가.

아이디어는 정말 좋은 Siftables 이지만 현재는 성공하지 못한 제품에 불과하다. 아마 많은 걸림돌들에 의해 쓰러졌거나 시대를 너무 빠르게 타지 않았나 싶다. 아무리 좋은 아이디어라도 시대를 너무 빨리탄다면 성공하기 힘들다. 라는 것을 배울 수 있었던 TED 이다.



Friday, December 26, 2014

[매드프로젝트 강좌] CORDIC - 02. 알고리즘-1

후.. 전 강좌에서는 CORDIC 내용보다 잡소리가 더 길었던 것 같은데 이번에는 제대로! 알고리즘을 파해쳐 보자.

CORDIC 알고리즘을 통해서 여러 어려운 연산들을 간단히 비트 쉬프트(bit shift), 가산, 감산, LUT(Look Up Table)을 통해서 처리할 수 있다.

CORDIC 알고리즘은 함수를 2차원 평면상의 벡터로 보고 반복되는 벡터 회전을 통하여 수렴한 해를 얻을 수 있는 반복 계산 해법이다. 이 알고리즘은 회전 모드와 벡터 모드의 두가지 모드가 존재한다.

회전 모드는 임의 벡터를 희망하는 가도까지 반복 회전시켜 목적 값에 수렴시키는 것이고
벡터 모드는 회전한 각도를 기록해 가면서 임의 벡터를 X축 까지 회전시키고 그 회전 각도와 원래의 벡터 크기를 해로 해서 얻는다.

좀 더 쉽게 설명하기 위해 그림과 수식을 첨부한다.

기본 아이디어는 아래와 같다.

그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC

2차원에서 시작을 (1,0) 으로 하고 각도를 θ (theta) 라고 하면 우리는 임의의 좌표 (cosθ, sinθ )를 얻을 수 있다.

그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC

한단계 더 나아가서 시작점을 (1,y)로 두고 y = 0일대까지 회전하면 각도는 tan^-1(y) 가 된다.


이를 바탕으로 임의 (x,y)에서 다른 임의의 점 (x',y')를 나타내면

x' = x*cos(θ ) - y*sin(θ )
y' = y*cos(θ ) + x*sin(θ )

로 (x',y')를 나타낼 수 있고 (헉헉...) 삼각함수 공식인 sin(θ )/cos(θ ) = tan(θ ) 에 의해서 다시 식을 바꾸면

x' = cos(θ )*[x - y*tan(θ )]
y' = cos(θ )*[y + x*tan(θ )]

가 되는 것이다. (헉헉... 먼가 어려워 보이지만 우리가 중학교 때 배웠던 삼각함수 공식들이다 .. 난 이전에 멀 공부한거니ㅠ)

일단 핵심이 되는 첫번째 공식을 얻었고 두번째 원리를 찾아보자.

사실 두번째는 나도 이해가 안가서 자료 그대로 올린다.(ㅠ 눙물.. )


 cos(θ )
- Reduces the magnitude of the vector
- If dont' multiply -> pseudo rotation
tan(θ )
- Rotates the vector
- Break θ  into a series of successively shrinking angles ai such that tan(ai) = 2^-i

으악.. 해석 안된다. 하지만 이해는 했다. 수학이 좋은게 참 세계 공용어라는거!!!
핵심은 

tan(ai) = 2^-i  or ai = tan^-1(2^-1)

이거다!!

이걸 해석하면 아래와 같다.


i를 증가시켜서 ai 를 점차 감소시키면 어떤 각도(θ )도 만들어 낼 수 있다는 것이 바로 위의 공식이 되시겠다. 식으로 다시 정리하면 

θ = ±a0±a1±a2 ..... ±a9

정확도는 아래 식에 의해서 
ai ≤ SNj=i+1 (ai+1)

10^-5 deg accuracy 이다.

위 식을 통해 예를 들어 설명하면 아래와 같다.



θ  = 30.0도 라고 가정했을 때 
a0 = 45.0 ( > 30.0 ) 30도 보다 크므로 다음 음수
45.0 - 26.6  = 18.4 ( < 30.0 ) 30도 보다 작으므로 다음 양수
18.4 + 14.0  = 32.4 ( > 30.0 ) 30도 보다 크므로 다음 음수
32.4 - 7.1  = 25.3 ( < 30.0 ) 30도 보다 작으므로 다음 양수
.
.
.
θ  = 30는 
45.0 - 26.6 + 14.0 - 7.1 + 3.6 + 1.8 - 0.9 + 0.4 - 0.2 + 0.1 = 약30.1 로 계산이 된다. 

그럼 위에 나온 첫번째 식과 두번째 원리를 이용하여 정리하면 

두번째 원리에 의해 
θ  = ±a

이므로 첫번째 식은 

x' = cos(ai)*[x - y*di*tan(ai)]
y' = cos(ai)*[y + x*di*tan(ai)]
di = ±1

가 되고 위에서 뽑아낸 기본 원리에 의해 

tan(ai) = 2^-i 

식을 한번 더 정리하면

x' = cos(ai)*[x - y*di*2^-i]
y' = cos(ai)*[y + x*di*2^-i]
di = ±1

가 된다. 여기서 cos(ai)를 Ki로 치환 하면
(참고 cos(ai) = cos(-ai) )

식은 다음과 같다.

x' = Ki*[x - y*di*2^-i]
y' = Ki*[y + x*di*2^-i]
Ki = cos(ai) = cos( tan^-1(2^-1) )
di = ±1
오메 힘들다... 드뎌 뽑아낸 식이 다음과 같은데 아직 끝난게 아니다. cos이 들어가는 Ki가 남아 있지 않은가?!

Ki = cos(ai) = cos(-ai)

이므로 매번 i값이 변할 때마다 계속 곱한다는 것을 수식으로 나타내면 


n이 무한대로 갔을 때 K 값은 하나의 상수로 나타 낼 수 있게 된다.

아 힘들다... 거의 다 왔다.

위의 것을 정리하는 최종 알고리즘은..........

다음 포스팅에서 계속 설명한다.


[일상] 움직이는 구글 로고



언제나 처럼 크롬을 실행시켰는데

구글 로고가 독특한게 보이네요.

그래서 어떤 영상일까 궁금하여 눌러봤습니다.

BGM까지 신경쓴 구글의 흔적이 너무 대단합니다.

영상을 보며 느껴지는 것은 사랑, 작은 도움 같은 것들이 메시지로 전달되네요.

마치 주마등처럼 지나간 2014년이 흘러갑니다.

아듀 2014!

Wednesday, December 24, 2014

[매드프로젝트 강좌] CORDIC - 01. 개념


오랜만에 조금은 전문적인 강좌를 해보고자 한다.
이유는 어쩌다보니 이 CORDIC에 관한 자료를 찾게되었는데 인터넷 블로그에 제대로 설명된 블로그가 개인적으로 검색(?) 했을 때 나오지 않는 것 같다.

홍익인간의 뜻으로 자료를 한글로 정리하고자 한다.
짧은 영어 실력과 나쁜 머리로 이해한 것이니 .. 혹시 틀린게 있더라도 널리 이해를 바란다.(리플 달아주시면 더욱더 감사드립니다.)

우선 CORDIC이 무엇인지 알아보자.

CORDIC란? COordinate Rotation DIgital Computer의 약어로 1959년 Volder에 의해 나온 알고리즘이다. 이 알고리즘을 이용하여 삼각 함수, 쌍곡선 함수, 승산, 나눗셈 등을 할 수 있다.

응? 삼각 함수, 쌍곡선 함수, 승산, 나눗셈 등은 이미 가능한데 이건 먼소리인가?

후.. 이걸 설명하려면 조금 더 거슬러야 하는데 최대한 간략히 설명해 보도록 하겠다.

우리가 이미 사용하고 있는 컴퓨터 언어는 굉장히 상위레벨의 언어들이다. JAVA, C/C++, C# 등 이 되겠는데 여기서 사용하는 언어에서는 +, -, *, /, %, sin함수, cos함수, tan함수, root 등을 사용하여 단순하게 기입한다.

그러나 실제로 이렇게 사용한 것들을 컴파일러를 통해 컴퓨터언어로 바꾸게 되고 최종적으로 CPU 또는 MCU 등에서 처리 할 때는 하드웨어로 처리하게 되는 것이다.

그래 .. 내가 멀 코딩하던 그게 최종 처리하는건 하드웨어인걸 알겠어 그래서?

문제는 하드웨어에서는 우리가 표현할 수 있는 한계가 바로 0과 1 이라는 것이다. 이것만을 가지고 덧셈, 뺄셈, 곱셈 정도는 그럭저럭 할 수 있지만 나눗셈, 삼각함수 등으로 넘어가게 되면 엄청나게 복잡해지고 느려지게 된다. 거기다가 소숫점이라니... 하드웨어로 소수점을 표현하기 위해서 고정소수점과 부동소수점이 있는데 부동소수점 같은 경우에도 엄청나게 복잡한 하드웨어가 필요하기 때문에 느려지고 커지게 된다. (이를 특화 시킨게 DSP 임)

자 .. 그럼 이거랑 CORDIC랑 어떤 연관이냐 하는 것인데 이전 암호화 강좌에서 한번 언급했듯 인류가 발전하게된 가장 큰 원인은 바로 '전쟁'에서 나오는 것인데 CORDIC 또한 군사용으로 사용하게 되었다. 바로 대표적인게 군용 레이더 이다. 속도를 빠르게 하기 위해서는 위의 문제로 인해 가능하면 하드웨어로 처리하는 것이 좋다. 따라서 적보다 빠르게 레이더로 발견하기 위해 삼각함수나 나눗셈 같은 연산들을 하드웨어로 처리하려고 보니 너무너무 복잡하고 느리고 크기가 커지게 되는데 여기서 이 CORDIC 연산을 사용하게 되는 것이다.

아마 처음에는 LOGIC 게이트인 74 시리즈 칩들만을 이용하여 CORIDC 연산기를 설계하지 않았나 싶은데 지금은 주로 FPGA, ASIC을 위한 알고리즘으로 많이 사용하고 있으며 Pipeline 설계에도 적합하다.

들리는 말로는 이 CORDIC을 증명하신 Volder 님께서 알고리즘 특허를 내셨으면 아마 때돈을 손에 쥐셨겠지만 '널리 인간을 이롭게 한다'는 취지로 특허를 일부러 안내셨다고 하는 카더라가 있다.

그냥 생각난거지만 특허라는 제도도 사실은 '널리 인간을 이롭게 하자' 라는 것에서 부터 시작된 것이다. 특허를 통해서 기술을 공개시키지만 그것에 대한 소유권을 보장해주고 대신 특정기간이 지난 후에는 인류를 위해 누구나가 사용할 수 있도록 하는 것이 바로 특허제도 인 것이다. 재밌지 않은가??

이를 이용해서 아주아주 옛날에 개발되었지만 최근에서야 급격하게 떠오르고 있는 것이 3D 프린터 되시겠다. 특허 풀리면서 제조 산업의 구조가 변하고 있다는...

잡소리가 긴데 마..마지막 하나만 더... 재밌는 단어가 있어 공유하고자 한다.

세상이 천천히 '시나브로' 변하고 있다.

시나브로 .. 이 이쁜 순우리말을 왜 난 모르고 있었지??

다음 강좌는 실제로 CORDIC 알고리즘에 대해서 설명한다... 쿨럭;

[일상] 욕


ㅎㅎㅎ 아침부터 욕 얘기가 나오더니 갑자기 기억 속에 어릴적에 욕을 처음 들었을 때가 희미하게 생각이 났다.

어제 일하면서 머리좀 써서그런가 아주오래전 .. 유치원때 일 같은데 어렴풋이 기억이 난다.

그 느낌 잊지 않기 위에 잠시나마 기록으로 남겨보려고 한다.

유치원때 나는 못사는 동내에 살았는데 그때는 저녁만 되면 동내 아이들이 밖으로 나와서 서로 뛰어 놀았다. 기억에는 나도 그 어떤 한 무리에 끼어 같이 놀았던 기억이다. 나보다 나이가 많은 여자아이였는지 아니면 어린 여자아이였는지는 기억나지 않는다. 다만 그 무리를 리딩하고 있던 여자아이 였던 것 같다.

그 여자아이가 처음에 '개ㅅㄲ' 라던가 'ㅁㅊㄴ' 이라는 말을 썼을 때

'응? 저건 무슨 단어지?' 라고 생각했던 기억이 느낌으로 남아있어 이 기억을 남기고자 글을 쓴다.

그 당시 그 말을 들었을때는 아무 느낌도 없었다. 그냥 '단어' 라는 느낌일 뿐 ..
아마 그 아이도 어른들로 부터 들은 욕을 써먹었던 거겠지.

아... 얼마나 순수한가.

난 사람은 태초부터 악하다는 '성악설'을 믿는 사람 중에 하나이다.

그러나 이 기억으로 인해 어쩌면 사람은 백지로 시작해서

다른 사람들에 의해 검게 물들어 지나보다.

그냥 왠지 크리스마스 이브고 해서 끄적여 봤다.


Sunday, December 21, 2014

[이번주 TED Talk] Jay Walker: The world's English mania


이번 주제는 English Mania에 관한 내용이다. 영어를 잘 못하는 내가 선택한 TED로 당연히 내용도 짧고 쉽다. 2009년 TED로 조금 오래된 TED라 현 상황과는 안맞지만 영어를 '왜' 배워야하는가에 대하여 조금이라도 동기부여하고자 선택하였다.

5분도 안되는 내용으로 세계에 많은 매니아들이 있지만 그중 왜 많은 사람들이 영어를 배우고자 하는가에 대하여 설명하고 있다. 사실 많은 사람들이라기 보다는 주로 중국인들을 대상으로 설명을 한다랄까... 내용만 보면 중국과 한국의 현실이 크게 다르지 않다. 다들 성공하고 돈을 더 많이 벌기 위해서 영어를 배우고 노력한다는 이야기 이다. 미국이 영어를 배우라고 하는게 아니라 세계적인 문제점들과 해결책에 대하여 서로 논의하고 해결하기 위해 영어를 배우고 있다고 전달하고 있다. 보다보면 조금 영어 우월주의? 같은 느낌도 있지만 어쩌겠는가 사실이고 한국도 영어 배울려고 난리치고 있는것을. 그러나 최근 한국추세는 조금 달라지고 있다. 세계 경제 2위로 떠오른 중국, 세계 최대 시장을 가지고 있는 중국 덕분에 영어보다 중국어를 더 많은 사람들이 배우려고 노력하고 있다.

이제는 영어뿐만 아니라 중국어도 당연히 해야하는 시대가 온 것이다. ㅠㅠ 사실 언어라는 범위에서 보면 나도 여러가지 언어를 하고 있다고 생각한다. 한국어, C언어, VerilogHDL언어, 여...영어? 사실 컴퓨터 언어도 컴퓨터와 대화 할 수 있는 하나의 언어이다. 일반 언어보다 훨~~~씬 쉽고 간단하지만 그래도 언어니까 나도 4개 언어를 한다고... 말하면 욕먹으려나 ... ㅋㅋ

나중에 무조건 필요하게 된다!! 길게~~ 열심히 해보자 영어!!!

Friday, December 19, 2014

[올해 그리고 내년] 2014년을 되돌아 보고 2015년 계획

2014년 올해 리뷰
초반에 영어 회화 학원 깔짝 다니다 실력안되서 그만두고 스터디 모임으로 변경
영어 회화 학원 그만두면서 재미삼아 오픽 봤는데 운좋게 IM2 나옴
나이키 마라톤 21키로 2시간 이내 들어옴. 완주 목표였는데 굉장히 만족스러운 결과
블로그 라는 것을 시작함. TED 통해 동기 부여 받아서 시작 했는데 너무너무 만족스러움
인생의 터닝 포인트 수준임(어떤 일에 대해서도 블로그 포스팅을 통해 동기부여 )
이외에 블로깅을 통해서 말하는 스킬, 글쓰는 스킬, 생각하는 방법 많은 것들을 습득
가장 중요한 어떤 모르는 부분에 대해서 접근하는 방법을 습득하고 알게 .
이를 통해 강좌라는 것을 하게 되고 오프라인 과외도 도전하여 진행함
사업 모임으로 시작된 친목 모임으로 유투브 동영상도 찍고 이것저것 많이 했으나 중간에 드롭
스타트업 스터디 모임으로 변경하여 필요한 인력 모으고 조금 시스템 기반에 제대로 진행 시작
관련 자료 블로그로 정리하면서 진행

정리

  1. 영어 회화 학원 다님(중간에 포기)
  2. 영어 스터디 모임 시작
  3. 나이키 마라톤 21키로 2시간 이내 완주
  4. 인생 블로깅 시작(영화 블로그 따로 시작)
  5. 사업 친목 모임에서 스타트업 모임으로 제대로 시작
  6. 온라인 강좌(기초) 완료
  7. 전공 과외 시작
  8. 목표 없이 세권 읽음

2015년 내년 계획
    1. 영어 - 말하기, 듣기, 쓰기
      1. 주말 TED 스터디 계속 해서 유지 하기 - TED 자체가 내용이 좋고 영어는
        1. TED 관련 요약 포스팅
      2. EBS 이용해서 무조건 외우기
      3. 매일 저녁 9 스타벅스에서 공부 - 1시간~2시간

    1. 스타트업 모임 유지
      1. 스타트업 관련된 아이디어 회의 유지
      2. 작은 아이템 구현 유지 관련 자료 포스팅
      3. 경영, 마케팅, 기획 지분, , 관련한 자료 공부 포스팅
      4. 국가 과제 따내기!!!!( 5000 ~ 1) - 실질적인 스타트업

    1. VerilogHDL 문법 외우기!
      1. /표준 문서 선정해서 목차 잡고 블로그 강좌로 리뷰 정리하면서 진행
      2. 업무 시간 또는 아침 30 활용하여 블로그 포스트 작성
      3. 2~3 포스트 작성

    1. 1 읽기(최소 12!!)
      1. 읽고 간단한 리뷰도 포스팅
      2. 1 이상 독서관 가기
      3. 점심 시간이나 대중 교통 이동할 틈틈이 읽기

    1. 영화 블로그 운영하기
      1. 최소 달에 1편이상 보기
      2. 최소한 매주 1편이상 리뷰 포스팅 쓰기(최소 42)
      3. 예고편은 시간 마다 간략히 쓰기

    1. 소설 쓰기(1 5000~10000)
      1. 단편 소설일 경우 하루에서 일주일 정도의 이야기(200 원고지 80 내외 16000)
      2. 장편 소설일 경우 한달 에서 1 정도의 이야기
      3. 인터넷 소설의 적정량은 최소 3000 최대 8000 이상적인 45000
      4. 블로그에 소설 카테고리를 만들어 자기 30 마다 적기

    1. 해외 여행 최소 1번이라도!
      1. 예상 지역은 홍콩, 대만, 싱가포르 정도가 될 듯…
      2. 기간은 7~8 여름 휴가 또는 언제든지 연차랑 주말 껴서

    1. 유투브 영상 찍어 올리기
      1. 읽어 주기 - 하루 10~15 나도 읽고 영상도 찍고/음성 장비 필요?
      2. 영화 소개 하기 - 여러 방법을 강구 중이지만 쉽지는 않을
      3. 전공 살려서 먼가 만드는 보여 주기 - 이것도 쉽지는 않을

    1. 나이키 마라톤 10km 도전!~
      1. 50 이내 들어오기(10km 등록 실패 21키로 2시간 이내 들어오기)

    1. 수영으로 한강 건너기
      1. 장애인 수영 대회( 6~7 예상) 처음이니까 가능하면 끼고?

    1. 가상 회사 만들기
      1. 나만의 가상 회사를 만들어 운영 해보기
      2. 과외를 통한 교육, 간단한 제품(PCB 까지) 이용한 판매
        1. 자전거 LED, 최대한 SIMPLE한 무언가…
        2. 아이디어 필요
      3. 네이버 스토어팜 이용 수수료 때이고 무료 인터넷 판매 편함

Monday, December 15, 2014

[LINUX] vi 찾기, 찾아바꾸기

vi에서 특정문자를 여러개 바꾸기를 진행하다보니 예전에 썼었던 찾아바꾸기가 기억나지 않아 검색하고 있어서 이번에 정리를 좀 해보려고 한다. (LINUX 카테고리 잡아 놓고 vi만 쓰고 있다... )

우선 가장 기본적인 vi에서 검색은
그냥

/검색문자

하면 된다.
예를 들면

fgh를 검색하고 싶다 하면

/fgh 

하면 fgh가 모두 하일라잇 된다.

위에서 아래로 계속찾기 하려면 n 을 누르면 되고
아래에서 위로 다시찾기 하려면 N 을 누르면 된다.

반대로 찾기를 하기 위해서는

?fgh


하면 fgh가 모두 하일라잇 되며

/fgh와 반대로

위에서 아래로 계속찾기 하려면 N 을 누르면 되고
아래에서 위로 다시찾기 하려면 n 을 누르면 된다.


그럼 찾아바꾸기는 어떻게 하는 것인가??
조금 복잡하지만 일단 예문부터 보자

:%s/fgh/FGH


이렇게하면 전체에서 fgh가 FGH로 변하게 된다.

그럼 내가 원하는 부분만 바꾸려면?

:%s/fgh/FGH/c


c 옵션을 붙이므로써 y를 누르면 바뀌고, n를 누르면 다음으로 건너뛰고, a를 누르면 모두 바뀐다.

잠깐 정리하면 찾아바꾸기는

:(시작줄),(끝줄)s/(찾을패턴)/(바꾸는스트링)/옵션

이 되시겠다.

여러가지 예문을 써보면

:1,5s/a/b - 1번째 줄부터 5번째 줄까지 a를 b로 바꾼다.
:.,.+10s/a/b - 현재 커서위치 줄부터 현재커서위치줄 + 10줄 까지 a를 b로 바꾼다.

이런 식으로 사용할 수 있는 것이다.
이를 응용하면 정말 무궁무진해 지는데 ... 일단 여기까지만 설명 하도록 한다.
응용은 여러분드리 알아서~

마지막으로 옵션을 정리하면
g : global - 한 줄에 패턴이 여러번 나오면 모두 바꿈. 지정 안하면 줄에 첫번째 패턴만 변경
i : ignore case - 대소문자 구분 하지 않음
c : confirm - 검색된 모든 문자열에 대해서 마꿀지 말지 물어봄


[이번주 TED Talk] Eric Giler: A demo of wireless electricity


이번 TED 주제는 wireless electricity에 관한 것이다. TED는 2009년 것인데 사실 지금 생각하면 무선 충전 기술이 많이 상용화 되어 있는 상태이기 때문에 별로 특별해 보이지 않을 수 있다. 하지만 당시에는 공명을 이용한 무선 충전 기술은 가히 획기적이였다고 할 수 있다. 이번 TED의 전반적인 내용은 무선 통신기술이 어디서부터 시작되었고 현재 어디까지 와있는지 데모를 통해서 보여주는 TED 이다.

사실 필자는 전공이 전자 쪽이기 때문에 이 TED를 이해하는데 큰 어려움이 없었다. 대부분 항상 봐왔던 전공영어 이고 그냥 보고 느낀다는 느낌?(그렇지만 영어는 이해 못하는 ㅠㅠ)하지만 비전공자들에게 이 TED가 얼마나 어려운지를 스터디가 아니였다면 나는 아마 이해하지 못했을 것 이다. 곰곰히 생각해보니 전자 전공이면서 다른 분야에 대한 얘기를 들었을 때는 내가 바보같을 정도로 이해가 안될 때가 많았다. 아마 반대로 생각하면 비전공자들에게 이번 TED도 마찬가지가 아니였을까 라는 생각이 든다.

이번 TED를 보기전에 반드시 알아야 할 부분이 있는데 니콜라 테슬라(Nikola Tesla)와 토머스 에디슨(Thomas Alva Edison) 이다. 어릴 때는 에디슨이 전기를 발명하고 대단한 사람인 줄 알았다. 그러나 이 분야를 공부하면서부터 에디슨은 그냥 정치나 잘하는 사람이고 니콜라 테슬라가 진정한 엔지니어이고 과학자 였다는 것을 알 수 있다. 아마 대부분의 엔지니어는 에디슨 보다 테슬러를 훨~~씬 더 높게 평가하고 있을 것 이다. 하물며 최근에 아이언맨의 실제 모델로 유명한 엘론 머스크가 세계 최대의 전기자동차 회사의 이름으로 테슬라 모터스를 선택한 것을 보면 잘 알 수 있을 것 같다. 테슬라와 에디슨에 대한 여러 이야기들과 영화들이 있지만 이것도 다음 포스팅에서 다시 재밌게 다뤄보도록하고 최근 무선 충전기술의 바탕이 되는 기술이 무엇인지를 조금이나마 알 수 있는 이번 TED를 재밌게 감상해 보도록 하자.



Tuesday, December 9, 2014

[오늘의 반도체 용어] What is MIPS

오늘은 MIPS가 무슨뜻인지 알아보자.

컴퓨터 성능을 나타내는 지표 중 하나로 MIPS(Millon Instructions Per Second)가 사용된다. 이는 1초당 1백만 회의 명령 실행하는 연산속도를 의미한다.

그러나 이번에 설명하고자하는 MIPS는 다른 의미의 MIPS를 설명하고자 한다.


MIPS : Microprocessor without Interlocked Pipeline Stages의 약자로 밉스 테크놀로지에서 개발한 RISC 마이크로프로세서 이다.

MIPS 아키텍쳐는 RISC 기반으로 ARM 과 동일한 방식을 사용하고 있다. MIPS는 르네사스, 소니 플레이스테이션 등 많은 부분에서 사용되어 왔다. 그러나 안타깝게도 모바일에서 ARM에 밀리면서 대부분의 중요 라이센스를 ARM 관련사에 모두 팔아버리고 결국에는 유명한 영국의 그래픽, 비디오 IP 전문 업체 이미지네이션테크놀로지가 엄청 싼 가격으로 인수하게 된다.

처음에는 중요 라이센스를 이미 다 넘긴 상황에서 이미지네이션사의 MIPS 인수는 부정적이였다. 하지만 이미지네이션사가 기존에 가지고 있던 시장을 바탕으로 MIPS CPU를 프로모션하고 있으며 모바일 최강자인 ARM을 상대로 얼마나 선전할 수 있을지 기대된다.



Monday, December 8, 2014

[이번주 TED Talk] Uldus Bakhtiozina: Wry photos that turn stereotypes upside down


제목부터가 흥미로운 주제이다. 처음 문득 영어 못하는 내가 봤을 때는 Wry가 Why 인 줄 알았다. Wry는 비꼬는, 풍자적인 이라는 뜻을 가지고 있는 단어이다. 예를들어 a wry comment라고 하면 비꼬는 듯한 논평 또는 wry humour라고 하면 풍자적인 유머 정도가 되겠다.

전체적인 내용은 Uldus Bakhiozina가 그린 풍자적인 사진에 대한 것들이다. 이것들을 그녀는 아이러니(irony)라고 표현하였는데 반대되는 말이나 상황을 통해 효과를 보는 것을 말한다. 어리고 나약한 어린아이에게 스타워즈의 스톰투퍼(Storm trooper) 마스크를 씌워 무서운 얼굴에 나약만 몸을 가진 소년 사진이나 강인한 남성상인 러시아남성에게 여성옷을 입혀 사진을 찍는다던가 하여 아이러니한 사진을 통해 그녀는 메시지를 전달하고자 한다. 심지어 irony로 장난도 치는데 irony -> Iron Man -> ironing man~~~~?~?!?!? ... 머 그렇단다. 마지막으로 그녀의 마지막 한마디가 가슴에 와닿아 그대로 남기고자 한다. 필자도 나름 평범하다고 생각하지 않기 때문에 더 공감되었는지도 모르겠다.

Be brave. Be ironic - it helps. Be funny and create some magic.



Monday, December 1, 2014

[오늘의 반도체 용어] What is Metastable


이번에는 front-end 엔지니어가 반드시 알아야할 Metastable에 대하여 알아보도록 하자. metastable은 말 그대로 '준안정'을 말한다. 한글로 쓰니까 먼가 괜찮아 보이는 용어 같지만 실제로 Digital 회로에서 가장 문제가 되는 부분이 이 Metastable 님 되시겠다.  좀 더 쉽게 풀어서 설명하면 Digital에서 신호는 0 또는 1 이다. 그러나 metastable은 0도 아니고 1도 아닌 상태를 말하는데 이것을 이전 포스팅([반도체기초] High Impedance(z) and Unknow(x))에서 설명한 unknown 상태가 되는 것이다. 이 상태가 되면 이후 로직에 영향을 주기 때문에 설계자가 원하는 대로 동작하지 않게 된다. 따라서 metastable은 로직 설계 엔지니어라면 반드시 조심해야할 문제인 것이다.

그렇다면 이 metastable은 왜 생기는 것이며 어떻게 없앨 수 있는 것일까?

엔지니어가 디버깅할 때 가장 중요한 것이 필자는 '원인'을 찾는 것이라고 생각한다. 모든 문제는 원인만 찾는 다면 십중팔고 50%는 이미 해결했다고 봐도 과언이 아니다. 그러나 이 세계에서 눈에 보이는 것이 많지 않고 인간이라는 존재가 항상 실수를 할 수 밖에 없기에 정확한 원인을 찾는것이 정말 쉽지 않다는 것이 문제이다.

이야기가 조금 샛는데 다시 돌아와서 metastable이 발생하는 원인은 무엇일까? 보통 비동기(asynchronous)로 인하여 발생하게 된다. 동기(Synchronous)방식으로 설계된 회로는 정확한 엣지에서 신호를 주고 받기 때문에 설계자가 신호를 어느정도 예측할 수 있는데 비동기(asynchronous) 신호는 언제 신호를 받을지 알 수가 없기 때문에 자칫하면 metastable 신호가 만들어지게 되는 것이다. 보통은 서로 다른 소스의 clock 간에 데이터나 신호를 주고 받게 되면 발생하게 된다.(CDC 라고 하나 다음 포스팅에서 다룰 예정)

해결책은 무엇인가!? 가장 일반적인 방법은 Synchronizer(Flip-Flop 2개를 연달아 사용)를 사용하는 것이다. 디지털 설계에서 조심해야할 부분이 metastable 상태이니 반드시 고려할 수 있도록 하자.