VHDL 응용 Lecture #10.

Slides:



Advertisements
Similar presentations
내 마음의 버 스 이천신하교회 청년부. 이름 : 한상훈 나이 : 30 살 종교 : 기독교 ( 모태신앙 ) 생활신조 : 인생은 한방 ! 로또나 사자 이상형 : 청순 가련한 모태미녀 특이사항 : 걸그룹 노래에 환장함 식스팩을 갖기엔 슬픈 몸을 타고 남.
Advertisements

독서골든벨 2009 학년도 6 학년 1 학기 6-10 반. 1. 이야기 삼국유사 정대한 원효대사는 수행을 위해 떠나던 중 피곤하여 숲 속에서 잠이 들었다. 잠결에 너무 목이 마른 나머지 어디에 담겨있는 물을 맛있게 마셨나요 ?
두 손 들고 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 두 손 들고 찬양합니다 두 손 들고 찬양합니다 다시 오실 왕 여호와께 다시 오실 왕 여호와께 오직 주만이 나를 다스리네 오직 주만이 나를 다스리네 나 주님만을.
1 8 장 대형 순차회로 문제의 해법 1) 시프트 레지스터 2) 카운터 3)ASM 도를 이용한 설계 4)One Hot encoding 5) 복잡한 예제.
지금은 기도 하는 시간입니다 1. 송구영신예배를 위해서 2. ‘크리스마스 이브’ 행사를 준비하는 교육 기관을 위하여

전남행복수업 design 독서ㆍ토론 수업 지원 자료 활용 목포유달초등학교 김미향.
전남행복수업 design, 독서·토론수업 연구의 개요를 말씀드리겠습니다..
1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
Introduction 2007년 2학기.
VHDL Package & Subprogram
Copyright SangSangDom, All Rights Reserved.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
Chapter 7. Flip-Flops and Other Multivibrators
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
현대사회의 여성문제와 여성복지 3조 권경욱 강향원 황대인 변갑수 박창욱 김지현.
Design of Digital Clock (디지털 시계의 설계)
고교평준화의 득과 실 김영주 이지영 최윤영.
미디어시스템프로젝트1 (졸업프로젝트).
Computer System Architecture
VHDL을 이용한 통신 칩 설계 -DS/SS MODEM 설계를 중심으로-
VHDL, FPGA를 이용한 소리인식 스위치 (Matched Filter 사용)
순차로직 개요.
32비트 캐리 예측 덧셈기(CLA) RCA(Ripple Carry Adder)
1. VHDL과 합성 설계 1.1 HDL: Hardware Description Language 집적회로의 설계환경의 변화
가산기 설계.
VHDL과 디지털회로 설계 전남대학교 전자공학과 김 영 철.
Multiplexer 설계.
VHDL의 기본 Lecture #5.
Verilog HDL 이론.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
VHDL의 개요 김 인 수.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.
VHDL Package and Sub program
Stop Watch 구현 Lecture #12.
Chap. 18 라인 트레이서의 설계 라인 트레이서 바닥에 그려진 선을 따라가는 로봇을 의미 라인 트레이서 구성도
2-1. PLC I/O 할당 입.출력 기기와 외부기기와의 접속
순차회로 모델링 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 디지털 설계
FSM 설계.
시스템 분석 및 설계.
Flip-Flop 설계.
2010년 직원연수 자료 제1차 : 4월 16일 ~ 17일 제2차 : 4월 23일 ~ 24일
Section 02 덧셈 회로 BCD 덧셈 회로 BCD 코드에서 십진수 (16)BCD =
오브젝트 하드웨어 기술 언어 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Programmable Logic Device
VHDL Mealy and Moore model
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
VHDL.
매스커뮤니케이션 신문 목원대학교 서 진 희.
VHDL 디지털시계 2.
가산기 설계.
디 지 털 공 학 한국폴리텍V대학.
디지털 시계 설계 장성락 전영진 임종엽 전보현 이형준.
LCD.
공학설계입문 블로그 제작 목차 전기공학과 정지용.
강의 교안 학년-학기 과목명 의료사회사업론 주차명 7주차. 의료사회복지사의 역할 담당교수 신 상 수.
주간 콜센터 운영현황 보고 주간 인입콜 동향 주간 주요 Focus 고객민원 (콜+게시판) 요청사항 금주 진행 사항 차주 계획
논리회로 설계실험 ICE ICE 담당교수 : 김 인 수.
실습 9 / 부울식 구현(결합 법칙을 이용한 논리회로 구현)
시스템 분석 및 설계 2007학년도 2학기 멀티미디어공학과 2학년 대상 담당교수 박태희
나-는 믿음으로 주 얼굴 보리니- 아침에 깰 때에 주형상에 만족하리 나주님 닮기 원하네 믿음으로 주얼굴 보리라 -
Presentation transcript:

VHDL 응용 Lecture #10

학습목표 타이밍 분석(Timing Analysis)에서는 기본적인 타이밍 특성인 Propagation Delay, Setup Time, Hold Time의 개념을 이해 D 플립 플롭, Shift Register, Counter 그리고 State Machine 의 타이밍 그림을 통해 기본적인 타이밍 특성을 깊이 이해 타이밍 설계(Timing Design)에서는 특정한 타이밍 그림이 주어졌을 때, 주어진 타이밍 그림으로부터 논리회로를 설계하는 방법을 State Machine, Shift Register, Counter 등을 응용하여 설계하는 방식을 습득 다양한 디바이스의 데이터북상에 표현되어있는 타이밍 그림으로부터 디바이스를 제어하기 위한 심화된 지식을 배양

강의순서 타이밍 분석(Timing Analysis) 타이밍 설계(Timing Design)

Timing Analysis - 강의순서 D Flipflop의 Timing Analysis Propagation Delay Setup Time Hold Time Shift Register의 Timing Analysis Counter의 Timing Analysis State Machine의 Timing Analysis

Timing Analysis - FlipFlop library ieee; use ieee.std_logic_1164.all; entity dff_1 is port( d, clk, nclr : in std_logic; q : out std_logic ); end dff_1 ; architecture a of dff_1 is begin process(nclr,clk) if( nclr='0') then q <='0'; elsif(clk'event and clk='1') then q <= d; end if; end process; end a; D F/F을 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의 개념을 살펴보자.

Timing Analysis - FlipFlop 시뮬레이션 전 시뮬레이션 결과

Timing Analysis – Propagation Delay Clk의 상승 edge중의 하나인 500ns에서 보면 입력신호는 1로 안정되어있다.그러므로 출력 q는 clk의 1주기 동안 1을 출력한다. 확대 4ns 4ns 확대 Clk의 상승 edge를 기준으로 약 4ns 의 전파지연이 발생함 Clk의 상승 edge를 기준으로 약 4ns 의 전파지연이 발생함

Timing Analysis – Setup Time(1) Clk의 상승 edge보다 입력신호 d 가 앞서 도달했다고 해도 정해진 시간(Setup time)보다 길지 못하면 D값을 출력으로 내보내지 못함. 확대 1.1ns 1ns는 setup time 보다 작은 값이므로 출력 y는 그전의 상태인 0을 내보내고있음.

Timing Analysis – Setup Time(2) 확대 2.1ns Clk의 상승 edge를 기준으로 입력신호 d의 1값이 2.1ns는 앞서 발생되었다. 출력 y가 1을 내보내고있는 것으로 보아 setup time 을 만족.

Timing Analysis – Hold Time 입력신호 d 가 클럭의 상승 edge를 기준으로 Setup time과 Hold time을 만족하므로 출력이 입력 d의 값인 1을 출력함. -1.7ns Clk의 상승 edge를 기준으로 입력신호 d의 1값이 100ns는 앞서 발생되었다. 하지만 입력 d값이 Clk의 상승 edge를 기준으로 1로 유지되어야 하는 시간(hold time)보다 짧으므로 출력 y가 입력 d값인 ‘1’을 보내지 않음. 1.9ns

Timing Analysis - Shift Register library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shiftreg is port( d, clk,nclr : in std_logic; qa,qb : out std_logic ); end shiftreg; architecture a of shiftreg is signal tqa,tqb : std_logic; begin process(nclr,clk) if( nclr='0') then tqa <='0'; tqb <='0'; elsif(clk'event and clk='1') then tqa <= d; tqb <= tqa; end if; end process; qa<=tqa; qb<=tqb; end a; Shift Register를 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의 개념을 좀더 깊게 살펴보자.

Timing Analysis - Shift Register 1. 아래와 같은 입력신호가 주어졌을 때 예상되는 출력 qa의 파형은? F/F의 출력 Waveform은 비동기 신호인 nclr이 0인 경우만을 제외하면 항상 Clk의 Rising Edge를 기준으로 입력 D를 고려하면 된다. D F/F의 시뮬레이션 파형과 Propagation Delay, Setup Time, Hold Time 의 개념을 완전히 이해하고 있으면 거의 모든 Timing Diagram은 그릴 수 있다.

Timing Analysis - Shift Register 2. Clk의 Rising Edge 300ns, 500ns, 700ns 지점에서 보면 입력신호 D가 모두 Setup Time과 Hold Time을 만족하므로 당연히 아래와 같이 출력 qa의 파형이 나온다. 3. 두 번째 F/F은 입력신호로 qa를 이용하는데, 예상되는 qb의 출력파형은 ?

Timing Analysis - Shift Register 500ns, 700ns, 900ns에서 모두 Setup time과 Hold time을 만족 확대 확대 확대 4ns 4ns

Timing Analysis - Counter : 74161 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt161_4bits is port( d3,d2,d1,d0 : in std_logic; nld,ent,enp : in std_logic; clk,nclr : in std_logic; q3,q2,q1,q0 : out std_logic; rco : out std_logic); end cnt161_4bits; architecture a of cnt161_4bits is signal q : std_logic_vector( 3 downto 0); begin process(nclr,clk) variable d : std_logic_vector(3 downto 0); d := d3&d2&d1&d0; if( nclr='0') then q <="0000"; elsif(clk'event and clk='1') then if(nld='0') then q <= d; elsif(ent='1' and enp='1') then q <= q+'1'; end if; end process; q3<=q(3); q2<=q(2); q1<=q(1); q0<=q(0); rco <= ent and q(3) and q(2) and q(1) and q(0); end a; Counter를 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의 개념을 좀더 깊게 살펴보자.

Timing Analysis - Counter : 74161 1.아래와 같은 입력신호가 주어졌을 때 예상되는 카운터의 출력파형은? D F/F의 시뮬레이션 파형과 Propagation Delay, Setup time, Hold time 의 개념을 완전히 이해하고 있으면 거의 모든 Timing Diagram은 그릴 수 있다. nclr의 우선순위가 가장 높음 : nclr=0이면 출력 q(3:0)=0000이 됨. nclr=1일때 모든 동작은 clk의 rising edge에 동기되어 처리됨. Nld=0이면 외부의 입력 d(3:0)이 출력 q(3:0)으로 출력됨. nld=1이면 ent,enp가 모두 1일 때만 출력 q(3:0)의 값이 하나씩 증가한다. Rco는 q(3:0)=15가 되면 1이 된다.

Timing Analysis - Counter : 74161 2.5us의 cllk rising edge에서 nld=0 이므로 외부의 입력 d(3:0)=12값이 출력 q(3:0)으로 출력됨. 1.5us, 1.9us의 cllk rising edge에서 각각 enp=0, ent=0 이므로 카운터 증가안함 카운터출력 q(3:0)은 15다음 0으로 변화됨. 또한 rco는 a15일 때 1이 됨.

Timing Analysis - Counter : 74161 F/F 과 마찬가지로 Clk의 상승 edge를 기준으로 출력 q[3:0]의 값의 변화가 약 4ns 의 전파지연 후에 발생함 4ns 4ns

Timing Analysis - Modulo 15 counter library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mod15cnt is port( clk,nclr : in std_logic; q3,q2,q1,q0 : out std_logic); end mod15cnt; architecture a of mod15cnt is signal q : std_logic_vector( 3 downto 0); begin process(nclr,clk) if( nclr='0') then q <="0000"; elsif(clk'event and clk='1') then if( q="1110") then q<="0000"; else q <= q+'1'; end if; end process; q3<=q(3); q2<=q(2); q1<=q(1); q0<=q(0); end a; Counter를 시뮬레이션 해보고 파형으로부터 Propagation Delay, Setup time, Hold time 의 개념을 좀더 깊게 살펴보자.

Timing Analysis - Modulo 15 counter 1. 아래와 같은 입력신호가 주어졌을 때 예상되는 카운터의 출력파형은? q는 출력 q3,q2,q1,q0를 묶어 논 4bits 신호임.

Timing Analysis - Modulo 15 counter 아래의 결과 파형이 얻어진다. 파형에서 보면 출력 q의 값이 0-14가 반복되는 카운터임을 알 수 있다. 이 부분을 확대해 보면 다음 쪽과 같음.

Timing Analysis - Modulo 15 counter 4ns 3.1us에서 보면 Q의 값이 14(=1110)임을 알 수 있다.그러므로 3.1us의 clk rising edge가 지나고 약 4ns후에 Q값이 0(=0000)으로 변함을 알 수 있다.

Timing Analysis – State Machine 1. 아래와 같은 상태도를 갖는 mealy machine에 대해 입력이 아래와 같이 주어졌을 때 예상되는 출력 y와 state의 출력파형은? 입력신호 : WindowAct S0 S1 0/00 1/00 0/01 1/10 WindowAct / RiseShot, FallShot 입력 / 출력1, 출력2 상태출력 출력신호

Timing Analysis – State Machine 상태는 초기에 s0로 있다가 입력신호 WindowAct가 0에서 1로 변하고 clk의 첫번째 rising edge에서 s0->s1으로 변하게 됨. S1->s0의 변환시기는 입력신호 WindowAct가 1에서 0으로 변하고 clk의 첫번째 rising edge임. 상태가 s1이면서 입력신호가 1->0으로 변하는 순간 출력 FallShot는 1로 변함. 파형에서 보면 S0=0, s1=1임. 상태가 s0이면서 입력신호가 0->1로 변하는 순간 출력 RisieShot는 1로 변함.

Timing Analysis – State Machine 4ns 500ns의 clk rising edge를 기준으로 보면 상태출력 state는 502ns에서 변화됨을 알 수 있음. 500ns의 clk rising edge를 기준으로 보면 출력 RiseShot는 502ns에서 변화되는 State보다 더 뒤에 변화 됨을 알 수 있음.

Timing Analysis – State Machine 1. 아래와 같은 상태도를 가지는 moore machine에 대한 입력이 아래와 같이 주어졌을 때 예상되는 출력 y와 state의 출력파형은? S0 000 S1 010 1 S2 101 출력신호 : y – 3bits신호 입력신호 : WindowAct 상태출력

Timing Analysis – State Machine Clk의 rising edge에서 입력신호 WindowAct가 1이며 상태가 s0->s1->s2->s0…로 반복해서 변화되므로 state변화를 예상할 수 있다. 입력신호 WindowAct=0이면 상태의 변화가 없음. 위의 파형에서 보면 실제 state의 값은 S0=00, S1=10, S2=01로 나타나고있다. 출력 y도 상태도와 같은 순서로 출력됨을 알 수 있다.

Timing Design - 강의순서 State Machine 응용 Shift Register 응용 Counter 응용 1. 주어진 타이밍도로부터 회로를 설계하는 방법을 다양한 형태의 접근 을 통해 습득한다. 2. 각종 디바이스의 데이터 북상에 나타나는 타이밍 도의 이해를 위한 더욱 심화된 지식을 배양한다.

Timing Design – State Machine Application 해석 : WindowAct신호가 0에서 1로 변하는 순간에 RiseShot을 1로 만들고, WindowAct신호가 0에서 1로 변하는 순간에 FallShot을 1로 만들어야 함.

Timing Design – State Machine Application 2. 아래와 같은 상태도가 그려지는가?  VHDL 파일은 다음 쪽을 참조. S0 S1 0/00 1/00 0/01 1/10 WindowAct / RiseShot, FallShot 입력 / 출력1, 출력2

Timing Design – State Machine Application Library ieee; Use ieee.std_logic_1164.all; ENTITY RiseFallShot IS PORT( clk : IN STD_LOGIC; reset : IN STD_LOGIC; WindowAct : IN STD_LOGIC; RiseShot, FallShot : OUT STD_LOGIC); END RiseFallShot; ARCHITECTURE a OF RiseFallShot IS TYPE STATE_TYPE IS (s0, s1); SIGNAL state: STATE_TYPE; BEGIN PROCESS (clk, reset) IF reset = '0' THEN state <= s0; ELSIF clk'EVENT AND clk = '1' THEN CASE state IS WHEN s0 => IF WindowAct='1' THEN state <= s1; ELSE state <= s0; END IF; WHEN others => IF WindowAct='0' THEN state <= s0; ELSE state <= s1; END CASE; END PROCESS; 상태도에서 입력에 따른 상태의 변화만을 기술 S0 S1 0/00 1/00 0/01 1/10

Timing Design – State Machine Application PROCESS(state, WindowAct) BEGIN if( state= s0 and WindowAct='1') then RiseShot <='1'; else RiseShot <='0'; end if; if( state= s1 and WindowAct='0') then FallShot <='1'; FallShot <='0'; END PROCESS; END a; 상태도에서 입력에 따른 출력의 변화만을 기술 S0 S1 0/00 1/00 0/01 1/10

Timing Design – State Machine Application 3. 상태도를 이용하지 않는 다른 방법은 ?  Timing 만을 고려한 설계. Q는 WindowAct를 D F/F으로 통과시킨 출력 1 3 1,3 에서 RiseShot= WindowAct and not Q 2 4 2,4 에서 FallShot= not WindowAct and Q

Timing Design – State Machine Application  VHDL 파일은 다음 쪽에 있음. Q는 WindowAct를 D F/F으로 통과시킨 출력 WindowAct and not Q not Q not WindowAct Not WindowAct and Q

Timing Design – State Machine Application library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity RiseFallShot_time is port( WindowAct : in std_logic; clk,nclr : in std_logic; RiseShot,FallShot : out std_logic ); end RiseFallShot_time; architecture a of RiseFallShot_time is signal q : std_logic; signal RisingShotPules : std_logic; begin -- shift register 1bits process(nclr,clk) if( nclr='0') then q <='0'; elsif(clk'event and clk='1') then q <= WindowAct; end if; end process; -- rising shot pulse gen. RiseShot <= WindowAct and not q; FallShot <= not WindowAct and q; end a; 같은 회로 같은 회로

Timing Design – Shift Register Application 입력신호 : reset, clk, WindowAct 출력신호 : y0, y1, y2, y3, y4, y5, y6

Timing Design – Shift Register Application 1. 먼저 아래의 회로를 만들어보자. 입력신호 : reset, clk, WindowAct 출력신호 : y0 어떤 방식으로 설계해야 하는가?  1차적으로 생각할 수 있는 방법은 Shift Register를 이용하는 방법

Timing Design – Shift Register Application 출력신호 y0는 Q1가 1이되 는 부분과 Q2가 0이 되는 700-900ns부분에서 1이 된다. Y0=Q1 and not Q2 Y0 = Q1 and not Q2 그림과 같은 Shift Register를 사용하게 되면 Q0, Q1, Q2의 타이밍을 예상할 수 있다.

Timing Design – Shift Register Application 2. 이번에는 y1을 만들어보자.

Timing Design – Shift Register Application Y0를 clk의 falling edge를 이용하여 시프트하면 반클럭 시프트된Y1을 만들 수 있다.

Timing Design – Shift Register Application 3. 이번에는 y2을 만들어보자.

Timing Design – Shift Register Application Y2는 Y0와 Y1을 OR 한 것임을 알 수 있다. Y2 = Y0 or Y1 Y2 = Y0 or Y1

Timing Design – Shift Register Application 4. 이번에는 y3을 만들어보자.

Timing Design – Shift Register Application 11 bits Shift Register Y3는 11개의 shift register중에서 Q9가 1이면 Q10이 0인 구간에 1이 출력되는 신호. 회로는 다음 쪽 참조

Timing Design – Shift Register Application Y3는 11개의 shift register중에서 Q10과 Q9를 이용한 신호임. Y3 = Q9 and not Q10

Timing Design – Shift Register Application 5. 이번에는 y4을 만들어보자.

Timing Design – Shift Register Application Y4는 Y1와 Y3을 OR 한 것임을 알 수 있다. Y4 = Y1 or Y3

Timing Design – Shift Register Application 6. 이번에는 y5을 만들어보자.

Timing Design – Shift Register Application Y5는 Q2가 1이며 Q10이 0인 구간에 1을 출력.

Timing Design – Shift Register Application 7. 이번에는 y6을 만들어보자.

Timing Design – Shift Register Application Y6p는 Q1이 1이며 Q9가 0인 구간에 1을 출력. Y6는 Y6p를 Clk의 Falling Edge를 이용하여 반 클럭 밀어준 신호임.

Timing Design – Shift Register Application library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shift_app2 is port( clk,nclr,WindowAct : in std_logic; y : buffer std_logic_vector(0 to 6)); end shift_app2; architecture a of shift_app2 is signal q : std_logic_vector(0 to 10); signal y6p : std_logic; begin ShiftRegster : process(nclr,clk) if( nclr='0') then q<="00000000000"; elsif(clk'event and clk='1') then q(0)<= WindowAct; for i in 0 to 9 loop q(i+1) <= q(i); end loop; end if; end process; y(0) <= q(1) and not q(2); 동일회로 동일회로

Timing Design – Shift Register Application process(nclr,clk) begin if( nclr='0') then y(1)<='0'; elsif(clk'event and clk='0') then y(1)<=y(0); end if; end process; y(2) <= y(0) or y(1); y(3) <= q(9) and not q(10); y(4) <= y(1) or y(3); y(5) <= q(2) and not q(10); y6p <= q(1) and not q(9); y(6)<='0'; y(6)<=y6p; end a; 동일회로 동일회로 동일회로

Timing Design – Counter Application 아래와 같은 Timing 입출력 파형을 갖는 회로를 Shift Register가 아닌 다른 방식(Counter응용)으로 설계해보자. 입력신호 : reset, clk, WindowAct 출력신호 : y0, y1, y2, y3, y4, y5, y6

Timing Design – Counter Application 1. 입력신호 들로부터 cnt[3..0]을 만들 수 있는가?

Timing Design – Counter Application 단 이 카운터는 WindowAct가 1일 때만 증가되며, WindowAct가 0일 때는 0으로 된다. Cnt[3..0]을 사용 process(nclr,clk) begin if( nclr='0') then cnt<="0000"; elsif(clk'event and clk='1') then if(WindowAct='0') then else cnt <= cnt+1; end if; end process; library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt_app2 is port( clk,nclr,WindowAct : in std_logic; y : buffer std_logic_vector(0 to 6)); end cnt_app2; architecture a of cnt_app2 is signal cnt : std_logic_vector(3 downto 0); begin Cnt 회로

Timing Design – Counter Application 2. 입력신호 들과 cnt[3..0]로 부터 y0, y3을 만들 수 있는가?

Timing Design – Counter Application Y0발생부 process(cnt) begin if( cnt=2) then y(0)<='1'; else y(0)<='0'; end if; end process; process(cnt) begin if( cnt=10) then y(3)<='1'; else y(3)<='0'; end if; end process; Y3발생부

Timing Design – Counter Application 3. y1,y2,y4의 발생은?

Timing Design – Counter Application Y2는 Y0와 Y1을 OR 한 것임을 알 수 있다. Y2 = Y0 or Y1 Y4는 Y1와 Y3을 OR 한 것임을 알 수 있다. Y4 = Y1 or Y3 Y0를 clk의 falling edge를 이용하여 시프트하면 반클럭 시프트된Y1을 만들 수 있다. process(nclr,clk) begin if( nclr='0') then y(1)<='0'; elsif(clk'event and clk='0') then y(1)<=y(0); end if; end process; y(2) <= y(0) or y(1); y(4) <= y(1) or y(3); Y2,Y4발생부

Timing Design – Counter Application 4. y5, y6의 발생은?

Timing Design – Counter Application Y5발생부 : Cnt=2일 때 1로 변하고 Cnt=0일 때 0으로 변한다. Clk의 rising Edge기준 Y6발생부 : Cnt=2일 때 1로 변하고 Cnt=0일 때 0으로 변한다. Clk의 Falling Edge기준 process(nclr,clk) begin if( nclr='0') then y(5)<='0'; elsif(clk'event and clk='1') then if(cnt=2) then y(5)<='1'; elsif(cnt=10) then else y(5)<=y(5); end if; end process; process(nclr,clk) begin if( nclr='0') then y(6)<='0'; elsif(clk'event and clk='0') then if(cnt=2) then y(6)<='1'; elsif(cnt=10) then else y(6)<=y(6); end if; end process; end a;