Tech
-
맥북 에어 전원을 눌러도 응답이 없을 때Tech/Computer 2012. 7. 27. 13:06
2011년 SSD를 장착하고 가격거품을 쫙 뺀 맥북 에어가 등장하면서, 노트북 시장은 거의 평정되다시피 했다. 요즘 들어서는 어딜가도 맥북을 쉽게 볼 수 있게 되었고, 더이상 맥북 에어는 신기한 게 아니게 되었다. (하지만 OSX를 쓰는 맥북에어는 여전히 신기한 수준이다.) 아무튼 2012년 중반에 들어서, 이 새 버젼의 맥북에어도 사용자들이 쓰기 시작한지 대략 1년이 넘어가는 시점인데 전자기기인 만큼 문제가 안생길래야 안생길 수가 없다. 어느날, 맥북 에어 전원을 눌러도 아무런 변화없이 켜지지 않는 일이 발생했다. 배터리 문제인가 싶어, 어댑터를 연결했지만 아무리 기다려도 상황은 똑같다. 이럴 때, 인터넷에 찾아보면 흔히 한가지 방법이 제시된다. "shift+control+option+전원을 누르면 S..
-
파티클 필터 (Particle Filter)Tech/Computer 2012. 7. 11. 23:33
물체를 추적할 때 최근 들어서 가장 많이 쓰이는 알고리즘이라고 한다. 물체 추적으로는 여러가지 방법이 있는데, 그 중 유명한 것으로는 칼만 필터 (Kalman Filter)가 있다. 정확도가 높은 방법으로 유명하지만 Linear 시스템, 그리고 Gaussian Noise가 있는 경우에 그 정확도가 보장된다. 하지만 실제로는 이러한 조건들이 지켜지지 않는 경우에도 추적을 해야하며, 이 때 Particle Filtering을 사용할 수 있다. 파티클 필터(Particle Filter)는 Kalman Filter가 기반하는 해석적 방법 (선형 운동으로 가정하고 parameter를 찾아간다던가 하는) 이 아니라, trial and error에 기반하는 시뮬레이션을 통한 예측 기술의 하나로, SMC (Sequen..
-
Eclipse 실행 시, "JVM terminated. Exit code=13" 에러 해결하기Tech/Computer 2012. 5. 24. 03:09
Linux 머신에서 쓸 용도로 Eclipse를 설치하였더니, 아래와 같은 에러 메시지를 출력하면서 실행되지 않았다. 오라클 홈페이지에서 JAVA 가상머신을 깔았는데도 불구하고! 이 문제는 Eclipse가 요구하는 자바 버젼과, 현재 참고하고 있는 자바 가상 머신의 버젼이 다르기 때문이다. "오라클 홈페이지에서 최신 버젼 JAVA 를 다운로드받아 설치했는데? 뭐가 문제일까?"하고 생각하는 사람이 있다면, 바로 그 "최신버젼"이기 때문에 문제다. Linux Eclipse에서는 최신 버젼이 필요한게 아니라, 정확히 eclipse가 원하는 "바로 그 버젼"이 필요하다. eclipse가 원하는 자바 버젼은 eclipse 경로 내에 있는 eclipse.ini라는 파일을 열어보면 된다. (혹은 위 에러 메시지에서도 ..
-
Verilog : parameter가 선언된 module은 합성 할 때 template을 명시하자Tech/Verilog 2012. 5. 22. 01:38
Verilog를 배우기 시작하면, 처음 얼마간은 C/C++나 Java 등 프로그래밍 언어처럼 접근해서 사용하며 친숙해지겠지만, 본격적인 반도체 설계에 들어간다면 Synthesis 과정 등을 위해 고려해야할 점이 더 많아진다. 특히, Synopsys 사의 Design compiler에만 적용되는 몇가지 Verilog keyword 들이 있는데 (// 주석을 이용한 pragma 등) module의 선언에 흔히 사용되는 parameter도 특정 pragma가 필요하다. Tool에 의존적인 키워드이기 때문인지 Verilog 강의 등에 포함하여 설명하는 곳이 거의 드문데, 이 때문에 직접 합성을 하다 삽질하는 경우가 빈번하다.아무튼, Parameter를 이용하여 선언된 module이 전체 합성되는 Verilog ..
-
Verilog : case문 사용 시, parallel_case 선언 이해하기Tech/Verilog 2012. 5. 21. 17:31
case와 if는 연속된 조건문을 비교한다는 관점에서 보면 그 기능이 동일하다. 특히, Verilog에서는 C/C++의 switch-case문과 달리 break 등을 따로 기술하지 않으므로 기능이 완전히 동일하다고 볼 수 있다. 예를 들어보자. 아래의 두 module은 기능적으로 동일하다. module interrupt_decode4 (output reg somthing, input [3:0] irq ); always @* begin if (irq[0]) do interrupt 0 else if (irq[1]) do interrupt 1 else if (irq[2]) do interrupt 2 else if (irq[3]) do interrupt 3 end endmodule module interrupt..
-
Verilog : case문 사용시 full_case를 선언하여 자동으로 생성되는 latch logic을 막자Tech/Verilog 2012. 5. 21. 17:11
간단한 3-to–1 MUX 예제를 살펴보자. module mux3to1 ( output reg y, input a,b,c, input [1:0] select ); always @* begin case (select) 2'b00: y = a; 2'b01: y = b; 2'b10: y = c; endcase end endmodule select는 2-bit input으로 가능한 경우의 수는 4가지가 있다. 하지만 위 case statement에서는 3가지 경우만 기술되어 있다. 2’b11에 대해서는 출력이 정의되어 있지 않은 상태다. 이 경우에는 해당 값이 기술되어 있지 않으므로 y 값이 이전과 동일하게 유지되어야 하는데, Design compiler에서는 이전 값을 유지하기 위해서 latch logic을 ..
-
Verilog : assert와 assert property 활용하기Tech/Verilog 2012. 5. 18. 15:49
Verilog는 하드웨어 개발을 위한 프로그래밍 언어라, 실제 하드웨어 합성(synthesis)을 위해서는 C/C++ 등 일반 프로그래밍 언어와 다른 점이 많다. 하지만, 시뮬레이션을 위해 보다 더 프로그래밍 언어적 요소가 많이 추가되어 왔으며, 특히 SystemVerilog에 이르러서는 2가지 타입의 assert 명령어가 지원되어 테스트벤치 작성에 많이 활용된다. Immediate type (assert) Concurrent type (assert property) 1.Immediate Type Assertions 먼저, Immediate type에 대해서 알아보자. 이 타입은 우리가 프로그래밍을 할 때 흔히 사용하는 일반적인 assert와 동일하다. Simulation 수행 중 assert문에 도달하..
-
UltraEdit에서 Verilog를 Syntax Highlighting 하고 싶을 때Tech/Computer 2012. 4. 8. 22:42
UltraEdit은 오래전부터 두터운 유저층을 가지고 있는 텍스트 에디터로, Hex 형식으로 파일을 열어본다던가, 혹은 다양한 형식, 크기의 파일들을 읽어들일 수 있는 파워 유저용 에디터이기도 하다. 또한 SSH를 통한 텍스트 에디팅도 편하기 때문에 Windows에서 작업할 일이 있을 때, Linux 머신에 접속해서 에디팅 하는 용도로도 많이 사용하고 있다. 이 UltraEdit을 통해서 C/C++ 등 간단한 프로그래밍 작업을 하기에도 용이한데, 비슷한 기능을 지원하는 타 에디터에 비해 (Notepad++이나, Vim, Emacs 등) 지원하는 언어가 많아보이지 않는다. 예를 들어, Verilog와 같은 HDL 언어 같은 경우는, UltraEdit에서 기본적으로는 지원하지 않는다. 그렇다고해서, 이러한 ..