Slides:



Advertisements
Similar presentations
8장 대역폭 활용: 다중화와 스펙트럼확장.
Advertisements

Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
Introduction 2007년 2학기.
Copyright SangSangDom, All Rights Reserved.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
제 1장 C 언어의 소개.
4장. 조합 논리 회로 Lecture #4.
Digital Logic Structures
Design of Digital Clock (디지털 시계의 설계)
디지털 시스템 2010년 1학기 교수: 송상훈 연구실: 율곡관 603-B
Computer System Architecture
7 조합논리회로 IT CookBook, 디지털 논리회로.
4 컴퓨터에서 활용되는 디지털 논리회로 IT CookBook, 컴퓨터 구조와 원리 2.0.
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
순차로직 개요.
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
디지털 산술과 연산회로.
가산기 설계.
10장 주변장치 (PIO) Slide 1 (of 28).
Multiplexer 설계.
VHDL의 기본 Lecture #5.
Verilog HDL 이론.
디지털 시스템 설계(3).
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
To Hear will be forget To see will get memory again To do will be know.
PXA255-FPGA 장비 개요 및 실습 Lecture #9.
7-Segment FND Controller 구현
공학실험.
디 지 털 공 학 한국폴리텍V대학.
Computer System Architecture
COMPUTER ARCHITECTIRE
MAX+PLUS II 설치 및 디지털 시스템의 설계 방법
VHDL Package and Sub program
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
순차회로 모델링 Sun, Hye-Seung.
II. VHDL 설계부 4장. VHDL 개요 5장. VHDL 설계 구성 6장. VHDL 객체 및 타입 7장. VHDL 모델링
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
학습 목표 반가산기, 전가산기, 고속가산기의 동작을 이해하고 설계하는 방법을 알아본다.
VHDL의 기본 Lecture #4.
Data type and Object 자료형 변환 함수들은 std_logic_arith 패키지에 정의되어 있음.
IT CookBook, VHDL을 이용한 FPGA 디지털 설계
(Bandwidth Utilization: Multiplexing and Spreading)
FSM 설계.
Flip-Flop 설계.
Unit 1 Number Systems and Conversion (수의 체계와 변환)
Programmable Logic Device
Chapter 4 The Von Neumann Model.
VHDL Mealy and Moore model
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
논리회로 설계 및 실험 3주차.
Introduction to Programming Language
D:\win_9X\setup.exe 또는 D:\win_XP\setup.exe 을 클릭하여 설치합니다.
VHDL 디지털시계 2.
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
가산기 설계.
루프와 카운트 Looping and counting
디 지 털 공 학 한국폴리텍V대학.
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
LCD.
IBM Corporation {haoxing, eleve, kravets,
DEGITAL LOGIC CIRCUIT Term Project – 4 bit ALU.
VHDL 응용 Lecture #10.
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

조합 논리 함수

단원목차 1. 디코더(Decoders) 2. 엔코더(Encoders) 3. 멀티플렉서(Multiplexers) 4. 디멀티플렉서(Demultiplexers) 5. 크기 비교기(Magnitude Comparators) 6. 패리티 생성기 및 검사기(Parity Generators and Checkers)

기본 디코더 Decoder : 특정한 디지털 상태의 존재를 검출하는 디지털 회로 하나나 복수의 출력을 가질 수 있다. Example : 2-Input NAND Gate는 입력 상에 ‘11’ 를 검출하여 출력에 ‘0’을 발생한다.

Single Gate 디코더(1) See Figure 5.1 단일 게이트(AND/NAND)와 몇 몇 Inverter를 사용한다. Example: 4-Input AND는 입력에 ‘1111’를 검출하여 출력에 ‘1’을 발생시킨다. 입력은 D3,D2,D1,D0로 표기되고, D3는 MSB(most significant bit), D0는 LSB (least significant bit)가 된다. See Figure 5.1

Single Gate 디코더(2) Figure 5.1

Single Gate 예 만약 4-Input NAND 게이트의 입력이 !D3, !D2, !D1, D0로 주어진다면, NAND 게이트는 0001 코드를 검출한다(! = NOT). 코드가 0001일 때 출력은 0이 된다. 이 같은 디코더 형태는 PC 시스템에서 어드레스 디코더로 사용된다.(예 5.2)

다중 출력 디코더 n개의 입력을 가진 디코더는 m= 2n 개의 load circuit을 활성화 시킬 수 있다. 2 to 4 또는 3 to 8 디코더와 같이 n-line to m-line 디코더라 불린다. 일반적으로 디코더 출력을 활성화 시키기 위해 active low enable 입력 !G를 가진다.

3 to 8 디코더의 진리표

3 to 8 디코더 회로 Figure 5.6

디지털 시뮬레이션 Simulation : CPLD내에 설계 결과를 프로그램 하기 전에 타이밍 도를 사용하여 설계내용을 검증하는 과정 타이밍 도 상의 입력 스티뮬러스에 대한 출력 응답을 체크한다. See Figure 5.8

디지털 시뮬레이션 Figure 5.8

MAX+PLUSII 시뮬레이션 기본과정 1. Enter Nodes from SNF (on Node Menu) 2. Set End Time (File Menu) for length (default = 1.0us) 3. Set Grid Size (Options Menu) : 시뮬레이션 시 최소시간을 결정 Fig. 5.9 ~ 5.15 참조 4. Use Toolbar to set input stimulus 5. Open Simulator Engine, Press Start

Enter Nodes from SNF (on Node Menu)

Nodes의 선택

시뮬레이션 파형의 기본 값

Setting the End Time (on File Menu)

Setting the Grid Size (on Option Menu)

Making a Group of signals (1)

Making a Group of signals (2) – Pop-up menu

Overwrite Count Value

시뮬레이션 결과(open .scf file) Figure 5.21

2 to 4 디코더의 VHDL Entity --Basic VHDL Entity for I/O ENTITY decode1 IS PORT(D1,D0 : IN BIT; Y0,Y1,Y2,Y3 : OUT BIT); END decode1; 만약 입력과 출력포트가 std_logic type가 아닌 bit type으로 선언되면 IEEE library 구문이 필요 없다.

2 to 4 디코더의 VHDL Architecture -- Use Concurrent Signal Assignment ARCHITECTURE decoder OF decode1 IS BEGIN Y0 <= (not D1) and (not D0); Y1 <= (not D1) and (D0); Y2 <= (D1) and (not D0); Y3 <= (D1) and (D0); END decoder;

VHDL Architecture Data Flow Architecture 는 병행적 신호 할당(concurrent signal assignments)을 사용한다. (Boolean eqs.) 병행적 신호(Concurrent Signals): 모든 출력은 동일한 시간에 바뀐다. 즉, 순차적으로 바뀌지 않는다. (순서는 중요하지 않다.) 조합논리회로 설계에 가장 보편적으로 사용되는 구조이다. Dataflow Description : 함수적 기술 Structural Description : 하드웨어적 기술 Behavioral Description : 행위적 기술 Hierarchical Description : 데이터플로우 + 구조적 기술

선택적 신호 할당(Selected Signal Assignments) WITH SELECT 의 VHDL Architecture 구문을 사용한다. 기본형식: WITH (signal input(s)) SELECT signal input states are used to define the output state changes.

디코더의 VHDL Entity Basic Entity for Selected Signal ENTITY decode1 IS PORT( D : IN STD_LOGIC_VECTOR(1 downto 0); Y :OUT STD_LOGIC_VECTOR(3 downto 0)); END decode1;

Selected Signal Entity 이전 슬라이드에서 Entity는 입력과 출력을 위해 STD LOGIC 배열을 사용했다. The Y : OUT STD_LOGIC_VECTOR(3 downto 0)는 Y3, Y2, Y1, Y0을 의미한다. The STD_LOGIC 데이터 형식은 BIT 형식과 유사하지만 단지, 0과 1외에도 Z, X, H, L 등도 올 수 있다.

Selected Signal Architecture Basic Architecture ARCHITECTURE decoder OF decode1 IS BEGIN WITH D SELECT Y <= “0001” WHEN “00”, “0010” WHEN “01”, “0100” WHEN “10”, “1000” WHEN “11”, “0000” WHEN OTHERS; END decoder;

디코더 Architecture 이전 Architecture는 출력 Y를 결정하기 위해서 ‘SELECT’를 사용하여 ‘D’를 평가하였다. D와 Y는 어레이 데이터 형식으로 사용되었다.(버스 혹은 벡터). 마지막 구문인 ‘WHEN OTHERS’는 other logic states (Z, X, H, L, etc.)를 위해 사용되었다.

VHDL Architecture는 ‘WHEN ELSE’ 를 사용한다. 기본형식: 조건적 신호 할당(Conditional Signal Assignments) VHDL Architecture는 ‘WHEN ELSE’ 를 사용한다. 기본형식: WHEN 조건(부울식) ELSE 해당 조건에 부합되면 실행

Conditional Signal Architecture Basic Architecture ARCHITECTURE decoder OF decode1 IS BEGIN Y <= “0001” WHEN D = “00” ELSE “0010” WHEN D = “01” ELSE “0100” WHEN D = “10” ELSE “1000” WHEN D = “11” ELSE “0000” ; END decoder; 순차적으로 평가 (서로 종속적) Altera는 CPLD 내부회로의 효율성을 위해 “conditional signal assignment” 보다 “selected signal assignment”를 사용하기를 권한다. (Golden Rules)

Enable 입력을 갖는 디코더 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY decode3a IS PORT( d : IN STD_LOGIC_VECTOR (1 downto 0); g : IN STD_LOGIC; y : OUT STD_LOGIC_VECTOR (3 downto 0)); END decode3a; ARCHITECTURE decoder OF decode3a IS SIGNAL inputs : STD_LOGIC_VECTOR (2 downto 0); BEGIN inputs(2) <= g; inputs (1 downto 0) <= d; WITH inputs SELECT y <= "0001" WHEN "000", "0010" WHEN "001", "0100" WHEN "010", "1000" WHEN "011", "0000" WHEN others; END decoder;

정수형을 갖는 디코더 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY decode4g IS PORT( d : IN INTEGER Range 0 to 3; g : IN STD_LOGIC; y : OUT STD_LOGIC_VECTOR (0 to 3)); END decode4g; ARCHITECTURE a OF decode4g IS BEGIN y <= "1000" WHEN (d=0 and g='0') ELSE "0100" WHEN (d=1 and g='0') ELSE "0010" WHEN (d=2 and g='0') ELSE "0001" WHEN (d=3 and g='0') ELSE "0000"; END a;

Report File (.rpt) : 일부 ** EQUATIONS ** d0 : INPUT; d1 : INPUT; g : INPUT; -- Node name is 'y0' -- Equation name is 'y0', location is LC118, type is output. y0 = LCELL( _EQ001 $ GND); _EQ001 = !d0 & !d1 & !g; -- Node name is 'y1' -- Equation name is 'y1', location is LC115, type is output. y1 = LCELL( _EQ002 $ GND); _EQ002 = d0 & !d1 & !g; - - 계속 ! = NOT & = AND # = OR $ = XOR

Seven Segment Displays I Seven Segment Display: 8자 모양으로 구성된 7개의 LED들이 독립적으로 제어되어 십진 수를 표시하는 소자 공통 양극 디스플레이(CA): LED의 모든 양극이 공통으로 Vcc에 연결되어 로직 ‘0’일 때 세그먼트를 턴온 시킨다.(a to g).

Seven Segment Displays II 공통 음극 디스플레이(CC): LED의 모든 음극이 공통으로 GND에 연결되어 로직 ‘1’일 때 세그먼트를 턴온 시킨다.(a to g). LED (light emitting diode)는 음극보다 양극의 전위가 높을 때 턴온 된다.

Seven Segment Decoder/Drivers I 숫자 0에서 9를 나타내는 BCD(Binary Coded Decimal) 4 Bit 코드인 ‘0000 – 1001’를 입력 받는다. 각 디스플레이LED를 위해 출력(a - g)을 발생시킨다. 각 세그먼트에서는 전류를 제한하기 위한 직렬저항이 요구된다.

Seven Segment Decoder/Driver II 공통음극 세븐-세그먼트(CC-SS)를 위한 디코더는 ‘active high’ 출력을 갖지만, 공통양극 세븐-세그먼트(CA-SS)는 ‘active low’ 출력을 가진다. 출력은 이진 입력조합 ‘1010 – 1111’과 ‘don’t cares’에 의해 생성된다. 디코더는 VHDL이나 MSI Logic (7447, 7448)으로 설계될 수 있다.

SS Decoder Entity Basic Entity ENTITY bcd_7seg IS PORT( d3, d2, d1, d0 :IN BIT; a,b,c,d,e,f,g :OUT BIT); END bcd_7seg; -- Defines binary inputs d0 to d3 -- Defines SS outputs a to g

SS VHDL Architecture (CA) I Seven Segment signal declarations ARCHITECTURE seven_segment OF bcd_7seg IS SIGNAL input : BIT_VECTOR(3 downto 0); SIGNAL output : BIT_VECTOR(6 downto 0); BEGIN input <= D3 & D2 & D1 &D0 -- Uses two intermediate signals called input and output -- Creates an array by using the concatenate operator (&) -- In this case input(3) <= D3, input(2) <= D2 etc.

SS VHDL Architecture (CA) II SS Architecture는 몇 몇 상태가 필요하다. WITH input SELECT output <= “0000001” WHEN “0000”, output <= “1001111” WHEN “0001”, output <= “0010010” WHEN “0010”, output <= “0000110” WHEN “0011”, output <= “1001100” WHEN “0100”, output <= “0100100” WHEN “0101”, | | | output <= “1111111” WHEN OTHERS;

SS VHDL Architecture (CA) III SS Architecture(계속) a <= output(6); b <= output(5); c <= output(4); d <= output(3); e <= output(2); f <= output(1); g <= output(0); END seven_segment;

SS VHDL File 설명 이전 예제 파일에서는 ‘selected signal assignment’이 사용되었다. - WITH (signals) SELECT 중간 출력 신호들은 세그먼트(a에서 g)에 매핑된다. 예로써, 입력(D3 - D0) = 0001일 때, 디코더는 a=d=e=f=g=1, b=c=0로 세트한다.

Ripple Blanking I 리플 블랭킹: 복수 자리의 수를 표시할 때 앞이나 꼬리부분의 영(‘0’)은 표시하지 않고 중간부분의 영 (‘0’) 은 표시하는 기법. RBI(active low) 입력과 RBO(active low) 출력을 사용한다. D0 - D3 = 0000 이고 RBI = 0일 때 디스플레이는 소거(blank)된다.

Ripple Blanking II D0 - D3 = 0000 이고 RBI = 1 일 때 디스플레이는 영(‘0’)을 표시한다. 만약 RBI = 1 or D0 - D3 = (NOT 0000) 이면 RBO = 1이 된다. 앞부분의 영들을 소거하고자 한다면, 최상위 자리(MSD)의 RBI를 GND에 연결하고, RBO는 그 다음 하위자리의 RBI에 연결한다.

VHDL에서의 Sequential Process A VHDL Process 는 sequential statements 를 포함함으로 구성된다. sequential statements 는 sensitivity list 상의 신호에 변화가 있을 때 실행된다. 기본형식 PROCESS(Sensitivity List) BEGIN Sequential Statements; END PROCESS;

CASE Statement Template CASE __expression IS WHEN __constant_value => __statement; WHEN OTHERS => END CASE; => 여러 값에 따라 결정할 때 Process 문 내에 사용

IF Statement Template IF __expression THEN __statement; ELSIF __expression THEN ELSE END IF; => TRUE or FALSE 조건에 따라 결정할 때 Process 문 내에 사용

Ripple Blanking Process구문 I 이전 파일에 기본 프로세스 구문이 더해진다. (sevsegrb.vhd) PROCESS(nRBI, input) BEGIN IF(input = “0000” and nRBI = ‘0’) THEN output <= “1111111”; -- Suppressed 0 nRBO <= ‘0’; ELSIF(input = “0000” and nRBI = ‘1’) THEN output <= “0000001”; -- Display a 0 nRBO <= ‘1’; ELSE -- Continued on next slide

Ripple Blanking Process구문 II 이전 파일의 일부를 변경 CASE input IS WHEN “0001” => output <= “1001111”; -- a 1 Displayed WHEN “0010” => output <= “0010010”; -- a 2 Displayed | | | | | WHEN Others => output <= “1111111”; -- Blank END CASE; nRBO <= ‘1’; END IF;

CASE 문 SS 디스플레이를 위한 출력을 발생시키기 위해 리플 블랭킹 설계에서 선택적 신호 할당문(With Select)을 Case문으로 교체 했다. The Process Steps are evaluated in sequence first the IF statements, then the Case and so on.

IF THEN ELSE IF THEN ELSE 문은 몇몇 입력에 대한 조건적 검사를 위해 사용된다.(데이터와 RBI) IF the data is this value THEN do these statements ELSE do this. 이러한 구문은 매우 간단하고, 순차회로를 다루는데 유용하다.

기본 엔코더(Encoders) 엔코더: 하나 또는 그 이상의 활성 입력에 응답하여 출력에 특정한 코드를 출력시키는 회로. 디코더와는 상호 보상적인 기능을 수행한다. 출력코드는 일반적으로 Binary나 BCD 이다. 우선순위 엔코더: 가장 높은 우선순위에 기초하여 코드를 출력시키는 엔코더

8 to 3 엔코더 진리표 입력은 Active High D7 D6 D5 D4 D3 D2 D1 D0 Q2 Q1 Q0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 | | | | | 1 0 0 0 0 0 0 0 1 1 1               

8 to 3 엔코더의 부울식 이전 진리표에서 0에서 7까지의 각 라인은 자신의 이진 코드를 생성한다. 즉, 1은 001, 5는 101 등등. 출력에 대한 부울식 Q2 = D4 + D5 + D6 +D7 Q1 = D2 + D3 + D6 + D7 Q0 = D1 + D3 + D5 + D7

우선순위 엔코더(1) 이전의 표준 엔코더 식은, 만약 두개의 입력이 동시에 활성화되면 에러를 발생시킨다. 만약 D3 = D5=1 이면 출력은 101 이나 011이 아닌 111이 된다. 입력에 우선순위 기능을 추가하면, D3와 D5가 동시에 활성화되면, D3는 무시되고 출력코드는 101이 된다.

우선순위 엔코더(2) 설계는 부울식과 병행적 논리문을 같이 사용하여 이루어질 수 있다. 우선순위 엔코더 식 Q2 = D7 + D6 + D5 + D4 Q1 = D7 + D6 + !D5!D4D3 + !D5!D4D2 Q0 = D7 + !D6D5 + !D6!D4D3 + !D6!D4!D2D1 (table 5.5참조)

우선순위 엔코더의 VHDL Architecture 8 to 3 우선순위 엔코더의 간략한 예 ENTITY hi_pri8a IS PORT( d : IN BIT_VECTOR(7 downto 0); q : OUT BIT_VECTOR(2 downto 0)); END hi_pri8a ; ARCHITECTURE priorenc OF enc8to3 IS BEGIN -- concurrent signal assignments Q(2) <= D(7) OR D(6) OR D(5) OR D(4); Q(1) <= D(7) OR D(6) OR ((not D(5)) and (not D(4)) and D(3)) OR ((not D(5)) and (not D(4)) and D(2)) ; Q(0) <= -- In a similar fashion END priorenc;

다른 VHDL Encoder(1) A WHEN ELSE is similar to If-Then-Else. ENTITY hi_pri8a IS PORT( d : IN BIT_VECTOR(7 downto 0); q : OUT INTEGER RANGE 0 to 7); END hi_pri8a ; ARCHITECTURE a OF hi_pri8b IS BEGIN -- conditional signal assignments Q <= 7 WHEN D(7) = ‘1’ ELSE -- The highest-priority condition is examined first 6 WHEN D(6) = ‘1’ ELSE 5 WHEN D(5) = ‘1’ ELSE 4 WHEN D(4) = ‘1’ ELSE 3 WHEN D(3) = ‘1’ ELSE 2 WHEN D(2) = ‘1’ ELSE 1 WHEN D(1) = ‘1’ ELSE 0; END a;

다른 VHDL Encoder(2) If-Then-Else문은 반드시 PROCESS문 내에만 사용된다. ENTITY hi_pri8a IS PORT( d : IN BIT_VECTOR(7 downto 0); q : OUT INTEGER RANGE 0 to 7); END hi_pri8a ; ARCHITECTURE a OF hi_pri8b IS BEGIN PROCESS (d) IF (d(7) = ‘1’) THEN q <= 7; ELSIF (d(6) = ‘1’) THEN q <= 6; --- ELSIF (d(1) = ‘1’) THEN q <= 1; ELSE q <= 0; ENDIF; END PROCESS; END a;

시뮬레이션 결과 8-to-3 우선순위 엔코더(Fig. 5-31)

멀티플렉서 Multiplexer: 몇몇 선택입력의 상태에 따라 여러 입력 중의 하나를 하나의 출력에 연결시키는 회로. MUX 라고 하고, N:1 MUX는 M개의 선택입력을 요구한다.(N = 2M) 예로 4:1 MUX 는 2개(S1과 S0)의 선택입력을 요한다. Fig. 5.34, 5.37

4:1 Multiplexers (Fig 5.34 & 5.37) Y = D0!S1!S0 + D1!S1S0 + D2S1!S0 + D3S1S0

Multiplexer Logic 4:1 멀티플렉서에 대한 부울식은 Y = D0(!S1!S0) + D1(!S1S0) + D2(S1!S0) + D3(S1S0). 이같은 표현은 임의의 크기의 MUX로 확장될 수 있고, VHDL 구문은 매우 긴 병행적 부울 문의 사용을 요구한다. 좀 더 손쉬운 접근방법은 CASE 문을 다시 사용하는 것이다.

4:1 MUX(프로세스내의 case문) ARCHITECTURE mux4to1 OF mux4case IS BEGIN PROCESS(S) -- Process is sensitive to S (S1,S0) Selects CASE S IS WHEN “00” => Y <= D0; WHEN “01” => Y <= D1; WHEN “10” => Y <= D2; WHEN “11” => Y <= D3; WHEN OTHERS => Y <= ‘0’; END CASE; END PROCESS; END mux4to1;

멀티플렉서 응용 여러 CD 플레이어의 데이터 스트림을 하나의 DSP에 전송하는 것과 같이, 단일 프로세서에 다중 데이터 소스를 연결시킬 때 사용된다. 다중의 음성채널을 단일의 동축선로 (혹은 광섬유)에 시분할 다중화( TDM: Time Division Multiplexing) 할 때 사용된다.

시분할 다중화(TDM) 각 사용자는 TDM 데이터 프레임내의 규정된 타임슬롯을 가진다. 각 프레임은 24 사용자를 갖는다. 각 사용자는 여분의 데이터를 위해 다음 프레임의 타임 슬롯을 반복해서 사용한다. 링크는 T1 라인과 같은 T-Carriers라 한다. Fig. 5.47

8:1 TDM ENTITY mux_8ch IS PORT( sel : IN BIT_VECTOR(2 downto 0); d : IN BIT_VECTOR(7 downto 0); y : OUT BIT); END mux_8ch; ARCHITECTURE a OF mux_8ch IS BEGIN -- Selected Signal Assignment MUX8: WITH sel SELECT y <= d(0) WHEN "000", d(1) WHEN "001", d(2) WHEN "010", d(3) WHEN "011", d(4) WHEN "100", d(5) WHEN "101", d(6) WHEN "110", d(7) WHEN "111"; END a;

8:1 TDM 시뮬레이션 결과

디멀티플렉서(1) Demultiplexer: 단일 입력을 여러 출력 채널 중의 하나로 연결시키는 회로. DEMUX는 MUX의 반대 동작이다. 출력은 선택제어입력에 의해 선택된다. ( MUX에서와 같이).

디멀티플렉서(2) 1:N DEMUX는 M개의 선택입력을 요한다.(N = 2M) 예로 1:4 DEMUX 식은: Y(0) = D0!S1!S0; Y(1) = D0!S1S0; Y(2)=D0S1!S0; Y(3) = D0S1S0. MUX와 유사하게 CASE문을 사용하여 설계될 수 있다.

1:8 DMUX ENTITY dmux8 IS PORT( s : IN INTEGER Range 0 to 7; d : IN BIT; y : OUT BIT_VECTOR (0 to 7)); END dmux8; ARCHITECTURE a OF dmux8 IS SIGNAL output : BIT_VECTOR(0 to 7); BEGIN PROCESS (d, s) IF (d = '1') THEN output <= "11111111"; ELSE CASE s IS WHEN 0 => output <= "01111111"; WHEN 1 => output <= "10111111"; WHEN 2 => output <= "11011111"; WHEN 3 => output <= "11101111"; WHEN 4 => output <= "11110111"; WHEN 5 => output <= "11111011"; WHEN 6 => output <= "11111101"; WHEN 7 => output <= "11111110"; WHEN OTHERS => output <= "11111111"; END CASE; END IF; y <= output; END PROCESS; END a;

1:8 DMUX 시뮬레이션 결과

CMOS Analog Mux/Demux + 와 – 전압을 양방향으로 통과시키기 위해서 CMOS 스위치 혹은 전송게이트 (Transmission Gate)를 사용한다. 몇몇 상업용 소자는 CD4066, 74HC4066.

크기 비교기(1) Magnitude Comparator: 두 개의 N-비트 이진수를 비교하여, 대소 관계를 가리키는 회로. 가장 간단한 1-비트 크기 비교기는 2-입력 XNOR 게이트이다. 두 입력이 동일하면, 출력이 1이 되고 그렇치 않으면 0이 된다.

크기 비교기(2) 다중 비트 비교 AEQB = !(An-1 XOR Bn-1) • !(An-2 XOR Bn-2 ) …. 또한 A>B(AGTB)과 A<B(ALTB) 출력을 추가. 먼저 MSB의 A > B 인지를 판단하는 것으로 시작, 만약 An-1 > Bn-1 이면 AGTB = 1. 만약 An-1 = Bn-1 이면 하위비트로 계속적으로 비교과정을 수행.

2-Bit 크기 비교기 VHDL(concurrent) -- compare2.vhd (It is difficult to type because of too many parenthesis) ENTITY compare2 IS PORT( a, b : IN BIT_VECTOR(1 downto 0); agtb, aeqb, altb : OUT BIT); END compare2; ARCHITECTURE a OF compare2 IS BEGIN altb <= (not (a(1)) and b(1)) or ((not (a(1) xor b(1))) and (not (a(0)) and b(0))); aeqb<= (not (a(1) xor b(1))) and (not (a(0) xor b(0))); agtb<= (a(1) and not (b(1))) or ((not (a(1) xor b(1))) and (a(0) and not (b(0)))); END a;

4-Bit 크기 비교기 VHDL(behavioral) LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY compare4 IS PORT( a, b : IN INTEGER RANGE 0 TO 15; -- for 8-bit 0 TO 255 agtb, aeqb, altb : OUT STD_LOGIC); END compare4; ARCHITECTURE a OF compare4 IS SIGNAL compare : STD_LOGIC_VECTOR(2 downto 0); BEGIN

Relational operators in VHDL 4-Bit 크기 비교기 VHDL(계속) PROCESS (a,b) -- Sensitive to A and B Integer Arrays BEGIN IF a < b THEN compare <= “110”; ELSIF a = b THEN compare <= “101”; ELSIF a > b THEN compare <= “011”; ELSE compare <= “111”; END IF; agtb <= compare(2); aeqb <= compare(1); altb <= compare(0); END PROCESS; END a; Relational operators in VHDL =  =  /=  >=   <=

4-Bit 크기 비교기 시뮬레이션

패리티 개념(1) Parity: N-비트 이진수나 코드에서 에러를 검사하는 시스템. Even Parity: 1의 개수가 짝수가 되게끔 패리티 비트를 요구하는 시스템. Odd Parity: 1의 개수가 홀수가 되게끔 패리티 비트를 요구하는 시스템.

패리티 개념(2) Parity Bit: 시스템의 패리티 형식에 따라 1의 개수가 짝수 혹은 홀수가 되게끔 이진수나 코드의 끝에 덧붙여지는 비트. 패리티는 PC에서 COM포트 상의 UART 소자에 의해 데이터를 송/수신할 때 사용된다.

패리티 계산 N1 = 0110 110은 4개의 1을 가진다. 만약 패리티를 홀수로 하면, 홀수개의 1을 만들기 위해 Parity Bit= 1 이 된다. 만약 패리티를 짝수로 하면, 짝수개의 1을 만들기 위해 Parity Bit = 0 이 된다. N2 = 100 0000 이면, Podd = 0, Peven=1

패리티 생성 하드웨어(1) 2-비트 패리티 생성기는 XOR 게이트로 구성될 수 있다. 두 비트의 입력이 01 혹은 10 일때, 출력은 1 이 된다.(even parity) 두 비트의 입력이 00 혹은 11 일때 출력은 0이 된다.(odd parity) 이러한 개념은 확장되어 게이트를 추가함으로써 N-비트 패리티 생성기를 구성할 수 있다.

패리티 생성 하드웨어(2) 이것은 XOR 게이트가 기다란 직렬 체인 구조로 됨으로써 과도한 전파지연을 야기 시킨다. 수신측에서(Rx) 패리티 에러를 검사하기 위해서, 수신된 병렬 데이터에 기초한 새로운 패리티 비트(P1)를 생성시키고, 이를 전송된 패리티(P2)와 비교한다.

패리티 생성 하드웨어(3) 만약 에러가 있으면, 두 비트(P1 and P2)가 같지 않게 되므로, 이는 두 비트 크기 비교기로 수행할 수 있다.(XOR gate). 만약 에러가 없으면, 출력(Perr)은 0이 된다. 패리티 시스템은 견고한 에러검사 시스템이 아니다. 만약 두 비트 모두가 에러가 되면, 에러를 검출하지 못한다.

패리티VHDL Architecture Six Bit Parity Generator ARCHITECTURE par OF pargen IS BEGIN parev <= A0 XOR A1 XOR A2 XOR A3 XOR A4 XOR A5; END par;

SUMMARY A selected signal assignment statement __label: WITH __expression SELECT __signal <= __expression WHEN __constant_value, __expression WHEN __constant_value, __expression WHEN __constant_value; A conditional signal assignment statement __label: __signal <= __expression WHEN __boolean_expression ELSE __expression WHEN __boolean_expression ELSE __expression; SIGNAL act as internal connections in a VHDL design entity. They can be single lines or vectors and are declared before the BEGIN clause of an ARCHITECTURE body.