[컴퓨터공학기초설계및실험2 보고서] Subtractor & Arithmetic Logic Unit
- 최초 등록일
- 2015.04.12
- 최종 저작일
- 2013.10
- 18페이지/ MS 워드
- 가격 1,500원
소개글
컴퓨터 공학 기초 설계 및 실험2 보고서
실험제목: Subtractor & Arithmetic Logic Unit입니다.
완전 잘 정리되어있는 레포트입니다!
목차
1. 제목 및 목적
2. 원리(배경지식)
3. 설계 세부사항
4. 설계 검증 및 실험 결과
5. 고찰 및 결론
6. 참고문헌
본문내용
2의 보수화 과정
정수를 표현하는 N개의 비트가 있다.
N개의 비트가 나타내는 수를 음수로 표현하기 위해서
1. 각각의 비트를 0은 1로 1은 0으로 바꾼다.
2. 1을 더한다.
예
양수: 0000 0001 ( 1 )
변환된 비트: 1111 1110
1을 더한 것 : 1111 1111 ( -1 )
Arithmetic logic unit(ALU, 산술 논리 장치)는 두 숫자의 (덧셈, 뺄셈 등과 같은) 산술 연산과 (AND, OR, XOR 등과 같은) 논리연산을 계산하는 디지털 회로이다.
<중 략>
carry는 연산도중에 그것을 초과할 경우 carry가 발생한 것을 보여주기 위한 flag이다.
overflow는 2의 보수 표현의 정수 연산에서 부호비트가 변한 것을 보여주기 위한 flag이다. 예를 들면, 11+01=00으로 ALU는 결과를 나타내는데 한번 해석해 보면 양수(unsigned)로만 해석하면 3+1=0 이라고 엉뚱한 결과가 되고, 정수(signed)로 해석하면 -1+1=0으로 맞는 결과가 된다. 그럼 이것을 어떻게 구분할 수 있을까 하면 carry flag니 overflow flag니 하는 것이 필요하다.
<중 략>
a=4’b0000, b=4’b0000, op=000(Not a 수행) => 따라서 result=4’b1111이므로 n=1
a=4’b0000, b=4’b1100, op=001(Not b 수행) => 따라서 result=4’b0011이므로 n=0
a=4’b0101, b=4’b1001, op=010(a And b 수행) => 따라서 result=4’b0001이므로 n=0
<중 략>
alu32의 self-checking testbench with testvectors하는데 모델심을 돌렸더니 finish가 되지않고 이상하게 떴는데, 알고 보니 모두 32bit로 설정하지 않고 4bit로 설정해놨었다. 또 tv파일을 프로젝트가 있는 파일에 넣었었는데, 시뮬레이션 폴더 안의 모델심 폴더 안에 넣으니 제대로 떴다.
참고 자료
carry와 overflow flag에 대하여/http://ksrhho.blogspot.kr/2013/06/carry-overflow-flag.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+blogspot/ZHplf+(Android)
Arithmetic Logic Unit(ALU)/http://catslikefish.tistory.com/28
blocking(=)과 nonblocking(<=)/
http://blog.naver.com/mikael2010?Redirect=Log&logNo=130094384689