누산기를 이용한 직렬(Serial) 덧셈기 두개의 입력 X(n:0), Y(n:0)의 각 비트를 순차적으로 합한 후 이의 결과 SUM(n:0)를 Accumulator에 저장하는 장치 Shift-register Sh : shift, SI : serial input, clk
누산기를 이용한 직렬(Serial) 덧셈기 직렬 덧셈기의 동작 테이블 t0 에서> X0=1, Y0=1로 주어지고, SUM0=0,Cj+1=1을 가진다. t1이고 Sh=1에서> 첫 번째 Sum은 Accumulator의 최상위 bit로 이동한다. 또한 X1=0, Y1=1이 하위 비트 X0, Y0 자리로 이동하고 Cj+1=1이 FA 에 다시 입력된다. 4번의 shift 후에 X 는 X+Y 의 값으로 바뀐다.
누산기를 이용한 직렬(Serial) 덧셈기 직렬 덧셈기의 제어상태 그래표 와 표 N: start signal Sh: shift signal S0은 초기화 상태, N=1이고 Sh=1 이면 S0 에서 S1 상태로 이동 S1에서는 N의 입력에 상관없이 Sh=1 이면 S2 상태로 이동 S2에서도 N의 입력에 상관없이 Sh=1 이면 S3 상태로 이동 S3에서도 N의 입력에 상관없이 Sh=1 이면 S0 상태로 이동
이진 곱셈기의 설계 1. 부호가 없는 수의 곱셈 Shift 동작으로 구현 Adder 로 구현 Partial Product : 피승수가 shift 된 것 이거나 0000 이다. 따라서 Shift 동작으로 구현이 가능하다. Partial product 간의 합은 Adder 로 구현 한다. (부분곱이 만들어 질 때마다)
이진 곱셈기의 설계 이진 곱셈기 => adder 와 shift 동작으로 구현 할 수 있다. Sh=1, Clk인가 시 우측 shift Carry 임시저장 비트 Multiplicand: 피승수, multiplier : 승수, ACC : 누산기, product : 곱셈레지스터, M : ACC(0), 최하위비트 값 Ad : 덧셈 신호 (ad=1일때 Adder출력=>ACC로 전달), Sh : shift 신호, St: 시작신호 load : multiplier load 신호
이진 곱셈기의 설계 M=1 : 피승수는 누산기에 더해진 다음 우측으로 으로 Shift 한다. Adder 동작 범위 ACC 1101 1011 10001111 x 3번의 addition 4번의 shift
이진 곱셈기의 설계 이진 곱셈기 제어를 위한 상태도 제어회로의 출력 : AD, Sh, load 제어회로입력 : M, St 상태변화> S0 : 초기상태, St 신호가 입력되면 Multiplier load신호를 출력하고 S1의 상태로 간다. S1에서 M=1 이면 Ad 신호를 내보내고 S2의 상태로 간다. S2에서 Sh=1 의 신호를 내보내고 S3로 간다. S1에서 M=0이면 Sh=1을 내보내고 바로 S3의 상태로 간다. 4번의 addition, 4번의 shift
이진 곱셈기의 (4x4) VHDL Mplier : Multiplier Mcand : Multiplicant 10개의 상태를 배정
이진 곱셈기의 (4x4) VHDL 상태가 1 혹은 3 혹은 5 혹은 7인 경우 ‘0’ & ACC (7downto 4) + Mcand
카운터를 포함한 곱셈기 제어 제어는 : Ad, Sh 를 내보내는 것과 Sh 의 수를 count 하는 것 만일 bit 수가 매우 크다면 Sh counter를 따로 두는 것이 좋다. K: 완료 신호 K=1 이면 마지막 Shift 신호를 내보내고 종료 단계인 S3 상태로 간다. K=0, M=0 일 때 Shift 동작 K=1, M=0 일 때 Shift 동작 K=1일 때 Shift 동작
카운터를 포함한 곱셈기 제어
4x4 bit 배열 곱셈기 AND gate 와 덧셈기 (HA, FA)로 구성된 곱셈기 FA 로 구성 AND 게이트 로 구성
4x4 bit 배열 곱셈기
Multiplication of Signed binary number 부호가 있는 이진수의 곱셈 알고리즘 1 : - 승수가 음수이면 보수를 취한다. - 피승수가 음수이면 보수를 취한다. - 두 개의 양의 이진수를 곱한다. - 만약 곱셈의 결과가 음수이면 결과값의 보수를 취한다. 알고리즘 2 : - 피승수 만을 2의 보수를 취한다. (승수와 결과값의 보수는 필요가 없다) 부호가 있는 분수의 2의 보수 표현 : 0.101 => +. 1x2-1+1x2-2+1x2-3 = + 5/8 1.011 => -. 1x2-1+1x2-2+1x2-3 = - 5/8 1.011 => 10.000-0.101 (N*=2n-N) 부호비트
Multiplication of Signed binary number <부호가 있는 이진수의 곱셈의 예> 0.011 (+3/8)
Multiplication of Signed binary number <부호가 있는 이진수의 곱셈의 예> 0.011 (+3/8) 1.g=-1+ 0.g 로 해석: g는 소수, 1.1=-1+0.1 1.011=-1+0.011=-(1-0.011)=-0.101 피승수의 2의 보수가 더해진다 피승수의 2의 보수가 더해진다
Multiplication of Signed binary number 2진 보수 곱셈기의 블록 다이어그램 추가 Cm=1 일때: 피승수의 1의 보수를 취한 후 adder에서 1의 값을 더한다. 결국 피승수의 2의 보수를 취하는 것이 된다. 덧셈기의 마지막 비트로의 캐리값은 버려진다. Product 를 shift 시킬 때 최상위 bit 는 그대로 유지 => 5bit 사용
Multiplication of Signed binary number 이진보수 곱셈기의 상태 그래프 S0 에서 S7 까지의 상태는 이진 곱셈기와 동일 S7 상태에서 M=0 이면 0를 출력하고(ad=0,Cm=0) S8의 상태로 간다 S7의 상태에서 M=1 (부호=1) 이면 2의 보수를 취하고 Ad=1 한 다음 S8의 상태로 간다.
Multiplication of Signed binary number 빠른 곱셈기의 블록 다이어그램 M=0, M=1에서 shift 동작은 모두 필요함. 따라서 덧셈기의 출력이 누산기에 로드 될 때 덧셈기의 출력선을 한칸 옮기면 add-shift 동작을 빨리 구현할 수 있어 곱셈기의 동작을 빨리 할 수 있다.
Multiplication of Signed binary number 빠른 곱셈기의 상태 그래프 3번의 shifting 후 M=1이면 Cm=1 Adsh=1을 준다. Adsh=1 이 의미하는 것은 Adding후 별도의 Shift명령 없이 shifting 이 이루어지는 것을 말한다. (shift선의 연결)
2의 보수 빠른 곱셈기의 동작적 모델
2의 보수 빠른 곱셈기의 동작적 모델 Add4 함수사용 (bit package) Addout은 5bit A,B는 4 bit Cm=1일때 2의보수를 더함 A,B update기다림 Product 는 7 bit
2의 보수 곱셈기의 동작적 모델 시뮬레이터 명령파일과 시뮬레이션 결과 2sec에 1, 22sec에=0 을 준다
실습예제 예제1> Schematic 화면에 lpm_counter (심벌툴 -> 라이브러리에서 megafunction 밑의 arithmetic 밑의 lpmcounter사용) 를 이용하여 4bit up-down 카운터를 설계하고, 시뮬레이션 하여 결과를 나타내시오. 입력> updown 신호(1bit), 클럭신호(1bit), 출력신호 4bit (버스선사용)
실습예제 다음회로를 구성하고 시뮬레이션 하여 어떤 회로 인지 설명하시오. 5V 전원은 라이브러리 primitive -> others의 VCC 사용, 7476 칩은 라이브러리 other->Maxplus2의 7476사용
실습예제 다음회로를 구성하고 시뮬레이션 하여 어떤 회로 인지 설명하시오. 5V 전원은 others의 VCC 사용, 칩은 Maxplus2 사용.