1 / 88

조합 논리 함수

조합 논리 함수. 단원목차. 1. 디코더 (Decoders) 2. 엔코더 (Encoders) 3. 멀티플렉서 (Multiplexers) 4. 디멀티플렉서 (Demultiplexers) 5. 크기 비교기 (Magnitude Comparators) 6. 패리티 생성기 및 검사기 (Parity Generators and Checkers). 기본 디코더. Decoder : 특정한 디지털 상태의 존재를 검출하는 디지털 회로 하나나 복수의 출력을 가질 수 있다 .

milos
Download Presentation

조합 논리 함수

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 조합 논리 함수

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

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

  4. Single Gate 디코더(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

  5. Single Gate 디코더(2) Figure 5.1

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

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

  8. 3 to 8 디코더의 진리표

  9. 3 to 8 디코더 회로 Figure 5.6

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

  11. 디지털 시뮬레이션 Figure 5.8

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

  13. Enter Nodes from SNF (on Node Menu)

  14. Nodes의 선택

  15. 시뮬레이션 파형의 기본 값

  16. Setting the End Time (on File Menu)

  17. Setting the Grid Size (on Option Menu)

  18. Making a Group of signals (1)

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

  20. Overwrite Count Value

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

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

  23. 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;

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

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

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

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

  28. 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;

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

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

  31. 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)

  32. 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 SIGNALinputs : 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;

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

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

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

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

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

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

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

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

  41. 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;

  42. 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;

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

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

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

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

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

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

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

  50. 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;

More Related