목차 일부
1장 설계 개념 ... 1
1.1 디지털하드웨어 ... 2
1.1.1 표준칩 ... 4
1.1.2 프로그래머블 로직 디바이스 ... 5
1.1.3 주문형으로 설계된 칩 ... 6
1.2 설계공정 ... 6
1.3 디지털 하드웨어의 설계 ... 8
1.3.1 기본 설계 루프 ... 8
1....
더보기
목차 전체
1장 설계 개념 ... 1
1.1 디지털하드웨어 ... 2
1.1.1 표준칩 ... 4
1.1.2 프로그래머블 로직 디바이스 ... 5
1.1.3 주문형으로 설계된 칩 ... 6
1.2 설계공정 ... 6
1.3 디지털 하드웨어의 설계 ... 8
1.3.1 기본 설계 루프 ... 8
1.3.2 컴퓨터의 구조 ... 9
1.3.3 디지털 하드웨어 유니트의 설계 ... 12
1.4 이 책에서의 논리회로 설계 ... 15
1.5 이론과 실제 ... 16
참고문헌 ... 17
2장 논리회로 입문 ... 19
2.1 변수와 함수 ... 20
2.2 반전 ... 23
2.3 진리표 ... 24
2.4 논리 게이트와 네트워크 ... 25
2.4.1 논리 네트워크의 해석 ... 26
2.5 부울 대수 ... 29
2.5.1 벤다이어그램 ... 33
2.5.2 표기법과 용어 ... 35
2.5.3 연산의 우선순위 ... 37
2.6 AND, OR, 그리고 NOT 게이트를 이용한 합성 ... 37
2.6.1 곱의합과 합의곱 형태 ... 39
2.7 NAND와 NOR 논리 네트워크 ... 45
2.8 설계 예제 ... 49
2.8.1 3방향 전등 조작 ... 49
2.8.2 멀티플렉서 회로 ... 51
2.9 CAD 도구의 소개 ... 53
2.9.1 디자인 엔트리 ... 53
2.9.2 합성 ... 55
2.9.3 기능적 시뮬레이션 ... 56
2.9.4 물리적 설계 ... 56
2.9.5 타이밍 시뮬레이션 ... 56
2.9.6 칩 구성 ... 57
2.10 VHDL 입문 ... 57
2.10.1 VHDL에서 디지털 신호의 표현 ... 59
2.10.2 간단한 VHDL 코드의 작성 ... 59
2.10.3 VHDL 코드 작성에 효과적인 방법 ... 61
2.11 결론 ... 62
2.12 문제풀이의 예 ... 63
연습문제 ... 66
참고문헌 ... 71
3장 구현기술 ... 73
3.1 트랜지스터 스위치 ... 75
3.2 NMOS 논리 게이트 ... 77
3.3 CMOS 논리 게이트 ... 81
3.3.1 논리 게이트 회로의 속도 ... 87
3.4 부논리 시스템 ... 87
3.5 표준 칩 ... 89
3.5.1 7400 시리즈 표준 칩 ... 89
3.6 프로그래머블 로직 디바이스 ... 92
3.6.1 프로그래머블 로직 어레이(PLA) ... 92
3.6.2 프로그래머블 어레이 로직(PAL) ... 96
3.6.3 PLA와 PAL의 프로그래밍 ... 98
3.6.4 콤플렉스 프로그래머블 로직 디바이스(CPLD) ... 99
3.6.5 필드 프로그래머블 게이트 어레이(FPGA) ... 103
3.6.6 CPLD와 FPGA에 회로를 구현하기 위한 CAD 도구의 이용 ... 108
3.6.7 CPLD와 FPGA의 응용 ... 108
3.7 주문자형 칩, 표준셀, 그리고 게이트 어레이 ... 109
3.8 실제적인 관점 ... 112
3.8.1 MOSFET의 제조와 작용 ... 112
3.8.2 MOSFET 내부 저항 ... 116
3.8.3 논리 게이트에서 전압레벨 ... 116
3.8.4 잡음 여유 ... 118
3.8.5 논리 게이트의 동적 동작 ... 119
3.8.6 논리 게이트에서 전력 소모 ... 122
3.8.7 트랜지스터 스위치를 통한 0과 1의 통과 ... 124
3.8.8 논리 게이트에서 팬인과 팬아웃 ... 126
3.9 전송 게이트 ... 132
3.9.1 배타적 OR 게이트 ... 133
3.9.2 멀티플렉서 회로 ... 134
3.10 SPLD, CPLD, 그리고 FPGA 구현에 대한 상세한 설명 ... 134
3.10.1 FPGA로의 구현 ... 141
3.11 결론 ... 143
3.12 문제풀이의 예 ... 143
연습문제 ... 151
참고문헌 ... 160
4장 논리함수의 최적 실현 ... 161
4.1 카르노 맵 ... 162
4.2 최소화 대책 ... 170
4.2.1 용어 ... 171
4.2.2 최소화 절차 ... 173
4.3 합의곱 형태의 최소화 ... 176
4.4 불완전하게 정의된 함수 ... 178
4.5 다출력 회로 ... 180
4.6 다단계 합성 ... 183
4.6.1 인수 분해법 ... 184
4.6.2 함수의 분해 ... 188
4.6.3 다단계 NAND 및 NOR 회로 ... 193
4.7 다단계 회로의 분석 ... 194
4.8 입방체 형태의 표현 ... 201
4.8.1 입방체와 슈퍼 입방체 ... 201
4.9 Tabular 방법을 이용한 최소화 ... 205
4.9.1 주항의 생성 ... 205
4.9.2 최소 커버의 결정 ... 207
4.9.3 Tabular 방법의 요약 ... 212
4.10 입방체 표현을 이용한 간략화 ... 213
4.10.1 필수 주항의 결정 ... 216
4.10.2 최소 커버를 구하기 위한 완전한 절차 ... 218
4.11 실제 고려사항들 ... 221
4.12 VHDL 코드로부터 합성된 회로의 예 ... 222
4.13 결론 ... 226
4.14 문제풀이의 예 ... 227
연습문제 ... 235
참고문헌 ... 240
5장 수 표현과 산술연산회로 ... 243
5.1 자리수 표현 ... 244
5.1.1 부호없는 정수(unsigned integer) ... 244
5.1.2 10진과 2진 시스템간의 변환 ... 245
5.1.3 8진과 16진 표현 ... 246
5.2 부호없는 수의 덧셈 ... 248
5.2.1 분해된 전가산기 ... 252
5.2.2 리플-캐리 가산기 ... 253
5.2.3 설계 예 ... 254
5.3 부호있는 수 ... 254
5.3.1 음수 ... 254
5.3.2 덧셈과 뺄셈 ... 258
5.3.3 가산기와 감산기 장치 ... 262
5.3.4 래딕스-보수 방법 ... 263
5.3.5 산술 오버플로우 ... 267
5.3.6 성능 이슈 ... 268
5.4 속도가 빠른 가산기 ... 269
5.4.1 캐리룩크어헤드 가산기 ... 269
5.5 CAD 도구를 사용한 산술회로 설계 ... 276
5.5.1 신호 흐름도를 사용한 산술회로의 설계 ... 276
5.5.2 VHDL을 사용한 산술회로 설계 ... 279
5.5.3 VHDL 코드에서 수의 표현 ... 283
5.5.4 산술 배정문 ... 284
5.5 곱셈 ... 288
5.6.1 부호없는 수에 대한 어레이 곱셈기(array multiplier) ... 290
5.6.2 부호있는 수의 곱셈 ... 290
5.7 다른 수 표현들 ... 293
5.7.1 고정 소수점 수 ... 293
5.7.2 부동 소수점 수 ... 293
5.7.3 2진화 10진 표현 ... 296
5.8 ASCII 문자 코드 ... 300
5.9 문제풀이의 예 ... 303
연습문제 ... 309
참고문헌 ... 313
6장 조합회로 블록 ... 315
6.1 멀티플렉서 ... 316
6.1.1 멀티플렉서를 사용한 논리함수의 합성 ... 321
6.1.2 샤논(Shannon)의 확장을 이용한 멀티플렉서 합성 ... 324
6.2 복호기 ... 329
6.2.1 디멀티플렉서 ... 333
6.3 부호기 ... 335
6.3.1 2진 부호기 ... 335
6.3.2 우선순위 부호기 ... 336
6.4 코드 변환기 ... 337
6.5 산술비교회로 ... 338
6.6 조합회로를 위한 VHDL ... 339
6.6.1 할당문 ... 339
6.6.2 선택된 신호할당 ... 340
6.6.3 조건부 신호할당 ... 343
6.6.4 생성문 ... 346
6.6.5 동시 할당문과 순차 할당문 ... 349
6.6.6 프로세스 문 ... 350
6.6.7 CASE 문 ... 355
6.6.8 VHDL 연산자들 ... 360
6.7 결론 ... 363
6.8 문제풀이의 예 ... 363
연습문제 ... 372
참고문헌 ... 378
7장 플립플롭, 레지스터, 카운터 및 간단한 프로세서 ... 379
7.1 기본 래치 ... 381
7.2 게이티드 SR 래치 ... 383
7.2.1 NAND 게이트로 구성된 게이티드 SR 래치 ... 385
7.3 게이티드 D 래치 ... 386
7.3.1 전파지연의 영향 ... 388
7.4 마스터 슬레이브 및 에지 트리거 D 플립플롭 ... 389
7.4.1 마스터 슬레이브 D 플립플롭 ... 389
7.4.2 에지 트리거 D 플립플롭 ... 391
7.4.3 클리어와 프리셋을 갖는 D 플립플롭 ... 393
7.5 T 플립플롭 ... 396
7.5.1 구성 가능한 (Configurable) 플립플롭 ... 397
7.6 JK 플립플롭 ... 397
7.7 전문용어의 요약 ... 397
7.8 레지스터 ... 399
7.8.1 시프트 레지스터 ... 399
7.8.2 병렬 액세스 (Parallel - Access) 시프트 레지스터 ... 399
7.9 카운터 ... 401
7.9.1 비동기식 카운터 ... 402
7.9.2 동기식 카운터 ... 404
7.9.3 병렬 로드를 갖는 카운터 ... 409
7.10 리셋 동기 ... 409
7.11 다른 형태의 카운터 ... 412
7.11.1 BCD 카운터 ... 413
7.11.2 링 카운터 ... 414
7.11.3 존슨 카운터 ... 415
7.11.4 카운터 설계에 대한 단평 ... 416
7.12 CAD 도구에서 저장소자의 사용 ... 416
7.12.1 모형도에 저장소자의 포함 ... 416
7.12.2 저장 소자들에 대한 VHDL 구문 사용하기 ... 419
7.13 CAD 도구에서 레지스터와 카운터의 사용 ... 422
7.13.1 모형도에 레지스터와 카운터의 포함 ... 424
7.13.2 VHDL 코드에서 레지스터와 카운터 ... 426
7.13.3 레지스터와 카운터에 대한 VHDL 순차문의 사용 ... 427
7.14 설계 예 ... 435
7.14.1 버스구조 ... 436
7.14.2 간단한 프로세서 ... 449
7.14.3 반응 타이머 ... 460
7.14.4 레지스터 전이 레벨(RTL) 코드 ... 466
7.15 결론 ... 467
7.16 문제풀이의 예 ... 467
연습문제 ... 471
참고문헌 ... 477
8장 동기 순차회로 ... 479
8.1 기본적인 설계 단계 ... 481
8.1.1 상태도 ... 482
8.1.2 상태표 ... 483
8.1.3 상태 배정 ... 484
8.1.4 플립플롭의 선택과 다음 상태식 및 출력식의 유도 ... 485
8.1.5 타이밍 다이아그램 ... 486
8.1.6 설계 단계의 요약 ... 488
8.2 상태 배정 문제 ... 491
8.2.1 1의 셋트화 ... 494
8.3 밀리 상태 모델 ... 496
8.4 CAD 도구들을 사용한 유한 상태 기계의 설계 ... 501
8.4.1 무어-유형 FSM에 대한 VHDL 코드 ... 501
8.4.2 VHDL 코드의 합성 ... 503
8.4.3 회로의 시뮬레이팅과 테스팅 ... 506
8.4.4 VHDL 코드의 다른 유형 ... 506
8.4.5 CAD 도구들을 사용할 때의 설계 단계 요약 ... 508
8.4.6 VHDL 코드에서 상태 배정의 명세 ... 508
8.4.7 VHDL을 사용한 밀리 FSM의 명세 ... 512
8.5 직렬 가산기 예 ... 513
8.5.1 직렬 가산기에 대한 밀리-유형 FSM ... 513
8.5.2 직렬 가산기에 대한 무어-유형 FSM ... 517
8.5.3 직렬 가산기에 대한 VHDL 코드 ... 518
8.6 상태 최소화 ... 523
8.6.1 파티션닝 최소화 절차 ... 523
8.6.2 불완전하게 명세된 FSM ... 531
8.7 순차회로 접근법을 사용한 카운터의 설계 ... 532
8.7.1 모듈로-8 카운터에 대한 상태도와 상태표 ... 533
8.7.2 상태 배정 ... 534
8.7.3 D-유형 플립플롭을 사용한 구현 ... 534
8.7.4 JK-유형 플립플롭을 사용한 구현 ... 536
8.7.5 예 - 다른 카운터 ... 540
8.8 중재기(Arbiter) 회로로서 FSM ... 542
8.8.1 중재기 회로의 구현 ... 547
8.8.2 FSM에 대한 출력 지연의 최소화 ... 549
8.8.3 요약 ... 550
8.9 동기 순차회로의 분석 ... 550
8.10 알고리즘 상태 기계(ASM; Algorithmic State Machine) 차트 ... 554
8.11 순차회로에 대한 형식 모델 ... 558
8.12 결론 ... 560
8.13 문제풀이의 예 ... 560
연습문제 ... 569
참고문헌 ... 574
9장 비동기 순차회로 ... 575
9.1 비동기 동작 ... 576
9.2 비동기 회로의 분석 ... 579
9.3 비동기 회로의 합성 ... 587
9.4 상태 축소 ... 600
9.5 상태 배정 ... 613
9.5.1 천이도 ... 617
9.5.2 규정되지 않은 다음 상태 엔트리를 활용하기 ... 620
9.5.3 추가된 상태 변수를 사용한 상태 배정 ... 624
9.5.4 1의 세트화 상태 배당 ... 628
9.6 해저드 ... 631
9.6.1 정적 해저드 ... 631
9.6.2 동적 해저드 ... 637
9.6.3 해저드의 중요성 ... 638
9.7 완전한 설계 예제 ... 638
9.7.1 자판기의 제어기 ... 638
9.8 결론 ... 643
9.9 문제풀이의 예 ... 645
연습문제 ... 653
참고문헌 ... 657
10장 디지털 시스템 설계 ... 659
10.1 구성 블록 회로 ... 660
10.1.1 인에이블(Enable) 입력을 가진 플립플롭과 레지스터 ... 660
10.1.2 인에이블 입력을 가진 시프트 레지스터 ... 662
10.1.3 Static Random Access Memory(SRAM) ... 664
10.1.4 PLD에서 SRAM 블록 ... 668
10.2 설계 예제들 ... 669
10.2.1 비트 카운팅 회로 ... 669
10.2.2 타이밍 정보를 내포한 ASM 차트 ... 670
10.2.3 시프트-덧셈을 이용한 곱셈기 ... 673
10.2.4 나눗셈기 ... 681
10.2.5 산술 평균(Arithmetic Mean) ... 692
10.2.6 정렬 연산 ... 698
10.3 클럭 동기화 ... 709
10.3.1 클럭 스큐 ... 709
10.3.2 플립플롭 타이밍 파라미터 ... 711
10.3.3 플립플롭의 비동기 입력 ... 713
10.3.4 스위치 접촉 진동 제거 ... 714
10.4 결론 ... 715
연습문제 ... 716
참고문헌 ... 721
11장 논리회로의 테스팅 ... 723
11.1 결함 모형(Sault Model) ... 724
11.1.1 스탁-앳 모형 ... 724
11.1.2 단순 결함 및 다중 결함 ... 725
11.1.3 CMOS 회로 ... 725
11.2 테스트 집합의 복잡도 ... 726
11.3 경로 감지(Path Sensitizing) ... 728
11.3.1 특정 결함의 검출 ... 729
11.4 나무 구조의 회로 ... 732
11.5 랜덤 테스트 ... 733
11.6 순차회로의 테스팅 ... 736
11.6.1 테스트가 용이한 설계 ... 736
11.7 빌트-인 셀프 테스트 ... 740
11.7.1 빌트인 로직 블록 관측기 ... 744
11.7.2 시그너쳐 분석 ... 746
11.7.3 경계스캔 ... 747
11.8 인쇄 회로 기판 ... 747
11.8.1 PCB 테스팅 ... 749
11.8.2 측정 장비 ... 751
11.9 결론 ... 752
연습문제 ... 753
참고문헌 ... 756
12장 CAD 도구 ... 757
12.1 합성 ... 758
12.1.1 넷리스트 생성 ... 758
12.1.2 게이트 최적화 ... 758
12.1.3 테크놀로지 매핑 ... 760
12.2 물리적 설계 ... 763
12.2.1 배치 ... 765
12.2.2 경로설정 ... 767
12.2.3 정적 타이밍 분석 ... 768
12.3 결론 ... 770
참고문헌 ... 771
부록 A VHDL 참고자료 ... 773
A.1 VHDL 코드의 문서화 ... 774
A.2 데이터 오브젝트 ... 774
A.2.1 데이터 오브젝트 이름 ... 774
A.2.2 데이터 오브젝트 값과 수 ... 775
A.2.3 SIGNAL 데이터 오브젝트 ... 775
A.2.4 BIT와 BIT_VECTOR 형태 ... 775
A.2.5 STD_LOGIC과 STD_LOGIC_VECTOR 형태 ... 776
A.2.6 STD_ULOGIC 형태 ... 777
A.2.7 부호가 있는(SIGNED) 자료형과 부호가 없는(UNSIGNED) 자료형 형태 ... 777
A.2.8 정수형 ... 778
A.2.9 부울 대수(BOOLEAN) 형 ... 778
A.2.10 열거(ENUMERATI0N) 형 ... 778
A.2.11 상수 데이터 오브젝트 ... 779
A.2.12 변수 데이터 오브젝트 ... 779
A.2.13 형 변환 ... 779
A.2.14 배열 ... 780
A.3 연산자 ... 781
A.4 VHDL디자인 엔티티 ... 781
A.4.1 목록 선언 ... 782
A.4.2 아키텍쳐 ... 782
A.5 패키지 ... 784
A.6 부회로 사용 ... 785
A.6.1 패키지에서 컴포넌트 선언하기 ... 787
A.7 병행(CONCURRENT) 할당 진술문 ... 788
A.7.1 단순 신호 할당 ... 789
A.7.2 다른 것(OTHERS)을 이용한 신호값 할당 ... 790
A.7.3 선택 신호 할당 ... 791
A.7.4 조건 신호 할당 ... 792
A.7.5 생성문 ... 793
A.8 제너릭(GENERIC)을 이용한 목록의 정의 ... 794
A.9 순차 할당문 ... 794
A.9.1 프로세서(PROCESS)문 ... 795
A.9.2 IF 문 ... 796
A.9.3 CASE 문 ... 797
A.9.4 Loop 문 ... 797
A.9.5 조합회로를 위한 프로세서의 사용 ... 798
A.9.6 문의 순서 ... 799
A.9.7 프로세스에서 변수의 사용 ... 800
A.10 순차회로 ... 805
A.10.1 게이트 D 래치 ... 805
A.10.2 D 플립플롭 ... 806
A.10.3 WAIT UNTIL 문의 사용 ... 806
A.10.4 비동기 리셋을 갖는 플립플롭 ... 807
A.10.5 동기 리셋 ... 808
A.10.6 레지스터 ... 808
A.10.7 시프트 레지스터 ... 808
A.10.8 카운터 ... 812
A.10.9 제너릭 파라미터를 갖는 서브서킷의 사용 ... 813
A.10.10 무어 형태의 유한 상태 머신 ... 815
A.10.11 밀리 형태의 유한 상태 머신 ... 818
A.11 VHDL 코드에서의 공통적인 에러 ... 818
A.12 결론 ... 824
참고문헌 ... 825
부록 B 사용지침서 1 - QUARTUS Ⅱ CAD 소프트웨어 사용하기 ... 827
B.1 서론 ... 827
B.1.1 시작하기 ... 828
B.2 새로운 프로젝트 시작하기 ... 830
B.3 스키매틱 캡쳐를 이용한 설계 엔티티 ... 832
B.3.1 블록 편집기(Block Editor) 사용하기 ... 833
B.3.2 스키매틱으로부터 회로 합성하기 ... 840
B.3.3 설계된 회로 시뮬레이션하기 ... 843
B.4 VHDL을 사용한 설계 엔트리 ... 847
B.4.1 다른 프로젝트 생성하기 ... 847
B.4.2 문서 편집기 사용하기 ... 849
B.4.3 VHDL 코드로부터 회로 합성하기 ... 850
B.4.4 기능적 시뮬레이션 실행하기 ... 851
B.4.5 VHDL 코드를 디버깅하기 위해 Quartus Ⅱ 사용하기 ... 851
B.5 설계 방법들을 결합하기 ... 852
B.5.1 최상위에서 스키메틱 엔트리 사용하기 ... 852
B.5.2 최상위에서 VHDL 사용하기 ... 855
B.6 Quartus Ⅱ 창들 ... 857
B.7 결론 ... 859
부록 C 사용지침서 2 - ALTERA DEVICES로 구현된 회로 ... 861
C.1 MAX 7000 CPLD에서의 회로 구현 ... 861
C.1.1 칩의 선택 ... 861
C.1.2 프로젝트 편집 ... 862
C.1.3 타이밍 시뮬레이션 실행하기 ... 864
C.1.4 Floorplan Editor를 사용하기 ... 865
C.2 Cyclone FPGA에 회로의 구현 ... 867
C.3 QUARTUS Ⅱ를 이용한 가산기 구현 ... 869
C.3.1 THE RIPPLE-CARRY 가산기 CODE ... 870
C.3.2 회로 시뮬레이션 ... 871
C.3.3 타이밍 시뮬레이션 ... 873
C.3.4 CPLD 칩의 구현 ... 876
C.4 LPM MODULE의 사용 ... 878
C.5 유한 상태 머신 설계 ... 883
C.5.1 CPLD로의 구현 ... 884
C.5.2 FPGA로의 구현 ... 888
C.6 결론 ... 889
부록 D 사용지침서 3 - PLD를 이용한 실제 구현 ... 891
D.1 핀 지정 방법 ... 891
D.1.1 Floorplan Editor를 사용하여 핀 지정 정보 검증 ... 894
D.1.2 핀 지정 후 프로젝트의 다시 컴파일하기 ... 894
D.1.3 Floorplan Editor로 핀 지정 바꾸기 ... 896
D.2 회로를 디바이스에 다운로드하기 ... 897
D.3 결론 ... 899
부록 E 시판용 장치들 ... 901
E.1 심플 PLD ... 901
E.1.1 22V10 PAL 장치 ... 902
E.2 콤플렉스 PLD ... 904
E.2.1 알테라(ALTERA) MAX 7000 ... 904
E.3 필드 프로그래머블 게이트 어레이(FPGA) ... 907
E.3.1 알테라 FLEX 10K ... 907
E.3.2 자이링스 XC4000 ... 910
E.3.3 알테라 APEX 20K ... 911
E.3.4 알테라 STRATIX ... 912
E.3.5 알테라 CYCLONE ... 914
E.3.6 알테라 STRATIX Ⅱ ... 914
E.3.7 자이링스 VIRTEX ... 915
E.3.8 자이링스 VIRTEX-Ⅱ와 VIRTEX-Ⅱpro ... 916
E.3.9 자이링스 SPARTAN-3 ... 917
E.4 트랜지스터-트랜지스터 논리 ... 917
E.4.1 TTL 회로 패밀리 ... 918
참고문헌 ... 919
해답 ... 821
찾아보기 ... 937
더보기 닫기