본문 바로가기

전체 글

(75)
Metastability Metastability Asynchronous clock간 신호를 교환 할 시 보통 Flip-Flop 2개를 연달아 지나가도록 설계합니다. 이러한 방법으로 Metastability를 피할 수 있다고 하며 Metastability란 간단히 Low-level도 High-level도 아닌 중간 상황이 지속되는 것을 말합니다. 이것 말고 unknown이라는것도 있는데 이것은 말 그대로 Low인지 High인지 모르지만 둘 중 하나인것입니다. Metastability는 중간값을 가지는 것이 문제입니다. 문제가 되는 이유는 CMOS 회로는 간단하게 PMOS로 이루어져 VDD로 출력을 연결하는 PULL-UP회로와 NMOS로 이루어져서 출력을 GROUND로 연결하는 PULL-DOWN회로로 구성됩니다. 그래서 일반적인 ..
LFSR( Linear Feedback Shift Register) 디지털 회로에서 현재 상태에 대한 선형 연산( linear function)으로 다음 상태를 만드는 레지스터다. 해당 연산에는 다양한 종류들이 있겠지만 일반적으로 쓰이는건 XOR이라고 한다. LFSR의 초기값은 Seed라고 부르며 다음 상태를 생성하는 연산에 관여하는 bit는 tap이라고 하며 또한 가장 오른쪽에 있는 bit를 output bit라고 한다. 기본적인 내용은 다음과 같다. LFSR의 초기값을 다음과 같은 8bits로 설정한다. 현재의 상태는 0x59이다. LFSR의 tap이 5, 6, 8번째 bits라고 가정하자. 현재 상태의 output bit과 tap들을 XOR 연산시킨 값을 MSB로 보낸다. 다음 상태는 0x2C가 되었다. 같은 방법으로 다음 상태를 계속하여 생성할 수 있다. 8bit..
Double Dabble BCD( Binary Coded Decimal) 2진수 4비트를 묶어서 10진수 한 자리를 나타내는 코드. 따라서 BCD는 10진수로 표현하기 용이하다. 하지만, 일반적인 2진수로 10진수를 나타내기는 쉽지 않다. 그래서 사용하는 알고리즘이 shift 더하기 3 알고리즘, Double Dabble 알고리즘이다. 이 알고리즘을 간단하게 설명하면 다음과 같다. 일반 2진수 코드를 왼쪽으로 1bit씩 shift한다. 4bits씩 묶어서 5 이상인 자리에는 3을 더해준다. 모든 bits가 왼쪽으로 shift 될 때까지 위 과정을 반복한다. $log2=0.3010..$이므로 10진수 한 자리를 표현하려면 약 3.33bits가 필요하다. 예를 들어, 2진수 11001100( =204)을 BCD코드로 변환하면 약 3..