1 / 54

오브젝트

오브젝트. 연산회로. IT CookBook , VHDL 을 이용한 디지털 회로 입문. 기본 연산회로. 1. 덧셈회로. 2. 전가산기를 사용한 뺄셈회로. 3. 보수를 사용한 덧뺄셈회로. 4. unsigned 와 signed. 5. Section 01 기본 연산회로 ( 반가산기 ). 반가산기 반가산기 : 하위의 자리올림수는 연산에 포함시키지 않은 간단한 기능의 덧셈기. Section 01 기본 연산회로. 논리 연산자에 의한 반가산기의 VHDL 기술. Section 01 기본 연산회로.

phoebe
Download Presentation

오브젝트

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 오브젝트 연산회로 IT CookBook, VHDL을 이용한 디지털 회로 입문

  2. 기본 연산회로 1 덧셈회로 2 전가산기를 사용한 뺄셈회로 3 보수를 사용한 덧뺄셈회로 4 unsigned와 signed 5

  3. Section 01기본연산회로 (반가산기) • 반가산기 • 반가산기: 하위의 자리올림수는연산에 포함시키지 않은 간단한 기능의 덧셈기

  4. Section 01기본연산회로 • 논리 연산자에 의한 반가산기의 VHDL 기술

  5. Section 01기본연산회로 • 덧셈 연산자 [+]에 의한 반가산기의 VHDL 기술

  6. Section 01기본연산회로 (전가산기) • 전가산기

  7. Section 01기본연산회로 (반가산기를 이용한 전가산기)

  8. Section 01기본연산회로 (반가산기를 이용한 전가산기)

  9. Section 01기본연산회로 (반가산기를 이용한 전가산기) 앞의 전가산기와 같은 논리식이 된다

  10. Section 01기본연산회로 • 논리 연산자에 의한 전가산기의 VHDL 기술

  11. Section 01기본연산회로 • 덧셈 연산자에 의한 전가산기의 VHDL 기술

  12. Section 01기본연산회로 • 반가산기를 이용한 전가산기의 VHDL 기술 • 컴포넌트 인스턴스문으로하위층엔티티[HalfAdder]를 2회 호출하지만, 인스턴스명은[HA0], [HA1]과 같이 따로 따로 붙여야 함 • 포트 관련 리스트에서는 그림 9.4를 참조해서 필요한 신호를 필요한 포트에 접속

  13. Section 01기본연산회로 (반감산기) DIF = Difference BR = Borrow • 반감산기 • 동작 DIF = A - B

  14. Section 01기본연산회로 • 논리 연산자에 의한 반감산기의 VHDL 기술

  15. Section 01기본연산회로 • 뺄셈 연산자 [-]에 의한 반감산기의 VHDL기술

  16. Section 01기본연산회로 (전감산기) DIF = A - B 1 1 0 0 -) 0 1 1 1 ------------- BR 1 Dif1 ------------- BR 1 1 Dif0 1 ------------- BR 1 1 1 Dif1 0 1 ------------- BR 0 1 1 1 Dif0 1 0 1 아래 자리에서 빌려간 것 표시

  17. Section 01기본연산회로 (전감산기) DIF = A - B 1 1 0 0 -) 0 1 1 1 ------------- BR 1 Dif1 ------------- BR 1 1 Dif0 1 ------------- BR 1 1 1 Dif1 0 1 ------------- BR 0 1 1 1 Dif0 1 0 1

  18. Section 01기본연산회로 (반감산기를 이용한 전감산기)

  19. Section 01기본연산회로 (반감산기를 이용한 전감산기)

  20. Section 01기본연산회로 (반감산기를 이용한 전감산기) 아래 진리표 카르노맵  [전감산기]논리식이 얻어짐

  21. Section 01기본연산회로 • 논리 연산자에 의한 전감산기의 VHDL 기술

  22. Section 01기본연산회로 • 뺄셈 연산자 [-]에 의한 전감산기의 VHDL 기술

  23. Section 01기본연산회로 • 반감산기를 이용한 전감산기의 VHDL 기술

  24. Section 02덧셈 회로 • 전가산기를 사용한 덧셈 회로 • 여기서는 4개의 전가산기로 구성 • [Cin]이 필요 없는 경우에는 이것을 '0'으로 고정하거나 또는 전가산기 대신에 반가산기를 사용가능 • 비트 수만큼 전가산기를 사용하여모든 비트를 동시에 더하고 있기 때문에, 병렬 덧셈 회로 • 전가산기를 1개만 사용하여 피가수[A]나 가수 [B]를 시프트 레지스터로 제어하는 것으로, 1비트씩 연산을 반복하며 덧셈을 하는 회로를 직렬 덧셈 회로

  25. Section 02덧셈 회로 • 논리 연산자에 의한 VHDL 기술

  26. Section 02덧셈 회로

  27. Section 02덧셈 회로 • 덧셈 연산자에 의한 VHDL 기술

  28. Section 02덧셈 회로 • 덧셈 회로의 고속화 • 덧셈 회로에서는 하위 비트의 자리올림수가 차례차례 상위 비트로 전달되는 일까지 해야 하기 때문에 연산 속도가 저하 • 또한 전파지연은 비트수가 늘어날수록 증가 • 덧셈 회로를 고속화하려면 하위 비트의 자리올림수를 기다리지 말고 하위 비트의 데이터를 관찰해서 자리올림수의 유무를 판단 • 이 방식을 캐리 룩업(carry look up) 방식 혹은 동시 올림(simultaneous carry) 방식이라 함 • 자리 올림수의 발생에 기인한 것 • 자리 올림수의 논리식 • 4비트 덧셈 회로의 자리올림수에 적용

  29. Section 02덧셈 회로 • 각 식의 우변의 자리올림수에도 논리식을 대입

  30. Section 02덧셈 회로

  31. Section 02덧셈 회로 • 동시 자리 올림 방식에 의한 덧셈 회로의 VHDL 기술 • 반가산기의 [SUM]을 위해 [HA_SUM_OUT] • 반가산기의 [CY_OUT]을 위해 [HA_CY_OUT] • 식 9.6~식 9.9의 자리올림수를 위해 [CY]

  32. Section 02덧셈 회로 • 연산 속도의 검증 • 전제 조건으로 각 덧셈 회로에서 사용하는 논리소자의 전파지연시간(tPD)을 아래의 값으로 정함 • AND 회로 → 5.5[ns] • OR 회로→ 5.8[ns] • EXOR 회로→ 6.5[ns] • 전가산기에 의한 덧셈 회로의 연산 속도 • 전파지연시간을 after로 기술 • 각 출력의 전파지연 시간 • [SUM]은 2단 EXOR 회로이므로 13.0[ns] • [CY_OUT]는 AND-OR 즉, 곱들의합 형식이기 때문에 11.3[ns] • [SUM]은 그림 9.19와 같이 회로 구성에 따라 각각의 입력에 해당하는 전파지연시간이 다르지만, 여기에서는 일률적으로 13.0[ns]로 간단화

  33. Section 02덧셈 회로 • CIN]의 ON이 [COUT]에 반영되기까지 45.2[ns]가 걸린다는 것을 확인 • 이 시간은 자리올림수 발생에 11.3[ns]가 걸리며, 그것이 4단이기 때문에 11.3[ns]×4=45.2[ns] 임 • [CIN]의 ON부터 [S]까지가 46.9[ns]라고 하는 것은, 세번째단의 전가산기 자리올림수와네번째단의[S]의 지연시간 • 11.3[ns]×3+13.0[ns]=46.9[ns]

  34. Section 02덧셈 회로 • 동시 올림 방식에 의한 덧셈 회로의 연산 속도

  35. Section 02덧셈 회로 • [CIN]의 ON이 [COUT]에 반영될 때까지는 모든 자리올림수의 논리식이 AND-OR 즉, 곱들의합 형식이기 때문에 11.3[ns] • 또, 자리올림수의 발생에 11.3[ns], 네번째단의[S]는 EXOR 회로를 1단으로 통과하므로 6.5[ns] 이것으로부터, [CIN]의 ON부터 [S]까지의 17.8[ns]는 아래 식에 의해 구할 수 있음 • 11.3[ns]+6.5[ns]=17.8[ns]

  36. Section 02덧셈 회로 • BCD 덧셈 회로

  37. Section 02덧셈 회로 • 2진 덧셈 결과가 16 이상일 경우에는 자리올림수가 ON이 되기 때문에 카르노 맵에서 구한 논리식에 [CY_OUT]을 OR함으로써 보정 조작을 위한 신호를 생성 • 신호의 논리식

  38. Section 02덧셈 회로 • BCD 덧셈 회로의 VHDL 기술 • 첫째단의 4비트 덧셈 회로의 출력(2진 덧셈 결과)은 [S] • 첫째단의 4비트 덧셈 회로의 자리올림수 출력은 [CY_OUT] • ·보정 검출 회로의 출력은 [REVICE] • ·둘째단의 4비트 덧셈 회로의 B입력은 [ADDER1_BIN]

  39. Section 02덧셈 회로 • 시뮬레이션 결과 (500[ns]부분) • BCD 덧셈 회로의 입력 [A]= [9], [B]= [5], [CIN]=‘1’ • 첫째단의 4비트 덧셈 회로의 [S]= [15], [CY_OUT]=‘0’ • 보정 검출 회로의 출력 [REVICE]=‘1’ • 둘째단의 4비트 덧셈 회로의 입력 [A]= [15], [B]= [6], [CIN]=‘0’ • BCD 덧셈 회로의 덧셈 결과는, 10진수로 생각하면 [21], 2진수에서는 "10101"이므로, [BCD_COUT]=‘1’, [BCD_SUM]= [5]

  40. Section 02덧셈 회로 • 덧셈 연산자에 의한 VHDL 기술

  41. Section 03전가산기를 사용한 뺄셈회로 • 상위 비트에서 빌린 것(빌림수)을 가지고 다음 비트의 값을 뺄셈해 나가기 때문에, 4비트의 2진수 뺄셈 회로는 4개의 전감산기를 사용 • 4비트 뺄셈 회로의 VHDL 기술

  42. Section 03전가산기를 사용한 뺄셈회로 • 600[ns]까지는 B=[0], BIN='0'이기 때문에 [A] 값이 그대로 [DIF]에 출력 • 600[ns]에서 A=[15], BIN='1'이기 때문에 BOUT='0', S=[14] • 700[ns]에서는 [15-5-1(BIN)]로 BOUT='0', DIF=[9] • 800[ns]에서는 [0-10]으로 BOUT='1', S=[6]

  43. Section 04보수를 사용한 덧셈 뺄셈 회로 • A-B는 A에 B의 2의 보수를 더해서 구할 수 있음 • [2의 보수]는 [1의 보수]에 [1]을 더해서 구할 수 있고, [1의 보수]는 각 비트 자리의 '1'/'0'을 반전시킴으로써 구할 수 있음 • 1의 보수 • [SUB]='0' → 덧셈 동작 → [B]는 반전불필요 • [SUB]='1' →  뺄셈 동작 → [B]를 반전 • 2의 보수 • 4비트 덧셈 회로 [Adder4]의 [CY_IN]에 '1'을 접속 • 이 조작은 [B]를 반전했을 때, 즉, 뺄셈일 때만 필요한 조작이기 때문에 [CY_IN]에 [SUB]를 접속

  44. Section 04보수를 사용한 덧셈 뺄셈 회로 • 보수를 이용한 덧셈뺄셈 회로의 VHDL 기술

  45. Section 04보수를 사용한 덧셈 뺄셈 회로 • 시뮬레이션 결과 • 300[ns]까지는 A= [0]이기 때문에 [B]값이 그대로 [ANS]에 출력 • 300[ns]에서는 A= [7], B= [7]이므로 [7+7=14]가 되지만, [ANS]에 표시되는 결과는 [-2]가 되는데 오버플로우가 발생 • 4비트로 표현할 수 있는 유부호 수치는 최대 +7까지이므로 그 이상의 값은 정상적으로 표현되지 않음 • 800[ns]에서는 A= [-7], B=[7], SUB='1'이므로 [-7-7=-14]가 되지만, [ANS]에 표시되는 결과는 [-2]가 되는데 오버플로우가 발생 • 4비트로 표현할 수 있는 유부호 수치는 최하 -8까지이므로 그 이하의 값은 정상적으로 표현되지 않음 • 1100[ns]에서는 A= [0], B=[-8], SUB='1'이므로 [0-(-8)=8]이 되지만, [ANS]에 표시되는 결과는 [-8]이 되는데 오버플로우가 발생 • 4비트로 표현할 수 있는 유부호 수치는 최대 +7까지이므로 그 이상의 값은 정상적으로 표현되지 않음

  46. Section 04보수를 사용한 덧셈 뺄셈 회로

  47. Section 04보수를 사용한 덧셈 뺄셈 회로 • 덧셈 연산자에 의한 VHDL 기술

  48. Section 04보수를 사용한 덧셈 뺄셈 회로 • integer 형 변수에 의한 VHDL 기술

  49. Section 05 unsigned와 signed • 연산 회로의 VHDL 기술에서는 2의 보수를 사용한 부호를 포함한 수치를 대상으로 할 경우와 부호를 포함하지 않는 수치를 대상으로 할 경우와는 다르기 때문에 주의가 필요 • std_logic_vector형으로 산술 연산을 할 때 부호 비트가 없는 연산을 한다면 use 문으로 패키지 [std_logic_unsigned]를 호출하고, 부호 비트를 추가하여 연산하면 패키지 [std_logic_signed]를 호출하는 것에 주의 • 2개의 패키지를 양쪽 모두 동시에 호출할 수 없음 • 부호 비트를 추가한 값과 부호 비트가 없는 값이 혼재할 경우에는 패키지 [std_logic_arith]를 호출

  50. Section 05 unsigned와 signed

More Related