• 전문가 요청 쿠폰 이벤트
*현*
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 17
검색어 입력폼
  • 논리회로설계실습-비교기-MUX-ALU-결과보고서
    논리회로설계 실험 결과보고서 #5실험 5. 조합회로 설계 - 비교기, MUX, ALU1. 실험 목표4비트 크기의 이진수 A, B와 2비트 크기의 선택 신호 S를 입력으로 받아 5비트 이진수 Y를 출력하는 산술논리연산장치(ALU)의 동작을 이해하고 설계한다. 소스 코드 작성 시, 함수와 프로시저를 포함한 패키지를 사용하여 작성한다. 테스트 벤치 작성을 통해 설계한 ALU가 정상적으로 동작하는지 시뮬레이션을 통하여 확인한다.2. 실험 결과 4가지 연산을 수행하는 산술논리연산장치(ALU)를 함수, 프로시저를 이용하여 작성하시오.(1) 소스 코드ALU MainPackage(2) 테스트 벤치 코드(3) Wave Form3. 고찰(1) 조원1의 고찰주어진 산술논리연산장치(이하 ALU)를 가산기능에서는 함수를, 감산기능에서는 프로시져를 사용한다. 따라서 ALU의 Main 소스 코드를 작성하기 앞서 가산기능을 수행하는 함수 ‘A6_JSW_CHS_Adder'와 감산기능을 수행하는 프로시져 'A6_JSW_CHS_Procedure’의 두가지 기능을 내장하고 있는 자체 패키지 ‘Pac_A6_JSW_CHS’을 다음 그림과 같이 정의하였다.그림 1. Package 선언함수 A6_JSW_CHS_Adder는 4비트 크기의 이진수 A_in[3:0]와 B_in[3:0]을 입력으로 받아 덧셈 후 결과값인 5비트 크기의 비트열을 출력으로 반환(return)한다. 프로시져 A6_JSW_CHS_Procedure는 마찬가지로 4비트 크기의 이진수 I0[3:0], I1[3:0]을 입력으로 받아 뺄셈 후 5비트 크기의 이진수 Subtract를 출력하는 동작을 수행한다.패키지 바디에서 기술된 각 함수와 프로시져의 동작을 살펴보겠다.그림 2. A6_JSW_CHS_Adder 함수 (가산기능)함수의 경우 주어진 입력이 4비트이므로 입력을(‘0’ & 입력)으로 표현해 출력과 같은 5비트로 변환 후, 덧셈 연산의 결과를 별도로 선언한 변수 Sum에 할당하였다. Sum을 반환하는 것으로 함수의 소스 코드 작성을 완료우에는 출력 Subtract를 ('0' & I0) - ('0' & I1)로 표현할 수 있다.또한 각 함수와 프로시져는 std_logic_vector간의 + 및 - 연산을 수행하므로 다음과 같은 패키지를 추가적으로 사용하도록 선언한다.그림 4. 패키지 참조 선언위와 같이 함수와 프로시져 각각의 동작을 기술하여 패키지 소스 코드 작성을 완료한다. 이제 패키지 내부에서 정의한 기능을 이용하여 ALU의 Main 소스 코드를 작성할 수 있다. 주어진 ALU는 선택신호 S[1:0]에 따라 동작을 달리한다. 따라서 Case문을 사용하여 S[1:0] 값에 따른 각 동작을 다음과 같이 나타내었다.그림 5. S[1:0]에 따른 ALU의 동작S[1:0] = "00"일 경우, 두 이진수 A, B 사이의 가산기능을 수행하므로 앞서 패키지에서 정의했던 함수 A6_JSW_CHS_Adder를 불러와 입력으로 A, B를 넣어준다. 함수는 A, B의 덧셈 후의 비트열을 결과값으로 반환(return)하기 때문에 출력 Y에 바로 할당할 수 있다. 반면에 S[1:0] = "01", “10”일 경우에 사용할 프로시져는 결과값을 반환하는 것이 아닌 그 자체로 하나의 동작을 기술하는 것이기 때문에 뺄셈 연산 후의 결과값을 저장할 변수를 별도로 선언해야 한다. 이를 case문에 앞서서 다음과 같이 나타내었다.그림 6. Procedure 사용을 위한 별도 변수 지정Sub1과 Sub2는 프로시져에서 뺄셈 수행 후의 결과값을 저장하기 위해 별도로 선언한 변수이다. 앞서 패키지에서 정의했던 A6_JSW_CHS_Procedure를 불러와 (A, B, Sub1), (B, A, Sub2) 순으로 변수를 넣어주면 Sub1과 Sub2는 각각 A-B, B-A 값이 할당된다. 이 결과값을 그림 5와 같이 Y에 할당하면 S[1:0] = "01", "10"일 때의 동작을 각각 표현할 수 있다. S[1:0]= "11" 일 경우는 “-----”값이 표현되도록 when others 이후에 정의해주었다. 또한 전체적인 과정에서 직접 s 마다 임의의 값을 할당하였고 S에는 50ns 마다 “00”부터 “11”까지의 값을 순차적으로 할당하였다. 개체 전체의 딜레이는 고려하지 않는다. 나타난 Wave Form은 표 1와 같이 정리하였다. 계산값을 명확히 파악하기 위하여 이진수 (십진수) 형태로 표기하였다.표 1. Wave Form 결과시간(ns)S[1:0]A[3:0]연산B[3:0]Y[4:0]0~50000011 (3)A+B0101 (5)01000 (8)50~100010011 (3)A-B0101 (5)01110 (-2)100~150100011 (3)B-A0101 (5)00010 (2)150~200110011 (3)-----0101 (5)-----200~250001010 (10)A+B0111 (7)10001 (17)250~300011010 (10)A-B0111 (7)00011 (3)300~350101010 (10)B-A0111 (7)01101 (-3)350~400111010 (10)-----0111 (7)-----400~450001101 (13)A+B1001 (9)10110 (22)450~500011101 (13)A-B1001 (9)00100 (4)500~550101101 (13)B-A1001 (9)01100 (-4)550~600111101 (13)-----1001 (9)-----입력 A, B간의 덧셈 연산의 결과값 0011 (3) + 0101 (5) = 01000 (8), 1010 (10) + 0111 (7) = 10001 (17), 1101 (13) + 1001 (9) = 10110 (22)이 출력 Y에 나타나 있다. 뺄셈의 경우, 출력 Y의 첫 비트 ‘0’은 자릿수를 맞춰주는 용도로 사용되었을 뿐이므로 연산과정에서는 무시된다. 각각의 뺄셈은 2의 보수 방식으로 연산이 진행되었으며 4번째 비트가 ‘1’인 경우를 살펴보면 50~100ns 구간에서 출력 Y의 값 “1110”(첫 비트 0 제외)의 2의 보수값은 0001 + 0001 = 0010 (2), 300~350ns 구간에서 “1101”의 2의 보 경우, Y[4:0]는 “-----”가 출력되었음을 확인할 수 있다.(2) 조원2의 고찰4비트 입력 A와 B 그리고 2비트 입력 S를 받아 3가지 기능을 수행하여 출력 Y로 나타내는 ALU를 설계하였다. 4비트 입력 A, B에 대하여 입력 S값이 ‘00’일 경우 A와 B의 가산기능을 수행하며, S값이 ‘01’일 경우 입력 A에서 입력 B를 빼는 연산을 수행하고, S값이 ‘10’일 경우 입력 B에서 입력 A를 빼는 연산을 수행한다. 마지막으로 그 외의 경우인 S값이 ‘11’인 경우 출력으로 “-----”를 나타내는 ALU를 각각의 연산기능이 구성되어 있는 function과 procedure를 만들어 패키지를 사용하여 동작적 모델링 방식으로 코드를 작성하였다.입력 A와 B의 가산기능을 수행하는 function을 분석해 보겠다. 우선 function을 패키지 내 선언한 부분부터 보겠다. function 이름을 지정하고 input 변수(A_in, B_in)들을 std_logic_vector로 지정하였다. 이는 input이 4비트 입력을 받는 가산기능을 수행하여야 하기 때문에 [그림1]과 같이 선언하였다. 그 후 return값 또한 std_logic_vector로 설정하여 패키지내 function 선언을 하였다.[그림1] function과 procedure의 패키지 내 선언function의 몸체(body)를 살펴보겠다. 우선 문법에 따라 패키지 내 선언과 같이 적어준 후 variable Sum을 5비트 std_logic_vector로 선언하였다. 이 function은 4비트 입력 A_in과 B_in의 가산기능을 수행하기 때문에 Sum을 5비트로 설정하였다. 이제 가산 연산을 수행하도록 코드를 구성해 보았다. 4비트 입력의 연산에서 Carry의 발생으로 인해 5비트로 출력이 될 수 있다. 따라서 concatenation(&)를 사용하여 A_in과 B_in의 가장 왼쪽 비트에 ‘0’을 이어 붙여 덧셈 연산을 하도록 코드를 구성하였다. 여기서 덧셈 연산을 하기 위하여 iee는 4비트 입력I`0와I`1의 감산 기능을 수행하는 procedure를 분석해 보겠다. procedure도 function과 마찬가지로 패키지 내에 선언하여 사용하기 위하여 우선 패키지 내에 선언하였다. procedure는 function과 달리 output도 작성해야 하므로 [그림1]과 같이 Output Subtract를 std_logic_vector로 패키지 내 선언을 하였다.procedure의 몸체를 살펴 보겠다. 4비트 감산기능을 수행하여야 하는데 가장 왼쪽 비트 MSB가 부호비트로 동작하여 10진수로 +7 ~ -7 범위까지 표현이 가능한 경우로 생각하기로 하였다. 그러므로 각각의 입력에 대하여 concatenation(&)를 사용하여 MSB를‘0’으로 하여 5비트에서의 계산을 수행하도록 하는 것이 아니라 그저I`0`-`I`1을 하여 4비트 결과가 나오도록 하였다. 하지만 이 후 작성한 패키지를 사용할 메인 코드에서 출력이 5비트가 되어야 하므로 계산된 값에 ‘0’을 concatenation(&)을 해줌으로써 그저 5비트로서의 기능만을 하여 시뮬레이션을 보게 되면 가장 왼쪽 0은 무시하고 계산결과를 확인하기로 한다. 따라서 작성된 코드는 다음과 같다 Subtract := ‘0’ & (I`0`-`I`1)이제 패키지를 모두 작성 하였으므로 동작적 모델링 방식으로 설계한 메인 코드를 살펴보겠다. 작성된 패키지를 사용하기 위하여 use work.Pac_A6_JSW_CHS.all 코드로 패키지를 호출하여 위에서 작성한 패키지를 사용할 수 있도록 한다. 이후 입력 A, B를 std_logic_vector (3 downto 0)로 4비트 입력을 가지도록 하였으며 기능선택 비트 S를 std_logic_vector (1 downto 0)으로 하여 2비트 입력을 가지도록 코드를 구성하였다. 그 후 process문을 사용하여 동작적 모델링 VHDL 표현 방식으로 코드를 작성하였다. case문을 사용하여 각각의 기능 선택 비트의 경우에 따라 수행하는 연산을 출력 Y값으로 나다.
    공학/기술| 2018.01.10| 8페이지| 1,500원| 조회(192)
    미리보기
  • 논리회로설계실습-비교기-MUX-ALU-예비보고서
    논리회로설계 실험 예비보고서 #5실험 5. 조합 회로 설계-비교기_MUX_ALU실험 목표비교기와 MUX, DEMUX 그리고 ALU의 작동에 대하여 이해한다. 이를 바탕으로 입력 A의 전송, 입력 A와 B의 가산, 감산, 입력 A의 증가, 입력 A와 B의 AND, OR, XOR연산, 입력 A의 NOT 연산 기능을 가진 ALU를 Xilinx 프로그램을 사용하여 코드를 작성해 본다. 최종적으로 작성된 코드를 테스트 벤치 코드를 작성하여 시뮬레이션을 해 보아 코드가 정확히 작동하는지 확인해 본다.예비 이론비교기(Comparator)비교기란 두개의 입력을 서로 비교하여 그 결과를 알려주는 회로이다. 두개의 입력 A, B를 입력 받아 A가 B보다 큰 경우, A가 B보다 작은 경우, A와 B가 같은 경우를 세가지 출력으로 표현 할 수 있다. 1비트 비교기를 살펴보겠다. 1비트 비교기의 진리표를 작성해 본다.이와 같이 A와 B의 크기가 같은 경우 이에 대응하는 출력이 1값을 출력하도록 하였으며 위의 진리표에서는 Z로 표기 하였다. 마찬가지 A가 B보다 큰 경우, A가 B보다 작은 경우에 대하여 각각 X, Y의 값이 1을 출력하도록 작성되었다. 따라서 위의 진리표를 통해 입력과 출력에 관한 논리식을 구해보면 다음과 같다.더 많은 비트(n 비트)비교기의 원리를 알아보겠다. 먼저 두 수의 최상위 비트를 먼저 비교하여 크거나 작다면 차상위 비트를 비교 할 필요 없이 그 결과가 출력값이 된다. 하지만 두 수의 크기가 같다면 다음 단을 비교하여 똑같은 과정을 반복한다. 즉, 1비트 비교기를 최상위 비트부터 비교하며 두수의 크기가 다른 경우 그 결과값을 출력값으로 만든다. 4비트 비교기를 예로 들어 보겠다. 4비트 비교기의 구성도는 다음과 같다.여기서 입력과 출력의 진리표를 그려 분석해 보고 입력과 출력의 논리식을 구해 본다두 입력의 최상위 비트를 비교하였을 때 A의 최상위 비트가 B의 최상위 비트보다 클 경우 다음단의 비트 크기의 관계에 상관없이 X_out에 1값을 출력해야 한다. 마찬가지로 B의 최상위 비트가 A의 최상위 비트보다 클 경우 다음단의 비트 크기의 관계에 상관없이 Y_out에 1값을 출력해야 한다. 그러나 두 수의 최상위 비트의 크기가 같은 경우 다음단을 비교하여야 하는데 이는 입력 Z_in에 1값을 인가하여 다음단의 비트를 비교 하도록 한다. 따라서 다음과 같은 논리식이 나타난다.멀티플렉서(MUX: mulitplexer)멀티플렉서는 여러 개의 입력 신호 중 하나를 선택하여 단일 출력에 전달하여 주는 역할을 하는 회로이다. 개의 입력 중에서 하나를 선택하여 출력선으로 내보내기 위해서는 최고 n비트의 선택입력을 필요로 한다. 여기서 n개의 선택 입력 조합으로 입력을 선택하게 된다. MUX를 예로 들어 본다. MUX의 구성도는 다음과 같다.여기서 선택입력 S1, S0의 조합에 따라 출력 Y로 나타나는 입력이 결정 된다. 이를 위의 진리표로 표현하였으며 논리식으로 나타내 보면 다음과 같다.디멀티플렉서(DEMUX: demultiplexer)디멀티플렉서는 데이터 분배회로라고도 하며 한 개의 선으로부터 입수된 정보를 받아들임으로써 N개의 선택 입력에 의해 개의 가능한 출력선 중의 하나를 선택하여 정보를 전송하는 조합회로로 출력선의 선택은 선택 입력의 비트 조합에 의해 결정된다. 디멀티플렉서를 예로 들어본다. 디멀티플렉서의 구성도와 진리표는 다음과 같다.산술논리연산장치(ALU: Arithmetic logic unit)산술논리연산장치는 산술연산, 논리연산 및 시프트(shift)를 수행하는 중앙처리장치 내부의 회로 장치로, 독립적으로 데이터 처리를 수행하지 못하며 반드시 레지스터들과 조합하여 처리한다. 4비트 ALU를 예로 들어본다. 4비트 ALU의 구성도는 다음과 같다ALU는 MUX와 유사하게 두개의 입력(A, B)을 받아 선택입력(S0, S1)의 조합에 따라 두개의 입력의 선택입력 조합에 해당하는 산술논리연산을 수행한다.실험 내용실험1. 입력 A의 전송, 입력 A와 B의 가산, 감산, 입력 A의 증가, 입력 A와 B의 AND, OR, XOR연산, 입력 A의 NOT 연산 기능을 가진 ALU를 설계해본다.ALU 소스코드ALU 테스트 벤치 코드Waveform출처두산백과 doopedia ‘멀티플렉서[multiplexer]’ Retrieved April 10, 2017, from< Hyperlink "http://www.doopedia.co.kr/search/encyber/new_totalSearch.jsp" http://www.doopedia.co.kr/search/encyber/new_totalSearch.jsp>두산백과 doopedia ‘산술논리연산장치 ALU’ Retrieved April 10, 2017, from“05_조합회로+설계+-+비교기_+MUX_+ALU”, PDF, Retrieved April 10, 2017, from컴퓨터인터넷IT용어대사전 전산용어사전편찬위원회, 2011. 1. 20. Hyperlink "http://www.iljinsa.co.kr/" 일진사 “디멀티플렉서[demultiplexer]” Retrieved April 10, 2017, from< http://terms.naver.com/entry.nhn?docId=820497&cid=42344&categoryId=42344>고찰입력 A와 B에 대하여 A의 전송, A의 가감산, A의 증가, A와 B의 비트단위 AND, OR ,XOR연산 그리고 A의 NOT연산 등 8가지 기능을 가진 ALU를 설계해 보았다. Process문을 사용하여 동작적 모델링으로 설계해 보았다.먼저, 4비트 입력 A와 B 그리고 3비트 입력 S를 입력으로 설정 하였다. 그 후 출력으로 5비트 출력 Y를 설정하였다. ALU는 선택입력 S를 사용하여 입력 A와 B에 대하여 어떠한 기능을 수행 할 것인가를 결정한다. 이번 실험에서는 3비트 입력 S가 000이 입력되었을 경우 A의 전송 기능을 수행하고, S가 001이 입력 되었을 때 A와 B의 가산 기능을 수행한다. 또한 S가 010, 011, 100, 101, 110, 111이 입력되었을 때 각각 A와 B의 감산기능, A의 증가(A+1)가능, A와 B의 AND연산, A와 B의 OR연산, A와 B의 XOR연산, A의 NOT 연산 기능을 수행한다. 따라서 이러한 기능을 가진 ALU를 case문을 사용하여 작성해 보았다.S의 입력으로 000이 입력되었을 경우 A의 전송기능을 수행하므로 출력 Y에 A를 그대로 입력시킨다. 여기서 A는 4비트이지만 Y는 5비트이다. 그러므로 concatenation(&)를 사용하여 ‘0’을 A의 가장 왼쪽비트 옆에 이어 붙인다. 따라서 Y
    공학/기술| 2018.01.10| 6페이지| 1,000원| 조회(276)
    미리보기
  • 논리회로설계실습-FSM-예비보고서
    논리회로설계 실험 예비보고서 #9실험 9. 순차회로 설계 - FSM실험 목표FSM의 두 종류인 밀리 머신과 무어 머신에 대하여 이해하고 VHDL에서의 사용법을 이해한다. 하드웨어의 작동에서 나타나는 오류인 glitch와 chattering, bouncing에 대하여 알아본다. 이 후 무어 머신을 사용하여 커피 자판기 작동을 VHDL로 코드를 작성해 본 후 테스트 벤치 코드를 사용하여 소스코드가 정상적으로 작동하는지 확인해 본다.예비 이론FSM (Finite state machine)State machine은 순차회로를 제어하는 복잡한 회로를 말하는데 이는 출력이 현재의 입력 만으로 결정되는 것이 아니라 과거의 출력과 현재의 입력 상태 및 기억된 값에 따라 출력이 결정된다. 디지털 하드웨어를 설계할 때 제어신호를 생성하는 제어기는 FSM으로 규정되며, FSM에 대한 동작 표현은 state diagram 또는 ASM (Algorithm State Machine) chart등으로 표현된다. FSM을 디지털 하드웨어로 설계하는 경우에는 state 변수를 기억하는 레지스터 블록과 state 변수의 천이를 표현하는 함수와 출력 값을 결정하는 함수를 위한 조합 논리 회로의 영역으로 구성한다. State machine은 밀리 머신과 무어 머신으로 구분된다.밀리 머신 (Mealy machine)밀리 머신은 출력이 현재 상태와 현재 입력에 의존하는 상태 머신이다. 즉, 입력 신호의 조건에 따라 출력 신호를 여러 개 가질 수 있다. 따라서 밀리머신의 상태도와 상태표는 다음과 같은 형태로 나타난다.Present StateNext StateOutputYX = 0X = 1X = 0X = 1S0S0S100S1S0S201S2S0S101 밀리 머신 상태도와 상태표무어 머신 (Moore machine)무어 머신은 출력이 현재 상태에만 의존하는 상태 머신을 말한다. 한 개의 상태에 대해서는 오직 하나의 출력만 갖는다. 따라서 다음과 같은 형태의 상태도와 상태표를 가진다.Present StateNext StateOutputYw = 0w = 1AAB0BAC0CAC1 무어 머신 상태도와 상태표밀리 머신과 달리 입력의 노이즈가 출력에 전달되지 않으므로 밀리 머신보다 안정적인 형태이며 이는 VHDL의 process문 내의 case문을 이용하면 간단하게 설계할 수 있어 가장 많이 사용된다.GlitchGlitch는 시스템에서의 일시적 오류를 일컫는 말이며 논리 회로가 타이밍에서 벗어나는 것 등으로 본래 필요 없는 부분에 발생하는 펄스로서 컴퓨터의 오동작의 원인이 된다.ChatteringChattering 은 전자 회로 내의 스위치나 계전기 접점이 붙거나 떨어질 때 기계적인 진동에 의해 실제로는 짧은 시간 (10ms) 안에 접점이 붙었다가 떨어지는 현상을 말한다. Chattering키보드에서 chattering이 발생하게 되면 같은 문자가 여러 개 찍히는 현상을 예로 들 수 있다. Chattering을 제거하기 위하여 하드웨어 내부나 소프트웨어에 특수 장치가 첨가 된다. Chattering을 방지 하기 위한 방법은 다음과 같다.Hardware 내부 Low pass filter가장 쉽게 사용하는 하드웨어적 방법은 스위치 양단에 capacitor를 병렬로 연결하여 RC회로가 low pass filter의 역할을 하여 chattering을 제거 하는 방법이 있다. R과 C값의 선택이 중요한데 두 값의 곱이 작으면 Chattering이 완전히 제거 되지 않을 수 있으며 값이 크면 입력이 인가되는 시간이 늘어난다. 일반적으로 VCC = 5V인 경우 R=10kΩ, C=4.7μF 을 사용한다. Capacitor를 연결하여야 하기 때문에 소프트웨어적 방식에 비해 부피를 더 차지하게 되는 단점이 있다. 또한 capacitor를 스위치에 연결하면 진동으로 인한 전압 펄스를 완충하여 chattering을 방지 할 수 있다. Chattering 방지 회로 Low pass filterSR LatchChattering을 방지하기 위한 하드웨어적 방법으로 SR latch를 이용한 chattering 방지 회로를 사용하는 방법이 있다. SR latch를 이용한 chattering 방지 회로는 다음과 같다. SR latch를 이용한 chattering 방지 회로이는 다음 표와 같은 동작을 수행한다 SR latch를 사용한 chattering 방지 회로 동작스위치 상태Output QPin 1과 연결100Pin 1과 분리되며 Chattering 발생1X0Pin 5와 연결011Pin 5에서 Chattering 발생X11Pin 5에 안착011이와 같은 회로를 사용하면 스위치 값이 순간적으로 변하여도 VCC와 연결된 Pull-up 저항으로 인하여 출력상태가 유지 되게 된다. SR latch를 이용한 chattering 방지 회로는 NAND 게이트를 두개 사용해야 하므로 소프트웨어적 방식에 비해 부피를 더 차지하게 되는 단점이 있다.Debouncing소프트웨어에 의한 방법으로 입력값이 변화됨을 감지하여 그 시점의 시간을 측정하고 정해진 시간(Debounced delay)과 비교하여 chattering인지 아니면 정상 키 입력인지를 구분하여 처리하게 하는 방법이다. 즉, delay를 사용하여 chattering을 방지하는 방식이다. 디바운싱 코드는 다음과 같다. 디바운싱 코드실험 내용실험 1. 무어머신을 이용하여 주어진 상태 다이아그램을 사용하여 자판기를 설계해 본다.소스코드테스트 벤치 코드Wave form출처위키백과‘플립플롭’ Retrieved May 19, 2017, from< https://ko.wikipedia.org/wiki/%ED%94%8C%EB%A6%BD%ED%94%8C%EB%A1%AD >< Hyperlink "http://www.electronics-tutorials.ws/sequential/seq_5.html" http://www.electronics-tutorials.ws/sequential/seq_5.html>“09_순차회로+설계+-+FSM”, PDF, Retrieved May 19, 2017, from< Hyperlink "http://www.icampus.ac.kr/front/study/DataAction.do?method=view&lmsBdotSeq=2504115&lmsBlbdId=4%20" http://www.icampus.ac.kr/front/study/DataAction.do?method=view&lmsBdotSeq=2504115&lmsBlbdId=4 >무어 머신 상태도 사진 출처, Retrieved May 19, 2017, from< Hyperlink "http://blog.naver.com/shumin/220536143290" http://blog.naver.com/shumin/220536143290>컴퓨터인터넷IT용어대사전, 전산용어사전편찬위원회, 2011. 1. 20., 일진사 Retrieved May 19, 2017, from< http://terms.naver.com/entry.nhn?docId=824356&cid=50376&categoryId=50376>‘채터링 방지 회로’, Retrieved May 19, 2017, from< http://hiems-nguis.tistory.com/6>고찰주어진 무어 머신을 이용한 자판기의 상태 다이아그램과 상태 테이블을 사용하여 소스코드를 동작적 모델링 방식을 사용하여 설계해 보았다. 소스코드를 분석해 보겠다. 우선 if 문을 사용하여 CLK이 한번의 주기동안 작동한 경우에 대하여 상태가 바뀌므로 다음과 같이 코드를 구성하였다.무어 머신을 사용하였으므로 state에 대한 출력이 항상 정해져 있으므로 s1을 예로 들면 case s1에 대하여 위와 같이 출력 Y에 0을 입력 시켜 주었다. 또한 현재 state와 입력 X에 따른 다음 state를 나타내기 위하여 먼저 case문으로 현재 state를 나눈 후 또다시 if 문을 사용하여 입력 X에 따른 다음 state를 입력해 주어 위와 같은 코드로 구성하였다. 여기서 waveform에서 출력 Y만 보았을 때 정확한 state를 알아보기 힘들어 state_out 출력을 사용하여 각각의 state 번호에 맞는 숫자를 대응시켜 주었다. 마찬가지로 나머지 state에 대해서도 상태 테이블에 맞게 설계해 주었다.작성된 소스코드를 테스트 벤치 코드를 사용하여 시뮬레이션을 해 본 결과를 확인해 보았다. 상태 s1에서 시작하여 입력 X=00을 입력 받았을 때 상태 s1에서 자신의 상태를 그대로 유지하며 출력 Y=0을 나타낸다. 이 후 상태 s1에서 입력 X=01을 입력 받았을 때 상태 s1에서 상태 s3가 되며 출력 Y=0을 나타낸다. 상태 s3에서 또다시 입력 X=01을 입력 받는 상태이므로 상태 s4가 되며 출력 Y=1을 나타낸다. 상태 s4에 대하여 입력 X=00을 입력 받기 전까지 자신의 state를 유지 하며 X=00을 입력 받았을 때 상태 s1이 되고 출력 Y=0을 나타낸다. 따라서 시뮬레이션 결과를 상태 테이블과 대응시켜 보면 모두 일치한 결과가 나타난다.
    공학/기술| 2018.01.10| 6페이지| 1,000원| 조회(594)
    미리보기
  • OP-Amp를 이용한 오디오 증폭기 제작 및 구현 결과보고서 평가A좋아요
    OP-Amp를 이용한 오디오 증폭기 제작 및 구현실험목적OP-Amp를 이용하여 오디오 증폭기를 제작해본다. 제작하는 과정에서 가청주파수 범위내에서 증폭이 잘 되는지 확인해 보며 증폭이 깔끔하고 안전하게 출력되게 하는 회로내 소자들의 역할과 회로 구성에 대해 알아본다. 최종적으로 실험을 통하여 소리신호를 회로내에서 손상시키지 않고 깔끔하게 적당한 크기로 출력시키는 값을 측정하여 오디오 회로를 구성해본다.실험과정실험1. 입력신호 특성 파악OP-Amp를 이용하여 오디오 증폭기를 구성하는데 핸드폰에서 입력되는 신호 특성을 알아야한다. 따라서 핸드폰 자체의 소리 크기는 일정한 상태로 고정시킨 후 오실로스코프를 사용하여 핸드폰에서 출력되는 신호를 측정해 보았다.실험2. 회로 구성 후 커패시터를 달리하여 주파수 특성에 따른 출력 파형 관찰Power supply를 사용하여 전압을 걸어주는 동시에 OP-Amp에 입력 전압으로 들어가도록 전압분배법칙을 이용하여 설계하였으며, 위 회로에서는 입력된 전압 신호의 크기를 가변저항을 사용한 전압분배법칙으로 조절하여 드라이브 유닛(8Ω 헤드셋)에서 출력되는 소리의 크기를 조절하는 방식을 사용하였다. 또한 여러 커패시터, 저항들을 사용하여 회로에 사용된 주파수 필터와 Gain 값이 10인 회로를 구성하였다.좀더 구체적으로 회로 구성에 대해서 살펴 보겠다. 먼저 신호입력이 들어가는 스피커 잭 연결을 본다. 여기서 사용한 PJ-307 3.5Ф 잭은 3개의 그라운드 선과 2개의 신호선으로 구성되어 있다. 따라서 그라운드선(흰색, 검은색, 초록색 선)을 접지에 연결시킨 후 신호선(갈색, 파란색 선)을 합쳐 가변저항으로 입력이 들어가도록 구성하였다.그 후, 가변저항 연결을 살펴 보았다.가변저항의 한쪽 끝 다리는 입력 신호를 받고 반대쪽 다리 끝은 그라운드로 연결된다. 가변저항의 가운데 다리에 커패시터를 연결하여 구성한 회로이다. 이러한 방식으로 가변저항을 구성하게 되면 입력 신호 전압을 가변저항에서 전압 분배법칙으로 인한 OP-Amp로 전달되는 전되는 Gain을 고려하여 설정하였다. 저항의 크기는 을 사용하였다. 또한 15pF의 커패시터를 저항에 병렬로 연결시켜 고주파 필터를 구성하였다.Vcc를 살펴 보면 아래와 같다.사진의 브래드보드에서 39행에 빨간 전선이 Vcc전압원과 연결되어 있다. 그리고 51번 행의 노란 전선이 접지와 연결되어있다. Vcc전압원에서 들어온 DC전압이 같은 크기의 저항값을 가지는 저항에 전압을 걸게 된다. 여기서 저항사이의 빨간전선 즉, 전압분배법칙에 의한 Vcc 전압의 절반크기의 전압이 OP-Amp의 non inverting input과 연결되어 있다. 여기서 inverting input과 non inverting input은 가상쇼트 되어 있다고 보기 떄문에 input voltage 값으로 Vcc전압의 절반 크기의 전압이 걸리게 된다. 데이터시트에서 input voltage 값은 최대 15V까지 가능하므로 Vcc의 값은 30V이상이 되어서는 안된다. 또한 여기서 사용되는 커패시터는 DC전압을 일정하게 공급하는 것을 도와주는 역할을 한다.마지막으로 드라이브 유닛과 연결될 잭을 구성하였다.OP-Amp에서 증폭된 신호를 잭의 두 신호선과 연결시킨 것이다.위와 같은 회로를 구성한 후 함수 발생기를 사용하여 여러 신호들을 입력 하여 오실로스코프에 적절한 값이 나타나는지를 측정해 보았다. 여기서 함수발생기에서 사용한 전압 진폭은 50mV(Vpp=100mV)를 사용하였으며(휴대폰에서 출력되는 전압 크기), 주파수는 1Hz, 10Hz, 20Hz, 100Hz, 1kHz, 10kHz, 20kHz, 100kHz를 사용하였다. 위 회로에서 커패시터들의 값(C1, C2, C5)을 바꾸어 가며 주파수 특성에 따라 어떠한 출력이 나오는지를 오실로스코프를 사용하여 측정해 보았다. 이는 커패시터 C1, C2, C5만 주파수 영역에 영향을 미치기 때문이다. C3, C4 커패시터는 Vcc전압을 일정하게 OP-Amp로 전달해주는 역할을 한다.실험3 클리핑실험2에서 가청주파수 범위 내의 주파수만 가장 잘 통과시 이때 휴대폰에서 사용한 소리의 크기는 중간으로 고정시켜 놓은 상태로 측정하였다. 여기서 휴대폰에서 출력되는 파형을 알아 낼 수 있었고 Vpp(peak to peak voltage)의 값이 80mV 즉, 전압의 진폭 크기가 40mV가 나온 것을 확인 하였다.실험2 회로 구성 후 커패시터를 달리하여 주파수 특성에 따른 출력 파형 관찰오실로스코프에서 노란색으로 표시된 파형은 전압 수직층이 한칸 당 50mV이며 이는 휴대폰에서 출력된 파형 즉, 증폭기를 통해 들어가기 전의 파형이다. 파란색으로 표시된 파형은 OP-Amp의 스펙을 고려하여 증폭률을 10으로 설정하여 비교를 쉽게 하기 위하여 전압 수직층을 한칸 당 500mV로 설정하였다. 따라서 증폭이 적절하게 잘 되었다면 노란색 파형과 파란색 파형이 동일한 크기로 나타나야 정상이다.여기서 C1, C5 커패시터 용량을 달리하며 출력되는 파형을 측정해본 결과이다.-C1 커패시터 용량: 10μF ~ 220μF-C5 커패시터 용량: 1μF주파수 1kHz일 때주파수 10kHz 일 때C5의 커패시터 용량을 1μF을 사용하였을 때 주파수에 따라 나타난 파형을 정리한 것이다. C5 커패시터의 용량을 1μF 을 이용한 경우 가청주파수 범위의 1kHz, 10kHz에서 나타난 파형을 보면 출력 파형(파란색선)이 적절하게 출력 되지 못하였음을 알 수 있다. 이는 커패시터의 용량이 작아 커패시터C5가 고역 통과 필터로써의 역할을 하는데 차단 주파수가 너무 높아지게 되어 이러한 현상이 나타났다. 따라서 C5 커패시터의 용량이 1μF 인 경우에는 적절하지 않음을 알 수 있다.-C1 커패시터 용량: 10μF ~220μF-C5 커패시터 용량: 10μF주파수 1Hz 일 때주파수 10Hz 일 때주파수 20Hz 일 때주파수 100Hz 일 때주파수 1kHz 일 때주파수 10kHz 일 떄주파수 100kHz 일 때C5의 커패시터 용량을 10μF을 사용하였을 때 주파수에 따라 나타난 파형을 정리한 것이다. 여기서 또한 1μF의 커패시터 용량을 사용하였을 때와수 100Hz 일 때주파수 1kHz일 때주파수 5kHz 일 때주파수 10kHz 일 때주파수 20kHz 일 때주파수 100kHz 일 때C5의 커패시터 용량을 1000μF으로 바꾸어 출력 파형을 측정해본 결과이다. 이번의 경우에는 저주파 1~10Hz범위의 주파수는 적절한 크기로 차단됨을 볼 수 있었으며 가청주파수 범위인 20Hz~20kHz 범위의 주파수는 적절히 통과시키는 것을 확인 할 수 있었다. 따라서 고역 통과 필터 또는 저주파 차단의 역할을 하는데 가장 적합한 커패시터 C5의 용량은 1000μF 이다.C1의 커패시터 또한 고역 통과 필터 또는 저주파 차단의 역할을 하는 커패시터이다. 커패시턴스를 10μF~220μF 사이에서는 주파수에 따른 출력전압의 변화가 저주파 영역에서나 고주파 영역에서나 매우 비슷하게 출력되었다. 이는 차단 주파수를 통해 파악 할 수 있다. C5의 경우 드라이브 유닛에 연결되는 커패시터인데 드라이브 유닛의 저항은 8Ω이다. 따라서 차단주파수 이므로 커패시터의 변화에 따라 큰 영향을 받는데에 비해 C1의 경우에는 OP-Amp 내부 저항이나 R1에 의해 커패시터의 저주파 차단 능력이 10μF~220μF 사이에서는 차이가 크게 나지 않는다. 따라서 C1의 경우 오디오 장비에서는 전해 커패시터 보다 필름 커패시터가 음질이 좋으므로 C1의 커패시턴스는 10μF를 사용하였다.C2커패시터의 경우에는 저역 통과 필터로써의 역할을 한다. 이론상으로 15pF을 사용한 경우 차단 주파수가 555555Hz가 나온다. 하지만 위의 실험에서 알 수 있듯이 20kHz에서부터 이미 전압의 크기가 줄어듦을 확인해 볼 수 있었다. 이는 OP-Amp의 스펙에서 원인을 찾을 수 있었다.주파수 특성에 따라 증폭률을 나타낸 그래프 이다. 여기서 스펙에서 사용된 부하저항의 크기는 2kΩ이다. 하지만 실제 회로에서는 8Ω의 드라이브 유닛을 사용하였기 때문에 실제 특성은 실험적으로 알아내 본 결과 위의 주황색 선과 같이 나타난다. 즉, 부하저항의 크기가 매우 작아 C2커패시터가 전압 20V를 사용한 경우각각의 Vcc 전압에 따른 클리핑이 일어나는 전압의 크기를 측정해 보았다*오차율을 아래와 같이 정의한다.Vcc 크기(V)9V15V20V클리핑이 발생한 전압 크기(mV)300mV500mV700mV이론값(V)9V15V20V오차율(%)99.7%99.7%99.7%**이론상으로는 Vcc전압 만큼 증폭이 가능 해야 한다.이는 매우 큰 오차를 나타내는 것을 볼 수 있다. 이는 OP-Amp의 스펙에서 원인을 찾을 수 있다.Load Resistance 즉, 드라이브 유닛의 저항은 8Ω을 사용하였는데 위의 스펙을 살펴보면 부하저항의 크기가 0.1kΩ의 경우에 최대 출력 전압이 1V보다 낮음을 파악할 수 있다. 따라서 부하저항의 크기가 매우 작으므로 출력전압의 최대크기가 각각 300mV, 500mV, 700mV가 됨을 설명 할 수 있다.이러한 현상을 개선하기 위해서는 부하저항 즉, 드라이브 유닛의 저항이 큰 것을 사용하면 주파수 영역에 대한 증폭률 제한을 좀더 줄일 수 있으며, Vcc전압 크기에 따라서 클리핑이 일어나는 전압의 크기가 더욱 높아져 더 높은 출력을 낼 수 있을 것이다. 하지만 저항의 크기가 클수록 높은 출력을 낼 수 있는 것은 아닌데 이는 전류의 크기가 줄어들기 때문이다. 따라서 OP-Amp 내부 저항과 동일한 크기의 저항을 부하로 사용할 경우 가장 높은 출력을 낼 수 있다.결론OP-Amp를 이용하여 오디오 증폭기를 설계해 보았다. 먼저 가청주파수 범위를 통과시키게 하는 커패시터의 적절한 용량을 찾아보았으며 그 값은 C1=10μF, C2=15pF, C3=1000μF임을 얻었다. 이러한 값들로 최적의 회로를 구성하여 Vcc전압에 따른 클리핑이 발생하는 전압 크기를 측정해 보았다. 따라서 각각의 Vcc전압에 따라 입력 전압의 크기가 제한됨을 알 수 있었다. 이러한 특성들을 고려하여 회로를 구성하고 입력신호를 주어 오디오를 통해 출력되는 잡음이 거의 없고 매우 깔끔한 소리를 들을 수 있었다.출처반도체 오디오 앰프의 이해와 설계 제작< Hyperl로힐)
    공학/기술| 2018.01.10| 24페이지| 5,000원| 조회(932)
    미리보기
  • 논리회로설계실습-FSM-결과보고서
    논리회로설계 실험 결과보고서 #9실험 9. 순차회로 설계 - FSM실험목표스위치를 통한 하드웨어 작동에서의 채터링에 대하여 이해하고 이를 방지하기 위한 디바운싱 코드에 대하여 알아본다. 이를 사용하여 스텝 클록 펄스 발생회로를 이용한 링 카운터를 설계해 본다. 작성된 코드를 사용하여 RoV-Lab3000과 연결하여 하드웨어 작동을 해 본다. 최종적으로 작성된 코드와 하드웨어의 작동이 일치하는지 확인해 본다.실험 결과 스텝 클록(펄스) 발생 회로를 이용한 링 카운터를 설계해 본다.소스코드스텝 클록 사용 링카운터 작동 사진 고찰조원1의 고찰설계할 링카운터는 클락 펄스에 의해 자동으로 LED가 점등되는 것이 아닌 외부 스위치 입력에 의해 동작하는 것이다. 하드웨어 내부의 클럭을 입력으로 사용하지 않고 사람의 손으로 직접 외부 스위치를 눌러 입력을 인가하게 되면 이론에서 다룬 바와 같이 채터링 현상이 발생하기 때문에 이를 방지하기 위해 D-FF의 딜레이를 이용한 디바운싱 코드를 과 같이 작성하였다. 디바운싱 코드에 사용되는 분주된 클럭 Clk_div는 그 카운트 count_DFF의 크기를 조절함으로써 채터링 시간, 즉 딜레이 시간을 설정할 수 있으며 크기를 여러 번 변화시켜가며 동작상태를 확인한 결과, 이상적인 동작에 가장 가까웠던 수치인 12000으로 설정하였다. 디바운싱 소스 코드SW_in은 채터링을 제거하기 전의 스위치 입력을 나타내며 하드웨어 내부에서 입력 스위치는 Active LOW이기 때문에 스위치를 눌렀을 경우 SW_in은 ‘0’이 입력되고 D_FF와 clean_output에는 초기 D_FF(0)에 not SW_in을 할당하였기 때문에 ‘1’이 할당될 것이다. 또한 주어진 조건에서 스위치를 누르고 있는 상태에도 한 번 누르는 순간에만 동작해야 하므로 이를 구현하기 위해 디바운싱 코드에서 정의한 clean_output과 State 구문을 이용하여 여러 주기의 클락 펄스를 한 주기의 클락으로 변환시켜 최종적으로 채터링이 제거된 실제 입력으로 쓰이는 sw_out을 정의하였다.State S0과 S1은 각각 스위치를 누르지 않은 경우와 누른 경우를 나타낸다. 스위치를 누르지 않은 상태 S0에서 계속 스위치를 누르지 않으면 상태는 계속 S0 상태이며 최종 스위치 입력인 sw_out 역시 ‘0’이다. 이 상태에서 한 번 누르게 되면 else 구문에서 sw_out은 ‘1’이 되고 상태는 S1로 천이한다. S1 상태에서 if 구문은 눌렀다 떼는 경우로 state는 다시 S0로 천이하고 sw_out 역시 ‘0’이 된다. Else 구문은 누르고 있는 경우로 이 경우에는 상태는 S1로 변하지 않으며 sw_out은 ‘0’으로 변한다. 이는 누르는 ‘순간’에만 스위치 입력을‘1’로 할당하고, 누르고 ‘있는’ 경우는 스위치 입력을 ‘0’으로 할당해 누르는 시간 동안은 동작하지 않도록 하기 위함이다. 동작하는 ‘순간’이라 함은 그 시간이 앞서 디바운싱 코드에서 정의해 주었던 count_DFF의 크기에 따라 clean_output이 ‘1’을 얼만큼 유지하는 가에 의해 결정된다. 동작 소스 코드실제 회로 동작 소스 코드는 Reset을 누르면 최우측 LED가 점등되도록 Reset = ‘0’일 경우 X에 “00000001”값을 할당하였다. 채터링 제거 입력 sw_out이 ‘1’일 경우 즉 스위치를 눌렀을 경우는 X[7]을 나머지 X[6:0]의 오른쪽에 & 연산을 통해 연결하여 점등하는 LED가 왼쪽으로 한 칸씩 이동하도록 하였고 sw_out이 ‘0’인 경우, 즉 스위치를 누르지 않은 경우 X에 다시 X를 그대로 할당해 변화가 없도록 하였다. 소스 코드를 완료한 뒤 PIN Map을 사용하여 적절히 Pin을 할당하였고 하드웨어를 동작시킨 결과, Reset 버튼을 눌렀을 때 가장 오른쪽의 LED만 점등되며 스위치를 눌렀다 떼는 경우와 누르고 있는 경우 모두에 누르는 순간에만 LED가 왼쪽으로 한 칸씩 점등하는 것을 확인하였다조원2의 고찰스텝 클록 발생 회로를 사용하여 링 카운터를 설계해 보았다. 스텝 클록 발생 회로를 사용한 링 카운터는 스위치를 누른 시점에 대하여 한번씩 작동하도록 설계하여야 한다. 여기서 중요한 것은 스위치를 누른 직후 링 카운터가 한번 작동해야 하며, 지속적으로 누른 상태를 유지 할 경우에 대하여 링 카운터가 작동해서는 안된다. 이와 같은 작동을 하는 스텝 클록 발생 회로를 사용한 링 카운터 소스코드를 분석해 보겠다.스위치를 눌렀을 때 발생하는 채터링을 방지하기 위한 디바운싱 코드를 작성하였다. 디바운싱 코드를 작성하기 위하여 먼저 클록 분주기를 적절한 값으로 설정해 주어야 한다. 디바운싱 코드가 delay를 사용하여 채터링을 방지하기 때문에 위 코드에서 Count_DFF의 크기로 적당한 값을 입력 시켜 주어야한다. 설정한 Count_DFF에 대한 클록 분주기 공식은 다음과 같다.이와 같은 공식을 통하여 채터링을 방지 하기 위한 적절한 분주기를 적용한 클록 주파수를 찾기 힘들어 코드를 완성한 후 실험적으로 변경해 가며 스위치를 작동 시켰을 때 두 번 이상 작동되는 현상을 방지하였다. 또한 Count_DFF가 너무 크게 설정 되면 스위치를 눌렀을 때 눈에 보일 정도의 delay가 발생 함을 볼 수 있었다. 이와 같이 실험적으로 얻어낸 Count_DFF 값은 12000을 사용하였으며 공식에 적용시켜 보면 약 166.7Hz가 얻어진다.분주기가 설정된 클록 clk_div를 사용하여 디바운싱 코드에 적용 시켜보았다. 우선 스위치는 눌러진 상태가 Low 상태이며 스위치가 작동하지 않는 경우가 High 상태임을 유의한다. 8비트 크기를 가지는 D_FF를 사용하여 채터링이 발생 하지 않고 스위치가 눌러진 경우(sw_in = 0) 모든 D_FF 비트에 1(not sw_in)이 입력 된다. 이 후 다음과 같은 코드를 사용하게 되면 clean_output에 1이 입력된다.스위치를 눌렀을 때 채터링이 발생한 경우에 대하여 D_FF의 일부 비트에만 1이 입력되지만 or 게이트로 연결되어 있어 결국 스위치를 누른 모든 경우에 대하여 clean_output에 1이 입력된다. 스위치를 누른 상태에서 채터링이 발생 하지 않고 스위치를 Off시키면 모든 D_FF에 0이 입력 되어 clean_output에 0이 입력된다. 스위치를 떼는 과정에서 채터링이 발생하게 되면 디바운싱 코드가 없을 경우 여러 번 움직이게 되는 현상이 발생한다. 하지만 디바운싱 코드의 delay로 인하여 스위치를 떼고 난 이 후 7번의 clk_div 주기 동안은 D_FF의 일부 비트에 1이 입력된 상태이므로 clean_output에 여전히 1이 입력된 상태로 남아 있게 되어 채터링이 발생하여도 clean_output의 값이 변하지 않아 채터링으로 인한 다중작동을 방지 할 수 있다.디바운싱 코드를 통해 출력된 clean_output값을 사용하여 스텝 클럭 발생 코드를 구성하였다. 또한 스위치를 누르지 않은 상태(S0), 스위치를 누른 상태(S1)의 두가지 State로 구성된 mealy machine을 사용하여 스텝 클럭 발생 코드를 구성하였다. S0 state인 경우에 mealy machine 입력 clean_output이 0일때와 아닌 경우로 나누었다. clean_output이 0인 경우는 스위치가 떨어졌다는 입력을 가진 mealy machine 입력으로 state가 S0로 변하지 않도록 하였다. clean_output이 1의 값을 가지는 경우, 즉 스위치가 눌러진 상태에 대하여 state S0으로 이동하며 sw_out의 값으로 1을 출력한다. State S1에 대하여 clean_output이 0인 경우(스위치를 뗀 경우) state S0으로 이동하며 sw_out의 값으로 0을 출력한다. clean_output이 1인 경우(스위치가 계속 눌러진 상태)에 대하여 state S1 상태를 유지하며 sw_out의 값으로 0을 출력한다. 이러한 작동을 하는 mealy machine의 상태도와 상태표는 다음과 같다.clean_output/sw_out 스텝클럭 발생 회로의 상태표Present StateNext StateOutput (sw_out)clean_output = 0clean_output = 1clean_output = 0clean_output = 1S0S0S101S1S0S100하드웨어 동작으로 좀더 설명해 보면 스위치를 누르지 않은 상태는 출력 sw_out으로 0을 출력하고 스위치를 누른 순간에 대하여 sw_out으로 1을 출력하고 이후 스위치를 누른 상태를 유지 하면 sw_out으로 0을 출력하게 된다. 이후 스위치를 떼면 마찬가지 sw_out으로 0을 출력하기 때문에 스위치를 누른 순간에 대해서만 sw_out로 1이 출력되어 이후 링카운터를 설계할 때 누른 순간에 대해서 링 카운터가 한번씩 작동하게 된다.이와 같이 input sw_in에 대하여 얻어진 출력 sw_out을 이용하여 링 카운터를 설계하였다. if문을 사용하여 Reset 버튼이 눌러진 경우(Reset=0, Active ‘Low’)에 대하여 8비트 signal X값에 “00000001”을 입력 시킨다. 따라서 하드웨어 동작에 대하여 Reset 버튼을 눌렀을 경우 위의 실험 결과와 같이 가장 오른쪽 LED등이 점등 된다. 그 외의 경우 클록이 발생할 때에 대하여 if문을 사용하여 sw_out=1(스위치가 눌러진 순간)일 경우 링 카운터로써의 동작을 하도록 설계하였다. 링 카운터 코드를 분석해 보겠다. Sw_out=1되면 초기에 X값에 “00000001”이 입력되어 있는 상태에서 가장 왼쪽 비트를 그대로 가장 오른쪽 비트 옆에 Concatenation(&)을 사용하여 이어 붙여 “00000010”이 되도록 한다. 마찬가지로 이를 반복하면 스위치를 누른 직 후 마다 “00000100”, “00001000”, ···, “10000000”이 입력된다. “10000000”이 입력 되었을 때 다시 가장 왼쪽 비트를 오른쪽에 이어 붙여 “00000001”의 상태로 돌아온다. 이 후 sw_out=0 (스위치가 떼진 경우 또는 스위치를 지속적으로 누르고 있는경우)일 때 상태를 유지해야 하므로 X
    공학/기술| 2018.01.10| 6페이지| 1,500원| 조회(228)
    미리보기
전체보기
받은후기 3
3개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    3
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 04월 20일 월요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
1:17 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감