목차
1. 제목
2. 개요
3. 이론
4. 설계과정
5. VHDL Code
6. 결과 및 분석
7. 토의사항
8. 참고문헌
2. 개요
3. 이론
4. 설계과정
5. VHDL Code
6. 결과 및 분석
7. 토의사항
8. 참고문헌
본문내용
의 필요성은 위에서도 설명했듯이 4 bit 의 더해지는 수들의 마지막 항에서 반올림 된 경우 5 bit의 자리 수에 1이 올라가야함으로 이를 표현하기 위해서이다. 그러므로 cout은 출력의 5번째 자리정도로 생각할 수 있다.
(b) Cin이 1인 경우
일반적인 4 bit adder는 cin이 0이라는 것을 위에서 설명했다. 하지만 위의 경우는 cin의 값이 1인경우를 고려하여 입력을 넣어 보았다. Cin이 1이여도 0인경우와 크게 다르지 않고 의 식과 의 식이 성립한다는 것을 알 수 있다.
7. 토의사항
이번 수행 과제는 1 bit full adder를 설계하고 이를 component 형태로 호출하여 확장하는 방식으로 4 bit adder를 설계하는 것 이였다. 이와 같은 방법으로 adder를 설계하면 half adder와는 달리 carry를 포함하여 계산이 가능하다. 또 4 bit 뿐만이 아니라 원하는 만큼 FA를 놓아줌으로서 원하는 bit만큼 덧셈이 가능하다고 볼 수 있다. 하지만 FA가 일정 수 이상이 되면 carry를 전달하여 계산하는데 delay가 길어져 오래 걸린다. 예를 들어 32 bit의 adder를 이와같은 ripple carry adder 방식으로 설계하면 carry는 첫 번째 자릿수에서부터 32까지 올라가며 계산이 되어야한다. 이 과정에서 carry는 매우 오랜 시간이 걸려 32번째 FA에 입력되고 다른 입력 값(x, y)은 정상속도로 입력되므로 계산에 오류가 생길 것이다. 그러므로 ripple carry adder는 많은 FA를 병렬로 놓고 계산할 수 없다. 그 허용 최대범위는 4 bit 정도이다. 이 방법으로 굳이 4 bit 이상의 adder를 설계하고 싶다면, FA의 연산속도를 느리게 해주면 된다. 마지막 FA의 carry 입력이 도착할 때까지 연산을 기다려준다면 carry의 delay가 없다. 하지만 이 방법은 연산시간이 오래 걸린다는 단점이 있다.
이와 같은 방법 이외에도 half adder 두개를 이용한 가산기도 있고, carry lookahead adder도 있다. Carry lookahead adder는 ripple carry adder의 단점을 커버한 adder이다. 이 회로는 수를 더하는데 필요한 시간을 본질적으로 줄일 수 있는 다른 방법이 사용되었다. Carry를 빨리 평가하여 가산하는 것이다. 이 방법은 마지막 carry를 평가하는데 3 gate 지연이 걸린다. 하지만 ripple carry adder에 비해 회로가 복잡하다는 단점이 있다.
Quartus를 이용한 프로그래밍에서는 처음 과제와 비교했을 때 훨씬 편하게 다룰 수 있었다. VHDL 코드를 살펴보면 전체적으로 3개의 파일로 이루어져 있다. 1 bit full adder, adder_package, 4 bit full adder 이다. 1 bit full adder는 주어진 truth table에 따라 계산하여 1차 과제 때처럼 설계하면 되었다. 이번 과제에서는 package를 사용하였는데 이 것은 c 언어에서 함수를 사용하는 것과 매우 비슷하다고 느꼈다. 자주 사용하는 함수를 정의해 놓고, 실제로 사용하는 파일에서 그 함수를 불러다가 사용하는 것이다. 이와 같은 방식으로 4-bit full adder을 VHDL code로 설계하니 매번 FA가 필요할 때마다 그 내용을 쓰지 않아 편리하였다. 이번 과제에서 개인적으로 가장 어려웠던 부분은 project의 이름과 main file의 이름을 match시키는 것이었다. 처음에 설계를 했을 때 main project의 이름을 1 bit full adde 파일의 이름과 동일하게 하여 wave form을 비롯한 다른 결과 값들이 제대로 simulation 되지 않는 것을 확인했다. 즉 같은 project 내에서 여러 개의 file을 만들어 사용하는데 main project의 이름과 같은 file이 main file이 되어 이 main file 에 대해서만 waveform을 비롯한 결과들이 simulation된다는 것을 이해했다.
8.참고문헌
(1) Fundamentals of Digital Logic with VHDL Design second edition, Stephen Brown, 2005
(2) http://cafe.naver.com/carroty.cafe
(3) http://blog.naver.com/nowcafe?Redirect=Log&logNo=20016488913
(b) Cin이 1인 경우
일반적인 4 bit adder는 cin이 0이라는 것을 위에서 설명했다. 하지만 위의 경우는 cin의 값이 1인경우를 고려하여 입력을 넣어 보았다. Cin이 1이여도 0인경우와 크게 다르지 않고 의 식과 의 식이 성립한다는 것을 알 수 있다.
7. 토의사항
이번 수행 과제는 1 bit full adder를 설계하고 이를 component 형태로 호출하여 확장하는 방식으로 4 bit adder를 설계하는 것 이였다. 이와 같은 방법으로 adder를 설계하면 half adder와는 달리 carry를 포함하여 계산이 가능하다. 또 4 bit 뿐만이 아니라 원하는 만큼 FA를 놓아줌으로서 원하는 bit만큼 덧셈이 가능하다고 볼 수 있다. 하지만 FA가 일정 수 이상이 되면 carry를 전달하여 계산하는데 delay가 길어져 오래 걸린다. 예를 들어 32 bit의 adder를 이와같은 ripple carry adder 방식으로 설계하면 carry는 첫 번째 자릿수에서부터 32까지 올라가며 계산이 되어야한다. 이 과정에서 carry는 매우 오랜 시간이 걸려 32번째 FA에 입력되고 다른 입력 값(x, y)은 정상속도로 입력되므로 계산에 오류가 생길 것이다. 그러므로 ripple carry adder는 많은 FA를 병렬로 놓고 계산할 수 없다. 그 허용 최대범위는 4 bit 정도이다. 이 방법으로 굳이 4 bit 이상의 adder를 설계하고 싶다면, FA의 연산속도를 느리게 해주면 된다. 마지막 FA의 carry 입력이 도착할 때까지 연산을 기다려준다면 carry의 delay가 없다. 하지만 이 방법은 연산시간이 오래 걸린다는 단점이 있다.
이와 같은 방법 이외에도 half adder 두개를 이용한 가산기도 있고, carry lookahead adder도 있다. Carry lookahead adder는 ripple carry adder의 단점을 커버한 adder이다. 이 회로는 수를 더하는데 필요한 시간을 본질적으로 줄일 수 있는 다른 방법이 사용되었다. Carry를 빨리 평가하여 가산하는 것이다. 이 방법은 마지막 carry를 평가하는데 3 gate 지연이 걸린다. 하지만 ripple carry adder에 비해 회로가 복잡하다는 단점이 있다.
Quartus를 이용한 프로그래밍에서는 처음 과제와 비교했을 때 훨씬 편하게 다룰 수 있었다. VHDL 코드를 살펴보면 전체적으로 3개의 파일로 이루어져 있다. 1 bit full adder, adder_package, 4 bit full adder 이다. 1 bit full adder는 주어진 truth table에 따라 계산하여 1차 과제 때처럼 설계하면 되었다. 이번 과제에서는 package를 사용하였는데 이 것은 c 언어에서 함수를 사용하는 것과 매우 비슷하다고 느꼈다. 자주 사용하는 함수를 정의해 놓고, 실제로 사용하는 파일에서 그 함수를 불러다가 사용하는 것이다. 이와 같은 방식으로 4-bit full adder을 VHDL code로 설계하니 매번 FA가 필요할 때마다 그 내용을 쓰지 않아 편리하였다. 이번 과제에서 개인적으로 가장 어려웠던 부분은 project의 이름과 main file의 이름을 match시키는 것이었다. 처음에 설계를 했을 때 main project의 이름을 1 bit full adde 파일의 이름과 동일하게 하여 wave form을 비롯한 다른 결과 값들이 제대로 simulation 되지 않는 것을 확인했다. 즉 같은 project 내에서 여러 개의 file을 만들어 사용하는데 main project의 이름과 같은 file이 main file이 되어 이 main file 에 대해서만 waveform을 비롯한 결과들이 simulation된다는 것을 이해했다.
8.참고문헌
(1) Fundamentals of Digital Logic with VHDL Design second edition, Stephen Brown, 2005
(2) http://cafe.naver.com/carroty.cafe
(3) http://blog.naver.com/nowcafe?Redirect=Log&logNo=20016488913
추천자료
- 부울대수(boolean algebra)및 조합논리회로 설계
- [논리회로] 엔코더(Encoder),디코더(Decoder) 설계 및 7-Segement LED,4 to 1 MUX 제작
- xilinx를 이용한 4비트 가감산기 설계(vhdl)
- xilinx를 이용한 fsm설계(vhdl)
- 전자회로 비교기를 이용한 회로 설계
- [설계보고서] 디지털 공학 실습 과제 - EEPROM 실험
- 메카트로닉스 마이크로프로세서를 이용한 디지털 온도계 제작 - 선행과정, 소프트웨어 구성, ...
- ALU 설계 - VHDL로 ALU(산술 논리 장치)를 설계함으로써 컴퓨터 중앙처리장치(cpu)의 기본설...
- [전기회로 설계 및 실습] 06.RC회로의 시정수 측정회로 및 방법 설계 (예비 & 결과)
- [전기회로 설계 및 실습] 08.인덕터(Inductor), RL회로의 과도응답(Transient Response) (예...
- [텀프로젝트] VHDL로 구현한 16bit CPU 설계
- 전자공학 - 디지털시계 설계 및 제작
- [디지털 회로실험] 2장.불대수(부울대수 : Boolean algebra)
- AVR 스탑워치 만들기 (AVR스탑워치,초시계,디지털초시계,atmega128,회로도,소스코드,동작원리...