*상*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 1
검색어 입력폼
  • [컴퓨터구조]Multiplier and Division
    < Multiplier and Division >MultiplierThe datapath of the twos-complement multiplier.HDL description of the multiplier for 8-bit twos-complement fractions.2Cmultiplier(in : INBUS; out : OUTBUS);register A[7:0], M[7:0], Q[7:0], COUNT[2:0], F;bus INBUS[7:0], OUTBUS[7:0]BEGIN:A:=0, COUNT := 0, F:=0,INPUT:M:=INBUS;Q:=INBUS;ADD:A[7:0]:=A[7:0] + M[7:0] × Q[0],F:=(M[7] and Q[0]) or F;RSHIFT:A[7]:=F, A[6:0].Q:=A.Q[7:1],COUNT:=COUNT + 1TEST:If COUNT≠7 then go to ADD;SUBTRACT:A[7:0]:=A[7:0] - M[7:0] × Q[0], Q[0]:=0;OUTPUT:OUTBUS:=Q;OUTBUS:=A;End 2Cmultiplier블럭도와 알고리즘 분석회로는 처음 8bit, 2의 보수인 수 X와 Y를 입력으로 받는다. X는 Multiplier register인 Q레지스터에 입력한다. Y는 Multicand register인 M레지스터에 입력한다. 그리고 Accumulator A와 Sign Logic인 F, 그리고 Control Unit의 COUNT를 0으로 초기화한다. 처음 덧셈으로 시작하고 후에 Right-shift를 하는데, COUNT가 7이 될 때까지 덧셈과 Right-shitf를 반복한다. 8번의 루프를 다 돌면 마지막으로 각각 한번의 뺄셈과 Right-shift를 하여 끝나게 된다. 덧셈할 때에는 Q[0] 비트의 값이 0일 때는 A레지스터의 값을 변화시키지 않으며, Q[0] bit가 1일 때에는 A와 M레지스터를 서로 더한다. F레지스터의 값은 M[7] bit와 Q[0] bit의 AND 연산을 통하여 나온 값을 다시 F 자신과 OR 연산을 하여 나온 결과를 가지게 된다. 이 F레지스터는 곱셈 과정의 부호를 결정하여 준다. Right-shift 연산은 A[7] bit에 F레지스터 값을 주며, A[6:0].Q 에는 A.Q[7:1] 값을 주게 된다. 이 때, COUNT를 1 증가시킨다. 8번의 루프를 돌고 나면 뺄셈을 하게 된다. Q[0] bit의 값이 0일 때는 A레지스터의 내용을 변화시키지 않으며, Q[0]의 값이 1일 때는 A에서 M레지스터를 빼게 된다. 곱셈의 결과는 16bit이고 A가 결과 값의 15 ~ 8번째 bit로 Q가 7 ~ 0번째 bit로 표현된다.예제X * Y = 0111 1001(2) * 0101 1001(2) = 121(10) * 89(10)StepActionFAccumulator ARegister Q0Initialize registers0000*************= multiplier X,M = Y = 010110011Add M to ARight-shift F.A.Q*************1**************************00Q[0] = 1COUNT = 12Add zero to ARight-shift F.A.Q000000*************0*************001011110Q[0] = 0COUNT = 23Add zero to ARight-shift F.A.Q0000000*************0*************00101111Q[0] = 0COUNT = 34Add M to ARight-shift F.A.Q*************0**************************11Q[0] = 1COUNT = 45Add M to ARight-shift F.A.Q***************************************011Q[0] = 1COUNT = 56Add M to ARight-shift F.A.Q***************************************101Q[0] = 1COUNT = 67Add zero to ARight-shift F.A.Q**************************0*************10Q[0] = 1COUNT = 78Subtract zeroSet Q[0] to 000000*************0101*************01000109Right-shift F.A.Q*************001= product PX * Y = 0111 1001(2) * 0101 1001(2) = 121(10) * 89(10)= 0010 1010 0001 0001(2) = 10769(10)DivisionThe Datapath of a sequential n-bit binary divider.Nonrestoring division algorithm for unsigned integers.NRdivider(in : INBUS; out : OUTBUS);register S, A[n-1:0], M[n-1:0], Q[n-1:0], COUNT[┌log2n┐:0];Bus INBUS[n-1:0], OUTBUS[n-1:0];BEGIN:COUNT := 0, S := 0;INPUT:A := INBUS; {Input the left half of the dividend D}Q := INBUS; {Input the right half of the dividend D}M := INBUS; {Input the divisor V}SUBTRACT:S.A := S.A - M; {S is the sign of the result}TEST:if S = 0 thenbegin Q[0] := 1;if COUNT = n - 1 then go to CORRECTION; elsebegin COUNT := COUNT + 1, S.A.Q[n-1:1] := A.Q; endS.A := S.A - M, go to TEST; endelse {if S = 1}begin Q[0] := 0;if COUNT = n - 1 then go to CORRECTION; elsebegin COUNT := COUNT + 1, S.A.Q[n-1:1] := A.Q; endS.A := S.A + M, go to TEST; endCORRECTION:if S = 1 then S.A := S.A + M;OUTPUT:OUTBUS := Q; {Output the quotient Q}OUTBUS := A; {Output the remainder R}end NRdivider;블럭도와 알고리즘 분석2n-bit의 unsigned integer를 n-bit의 unsigned integer로 나누어 그 몫과 나머지를 구하는 것이다.회로는 2n개의 bit를 가지는 Quotient Q와 n개의 bit를 가지는 Divisor를 각각 D와 V로 입력을 받는다. Quotient로 받은 입력 값의 최상위 n개 bit는 Accumulator레지스터에 입력하고 최하위 n개 bit는 Quotient레지스터에 입력한다. 그리고 Divisor V는 Divisor레지스터에 입력한다. Control Unit의 COUNT를 0으로 초기화하며, SUBTRACT 결과의 부호를 결정하는 S 레지스터도 0으로 초기화한다.맨 처음 뺄셈으로 시작하며 후에 Left-shift를 하는데, COUNT가 n-1이 될 때까지 뺄셈과 Left-shift를 반복한다. 루프를 다 돌면 마지막으로 CORRECTION이라는 과정을 수행하는데, 이는 S레지스터의 값이 1일 때, S.A의 값에 M레지스터 값을 더하는 일을 한다. 처음 시작 후 뺄셈을 한 후에 TEST 오퍼레이션으로 들어가게 된다. 이 때, S의 값이 0일 때에는 Q[0] bit에 1을 대입하고, S.A.Q[n-1:1]의 bit들을 Left-shift하게 된다. 그 다음에 뺄셈을 하며 COUNT가 n-1이 아닐 때에는 다시 TEST 오퍼레이션의 처음으로 돌아가게 된다. TEST 오퍼레이션에 들어 왔을 때, S의 값이 1일 때에는 Q[0] bit에 0을 대입하고, Left-shift를 수행한 후에 덧셈을 수행하게 된다. 이 후, COUNT가 n-1이 아닐 때에 역시 TEST 오퍼레이션의 처음으로 돌아간다.n-1번의 이러한 과정을 수행하면, COUNT가 n-1이 되어 TEST 오퍼레이션을 빠져 나오게 되고 CORRECTION을 수행하게 된다 이 과정에서는 S가 0일 경우에는 아무런 동작을 하지 않지만, S가 1일 경우에는 S.A의 값에 M레지스터를 더한다.나눗셈의 결과는 Q레지스터의 값이 Quotient이 되고, A레지스터의 값이 Remainder가 된다.예제X * Y = 0101 1100(2) / 0111(2) = 92(10) / 7(10)StepActionSAQ0Initialize registers010111000= dividend D1Subtract M to AReset Q[0]Left-shift S.A.Q**************************10010= divisor V = MQ[0] = 1COUNT = 12Subtract M to AReset Q[0]Left-shift S.A.Q*************10*************110Q[0] = 1COUNT = 23Subtract M to ASet Q[0]Left-shift S.A.Q*************0*************1100Q[0] = 0COUNT = 34Add M to AReset Q[0]000*************001101Q[0] = 100011101= quotient Q= remainder RQ = 13, R = 1
    공학/기술| 2006.05.08| 5페이지| 1,000원| 조회(653)
    미리보기
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 23일 토요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
6:55 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감