Presentation is loading. Please wait.

Presentation is loading. Please wait.

Similar presentations


Presentation on theme: ""— Presentation transcript:

105 조합 논리 함수

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

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

108 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

109 Single Gate 디코더(2) Figure 5.1

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

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

112 3 to 8 디코더의 진리표

113 3 to 8 디코더 회로 Figure 5.6

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

115 디지털 시뮬레이션 Figure 5.8

116 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

117 Enter Nodes from SNF (on Node Menu)

118 Nodes의 선택

119 시뮬레이션 파형의 기본 값

120 Setting the End Time (on File Menu)

121 Setting the Grid Size (on Option Menu)

122 Making a Group of signals (1)

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

124 Overwrite Count Value

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

126 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 구문이 필요 없다.

127 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;

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

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

130 디코더의 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;

131 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 등도 올 수 있다.

132 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;

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

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

135 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)

136 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;

137 정수형을 갖는 디코더 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;

138 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

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

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

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

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

143 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

144 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.

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

146 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

162 우선순위 엔코더의 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;

163 다른 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;

164 다른 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;

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

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

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

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

169 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;

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

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

172 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;

173 8:1 TDM 시뮬레이션 결과

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

175 디멀티플렉서(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문을 사용하여 설계될 수 있다.

176 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 <= " "; ELSE CASE s IS WHEN 0 => output <= " "; WHEN 1 => output <= " "; WHEN 2 => output <= " "; WHEN 3 => output <= " "; WHEN 4 => output <= " "; WHEN 5 => output <= " "; WHEN 6 => output <= " "; WHEN 7 => output <= " "; WHEN OTHERS => output <= " "; END CASE; END IF; y <= output; END PROCESS; END a;

177 1:8 DMUX 시뮬레이션 결과

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

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

180 크기 비교기(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 이면 하위비트로 계속적으로 비교과정을 수행.

181 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;

182 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

183 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 =  =  /=  >=   <=

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

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

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

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

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

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

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

191 패리티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;

192 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.


Download ppt ""

Similar presentations


Ads by Google