Verilog의 사용과 FPGA를 설계는 최근 학교와 엔지니어링 필드의 디지털 시스템 설계에서 필수 불가결의 중요한 과정이 되었다. 본서는 어느 정도 수준 이상의 학생이나 엔지니어들은 혼자서도 익힐 수 있도록 체계적이고 많은 설계 예제가 들어있다. 따라서 이 책을 통해 Verilog을 이용한 FPGA 설계 방법을 익혀 다양한 시스템 설계에 적용할 수 있는 능력을 기르기를 바란다.
1장에서는 논리회로의 기본 개념을 복습할 수 있도록 했고, 2장의 Verilog 기초를 시작으로 하여, 3장에서 FPGA 디바이스 구조를 설명한다. 4장 이후 여러 장에 걸쳐 다양하고 실질적인 Verilog 설계 예제를 익힌 다음, 간략화된 MIPS 프로세서까지 설계해보도록 구성되어 있다. 10장에서는 디지털 테스트에 관한 내용을 보강하여 전체적으로 좀 더 다양하고 깊이 있는 설계 예지를 실습할 수 있도록 구성했다.
이 책을 교재로 사용하여 강의할 경우 실습과 병행하면 학생들이나 엔지니어들의 학습을 극대화할 수 있을 것으로 생각된다. 시간이 충분하면 2학기에 걸쳐 진행해도 좋을 것 같다. 학생들에게 다양한 설계 숙제, 프로젝트를 할당하여 실질적인 Verilog 코딩 기법과 FPGA에 구현 검증하는 과정까지 할 수 있도록 교육하면 많은 부분 실제 엔지니어링 필드에 적용할 수 있을 것으로 생각된다.
Contents
01 논리 설계 기초
1.1 조합논리회로
1.2 부울 대수와 대수적 단순화
1.3 카노 맵
1.4 NAND와 NOR 게이트를 사용한 설계
1.5 조합회로의 해저드
1.6 플립플롭과 래치
1.7 밀리 순차회로 설계
1.8 무어 순차회로 설계
1.9 등가 상태와 상태표의 축소
1.10 순차회로의 타이밍
1.11 삼상태 논리와 버스
02 Verilog 소개
2.1 컴퓨터 지원 설계
2.2 하드웨어 서술 언어
2.3 Verilog를 이용한 조합회로 기술 방법
2.4 Verilog 모듈
2.5 Verilog 지정 할당
2.6 순차 진행 지정문
2.7 always 블록을 이용한 플립플롭 모델링
2.8 이벤트 제어를 통한 always 블록
2.9 Verilog의 지연 시간
2.10 Verilog 코드의 컴파일레이션, 시뮬레이션, 합성
2.11 Verilog 데이터 타입과 연산자
2.12 간단한 합성 예제
2.13 멀티플렉서의 Verilog 모델
2.14 Verilog always 문을 이용한 레지스터와 카운터의 모델링
2.15 동작적 Verilog와 구조적 Verilog
2.16 상수
2.17 어레이
2.18 Verilog의 루프
2.19 Verilog 모델 테스트
2.20 기억해야 할 사항
03 프로그래머블 로직 디바이스 소개
3.1 프로그래머블 로직 디바이스의 간단한 개요
3.2 간단한 프로그래머블 로직 디바이스
3.3 복잡한 프로그래머블 로직 디바이스(CPLD)
3.4 필드 프로그래머블 로직 디바이스(FPGA)
04 설계 예제
4.1 BCD-7세그먼트 디스플레이 디코더
4.2 BCD 가산기
4.3 32비트 가산기
4.4 신호등 제어기
4.5 제어회로의 상태 그래프
4.6 스코어보드와 제어기
4.7 동기화와 디바운싱
4.8 시프트와 더하기 동작 곱셈기
4.9 어레이 곱셈기
4.10 부호 있는 정수/소수 곱셈기
4.11 키패드 스캐너
4.12 이진 나눗셈기
05 SM 차트와 마이크로프로그래밍
5.1 상태 머신 차트
5.2 SM 차트의 유도
5.3 SM 차트의 구현
5.4 주사위 게임의 구현
5.5 마이크로프로그래밍
5.6 연결된 상태 머신
06 FPGA를 이용한 설계
6.1 FPGA에서의 함수 구현
6.2 샤논 분해를 사용한 함수 구현
6.3 FPGA의 캐리 체인
6.4 FPGA에서의 캐스케이드 체인
6.5 상업용 FPGA의 로직 블록 예
6.6 FPGA에 내장된 전용 메모리
6.7 FPGA에 내장된 전용 곱셈기
6.8 프로그래밍 비용
6.9 FPGA와 one-hot 상태 할당
6.10 FPGA 용량: 최대 게이트 수 vs. 사용 가능한 게이트 수
6.11 설계 변환(합성)
6.12 매핑, 배치, 배선
07 부동소수점 연산
7.1 부동소수점 수의 표현
7.2 부동소수점 곱셈
7.3 부동소수점 덧셈
7.4 그 외 부동소수점 연산
08 Verilog의 추가 주제
8.1 Verilog 함수
8.2 Verilog 작업
8.3 다중 값 논리와 신호 분해
8.4 내장된 프리미티브
8.5 사용자 정의 프리미티브
8.6 SRAM 모델
8.7 SRAM 읽기/쓰기 시스템 모델
8.8 게이트의 상승 및 하강 지연 시간
8.9 변수명 연계
8.10 generate 문
8.11 시스템 함수
8.12 컴파일러 지시어
8.13 파일 I/O 함수
8.14 타이밍 확인
09 RISC 마이크로프로세서 설계
9.1 RISC 철학
9.2 MIPS ISA
9.3 MIPS 명령어 인코딩
9.4 MIPS 일부분 구현
9.5 Verilog 모델
10 하드웨어 테스트와 테스트를 위한 설계
10.1 조합회로 테스트
10.2 순차회로 테스트
10.3 주사 테스트
10.4 경계 주사
10.5 내장형 자기 테스트
부록 A Verilog 언어 요약
부록 B 키워드 목록(Verilog IEEE Standard 2005)
참고문헌
찾아보기
Author
Charles Roth,Lizy Kurian John,Byeong Kil Lee,강진구,조경순,김종태,양준성