2007년 04월 30일
Building 32bit ALU by cascading 74181 4bit ALU blocks #2
Building 32bit ALU by cascading 74181 4bit ALU blocks

GN[3..0], PN[3..0] 입력라인. 각 블럭에서 보내온 G, P 신호가 연결된다.
CI : 캐리 입력
PN : 간단히 말해서 PN[3..0] 에서 모두 신호가 있을 때 출력된다.
GN : 74182에 연결된 4개의 블럭에서 캐리가 생성될때 신호를 낸다. 즉, GN3 이거나 GN2PN3 이거나 ... PN[3..0]CI 이거나 이런 식이다. 이젠 익숙.
CX : 두번째 블럭에 보낼 캐리 신호
CY : 세번째 블럭에 보낼 캐리 신호
CZ : 네번째 블럭에 보낼 캐리 신호.
74182의 필요성이라면, 저번에도 이야기 했지만 캐리의 빠른 계산을 위해서이다.
74181 에서의 계산 딜레이가 10ns, 그리고 단지 PN GN 신호를 위한 딜레이가 5ns 라고 할 때(PN GN 신호는 각 입력라인의 간단한 비트 비교만으로 이루어지니 당연히 계산보다 빠르다.) 4개의 74181 블럭에서는 입력 이후 5ns 에 모두 PN GN 신호가 생성될 것이다.
74182 의 구조는 저번에 74181 블럭 위에 직접 and or 로 설계한 블럭의 연장이라고 생각하면 된다. and or 를 한번씩 거치면 되는 간단한 회로이므로 딜레이를 역시 5ns 라고 한다면 5ns 이후에 각 블럭에 보내줄 캐리 CX, CY, CZ 가 생성이 된다.
그럼 대략적이나마 5ns + 5ns + 10ns = 20ns 의 값을 얻을 수 있다. 저번에 했던 계산하고 약간 다른데.. 어차피 이건 절대적인 값이 아니므로 넘어가도록 하자 -_-
아마 이 시점에서 문제는 이럴 것이다. 16bit 라면 문제가 없지만, 32bit 라면?
16bit ALU 의 구성은 간단하다. 74181 4개와 74182 1개로 간단히 연결해서 만들 수 있으니. 하지만 32bit 라면 하위 16bit 에서 계산된 carry 가 상위 16bit 로 연결되어야 한다. 역시나 간단한 아이디어라면 4번째 74181 에서 나오는 CN4 를 5번째 74181의 CN 과 두번째 74182 의 CI 에 연결하는 것이다.
역시 여기서도 문제는 딜레이이다.
하위 16비트에서의 계산 딜레이는 아까 계산했듯 20ns 이다. 그렇다면 4번째 ALU 블럭에서 CN4 신호가 나오기 위해서는 20ns 가 필요하다는 것이다. 상위 16bit 에서는 하위16bit 로부터 carry 가 전달되어야 계산이 완료되므로 결국 20ns 이후부터 시작한다고 볼 수 있다. 직관적으로 40ns 임을 알 수 있다.
하나의 74181 블럭이 10ns 의 딜레이인데 8개를 연결했다고 40ns 의 딜레이라는 것은 공학인의 입장으로 견디기 힘든 딜레이 일 것이다. 물론 8개를 직렬 연결했을 때의 80ns 보다는 훨씬 줄어든 수치이지만, 이것 역시 줄일 수 있는 수치이다.
나머지는 다음 시간에.
저번에 마지막 부분에서 각 74181 블럭의 GN PN 신호를 이용해서 fast carry look ahead 연산을 할 수 있음을 보였는데, 아무래도 4번째 블럭에 가면 and or 게이트 연결의 압박이 느껴질 것이다. 이미 캐리 연산을 하는 블럭은 정의되어 있는데 그게 바로 74182 칩이다.

GN[3..0], PN[3..0] 입력라인. 각 블럭에서 보내온 G, P 신호가 연결된다.
CI : 캐리 입력
PN : 간단히 말해서 PN[3..0] 에서 모두 신호가 있을 때 출력된다.
GN : 74182에 연결된 4개의 블럭에서 캐리가 생성될때 신호를 낸다. 즉, GN3 이거나 GN2PN3 이거나 ... PN[3..0]CI 이거나 이런 식이다. 이젠 익숙.
CX : 두번째 블럭에 보낼 캐리 신호
CY : 세번째 블럭에 보낼 캐리 신호
CZ : 네번째 블럭에 보낼 캐리 신호.
74182의 필요성이라면, 저번에도 이야기 했지만 캐리의 빠른 계산을 위해서이다.
74181 에서의 계산 딜레이가 10ns, 그리고 단지 PN GN 신호를 위한 딜레이가 5ns 라고 할 때(PN GN 신호는 각 입력라인의 간단한 비트 비교만으로 이루어지니 당연히 계산보다 빠르다.) 4개의 74181 블럭에서는 입력 이후 5ns 에 모두 PN GN 신호가 생성될 것이다.
74182 의 구조는 저번에 74181 블럭 위에 직접 and or 로 설계한 블럭의 연장이라고 생각하면 된다. and or 를 한번씩 거치면 되는 간단한 회로이므로 딜레이를 역시 5ns 라고 한다면 5ns 이후에 각 블럭에 보내줄 캐리 CX, CY, CZ 가 생성이 된다.
그럼 대략적이나마 5ns + 5ns + 10ns = 20ns 의 값을 얻을 수 있다. 저번에 했던 계산하고 약간 다른데.. 어차피 이건 절대적인 값이 아니므로 넘어가도록 하자 -_-
아마 이 시점에서 문제는 이럴 것이다. 16bit 라면 문제가 없지만, 32bit 라면?
16bit ALU 의 구성은 간단하다. 74181 4개와 74182 1개로 간단히 연결해서 만들 수 있으니. 하지만 32bit 라면 하위 16bit 에서 계산된 carry 가 상위 16bit 로 연결되어야 한다. 역시나 간단한 아이디어라면 4번째 74181 에서 나오는 CN4 를 5번째 74181의 CN 과 두번째 74182 의 CI 에 연결하는 것이다.

하위 16비트에서의 계산 딜레이는 아까 계산했듯 20ns 이다. 그렇다면 4번째 ALU 블럭에서 CN4 신호가 나오기 위해서는 20ns 가 필요하다는 것이다. 상위 16bit 에서는 하위16bit 로부터 carry 가 전달되어야 계산이 완료되므로 결국 20ns 이후부터 시작한다고 볼 수 있다. 직관적으로 40ns 임을 알 수 있다.
하나의 74181 블럭이 10ns 의 딜레이인데 8개를 연결했다고 40ns 의 딜레이라는 것은 공학인의 입장으로 견디기 힘든 딜레이 일 것이다. 물론 8개를 직렬 연결했을 때의 80ns 보다는 훨씬 줄어든 수치이지만, 이것 역시 줄일 수 있는 수치이다.
나머지는 다음 시간에.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
# by | 2007/04/30 12:33 | 시간과 관련 없는 생각 | 트랙백(1) | 덧글(1)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : Building 32bit ALU by cascad..
Building 32bit ALU by cascading 74181 4bit ALU blocks #2지난번에 다루었던 문제에 대해 원하고자 하는 결과는 이것이다.32비트의 모든 입력이 주어졌을때, 적은 딜레이 a 후에 각 74181 블럭에서 PN GN 신호가 생성되고 난 후에, 역시나 적은 딜레이 b 후에 각각의 74181 블럭에 공급할 CN 신호를 만들어서, a + b 시간 후에는 74181의 실질적인 계산을 하고 싶다. 그래서 74181의 ......more