19
한국기술교육대학교 장영조

한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

  • Upload
    hoangtu

  • View
    240

  • Download
    5

Embed Size (px)

Citation preview

Page 1: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

한국기술교육대학교장영조

Page 2: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

한국기술교육대학교 전기전자통신공학부 2

Page 3: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

1. 조합회로 설계2. 순차회로 설계3. FSM 회로 설계4. ASM을 사용한 설계

한국기술교육대학교 전기전자통신공학부 3

Page 4: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

유한상태 머신(Finite State Machine; FSM)

지정된 수의 상태로 상태들 간의 천이에 의해 출력을 생성하는 회로

디지털 시스템의 제어회로 구성에 사용

Moore 머신 : 출력이 현재상태에 의해서만 결정, 동기형 출력

Mealy 머신 : 출력이 현재상태와 입력에 의해 결정, 비동기형 출력

3 부분으로 구성

현재상태 레지스터

차기상태 논리회로

출력회로

한국기술교육대학교 전기전자통신공학부 4

nextstatelogic

stateregister

Mealyoutputlogic

Mooreoutputlogic

inputinput

clk

ns psMealyoutput

Mooreoutput

S0

S2

S1S3

0

0

0

0

1

1

0

1

0

1

S1

S2

S3 S4

1/10-/01

-/11

1/10

0/00

0/001/01

S0

0/00

w/y1y2Input/output

무어머신

밀리머신

Page 5: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

상태할당- 상태값의 이진 데이터의 인코딩 방식에 따라 상태 레지스터의 비트 수가 달라짐

한국기술교육대학교 전기전자통신공학부 5

상태번호 2진 인코딩 Gray 인코딩 Johnson 인코딩 One-hot 인코딩

0 000 000 0000 00000001

1 001 001 0001 00000010

2 010 011 0011 00000100

3 011 010 0111 00001000

4 100 110 1111 00010000

5 101 111 1110 00100000

6 110 101 1100 01000000

7 111 100 1000 10000000

상태 인코딩 예

Page 6: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

유한상태 머신(FSM)의 코딩 가이드라인 FSM의 상태 이름을 parameter로 정의하여 사용

컴파일러 지시어인 `define을 이용하여 상태이름을 정의할 수도 있으나`define은 컴파일 과정에서 광역적으로 영향을 미치므로, 다수의 FSM에서 동일한 상태이름이 사용되는 경우에 오류가 발생된다.

parameter는 국부적인 영향을 미치므로 다른 FSM에 영향을 미치지 않는다.

FSM이 비동기 리셋을 할 수 있게 설계

리셋을 갖지 않는 FSM은 초기 전원 인가 후, 상태 레지스터의 초기값이 ‘x’ 이므로 미정의 상태에서 나오지 못하는 상황이 발생할 수 있다.

FSM을 구성하는 3개의 블록(next state logic, state register, output logic)을 분리된 always 블록 또는 assign 문으로 구현

FSM 코딩의 일관성을 좋게 하고, 수정 및 변경을 용이하게 한다.

상태 레지스터는 플립플롭을 사용

Next state logic은 case 문을 사용하고, 정의되지 않은 상태들은 default 문으로 표현, 외부 입력은 case_item 문에서 if~else를 사용

한국기술교육대학교 전기전자통신공학부 6

Page 7: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

한국기술교육대학교 전기전자통신공학부 7

code 3.3-1 moore1.v, 세 부분으로 구분된 무어 머신

module moore1 (clk, rst, x, z, ps);input clk, rst, x;output z;output [1:0] ps; // to monitor state status wire z;reg [1:0] ps, ns;parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;// state registeralways @ (posedge rst or posedge clk) // 순차회로

if (rst) ps <= S0; // 논블록킹 할당else ps <= ns;

// next state logicalways @ (ps or x) // 조합회로

case(ps) S0 : if (x) ns = S1; else ns = S0; // 블록킹 할당S1 : if (x) ns = S2; else ns = S1; S2 : if (x) ns = S3; else ns = S1; S3 : ns = S0; default : ns = S0;

endcase// output logicassign z = (ps == S3) ; // 조합회로, 동기형 출력

endmodule

S0

S2

S1S3

0

0

0

0

1

1

0

1

0

1

Page 8: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

한국기술교육대학교 전기전자통신공학부 8

code 3.3-2 moore2.v, 두 부분으로 구분된 무어 머신

module moore2 (clk, rst, x, z, ps);input clk, rst, x;output z;output [1:0] ps; // to monitor state statusreg z;reg [1:0] ps, ns;parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;always @ (posedge rst or posedge clk)

if (rst) ps <= S0;else ps <= ns;

// next state logic and output logicalways @ (ps or x)

case(ps) S0 : begin z = 1'b0; // 동기형 무어 출력 위치

if (x) ns = S1; else ns = S0; endS1 : begin z = 1'b0;

if (x) ns = S2; else ns = S1; endS2 : begin z = 1'b0;

if (x) ns = S3; else ns = S1; endS3 : begin z = 1'b1;

ns = S0; enddefault : begin z= 1'b0; ns = S0; end

endcaseendmodule

S0

S2

S1S3

0

0

0

0

1

1

0

1

0

1

Page 9: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

한국기술교육대학교 전기전자통신공학부 9

code 3.3-3 mealy.v, 두 부분으로 구분된 밀리 머신module mealy (clk, rst, w, y, ps);input clk, rst, w;output [1:0] y;output [2:0] ps; // to monitor state statusreg [1:0] y;reg [2:0] ps, ns;parameter S0 = 3'b000, S1 = 3'b001, S2 = 3'b010;parameter S3 = 3'b011, S4 = 3'b100;always @ (posedge rst or posedge clk)

if (rst) ps <= S0;else ps <= ns;

always @ (ps or w) beginy = 2'b00; // default outputcase(ps) // 비동기 출력

S0 : if (w) begin y = 2'b10; ns = S1; endelse begin y = 2'b00; ns = S0; end

S1 : if (w) begin y = 2'b10; ns = S2; endelse begin y = 2'b00; ns = S3; end

S2 : begin y = 2'b11; ns = S0; endS3 : if (w) begin y = 2'b01; ns = S2; end

else begin y = 2'b00; ns = S4; endS4 : begin y = 2'b01; ns = S0; enddefault : ns = S0;

endcase endendmodule

S1

S2

S3 S4

1/10-/01

-/11

1/10

0/00

0/001/01

S0

0/00

w/y1y2Input/output

Page 10: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

한국기술교육대학교 전기전자통신공학부 10

code 3.3-4detect.v, 패턴 순서 검사기module detect (clk, rst, st, x, y, ps);input clk, rst, st, x;output y;output [2:0] ps; // to monitor state statusreg y;reg [2:0] ps, ns;parameter S0 = 3'b000, S1 = 3'b001, S2 = 3'b010;parameter S3 = 3'b011, S4 = 3'b100, S5 = 3'b101;always @ (posedge rst or posedge clk)

if (rst) ps <= S0;else ps <= ns;

always @ (ps or x or st) begincase(ps)

S0 : begin y = 1'b0; // moore outputif (st) ns = S1; else ns = S0; end

S1 : begin y = 1'b0;if (x) ns = S1; else ns = S2; end

S2 : begin y = 1'b0;if (x) ns = S3; else ns = S2; end

S3 : begin y = 1'b0;if (x) ns = S4; else ns = S2; end

S4 : begin y = 1'b0;if (x) ns = S1; else ns = S5; end

S5 : begin y = 1'b1;if (x) ns = S3; else ns = S2; end

default : begin y=1'b0; ns = S0; end endcase end

endmodule

S3 S2

S4

S0st

st

0

1

1

0

S11

0

0

1

S5

0 1

0

0

00

0

1

패턴 검사기 : 0110 감지입력 패턴 : 0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 0 0 1 1 0 0 ...예상 출력 : 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 ...

Page 11: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

ASM (Algorithmic State Machine) 차트- 디지털 하드웨어 알고리즘 정의- 클럭펄스에 의한 연산실행표현

ASM 차트 구성요소- state box : 상태부호(이진값),

active 레지스터, 출력신호- decision box : 분기신호- conditional output box : 조건출력

decision box로부터

한국기술교육대학교 전기전자통신공학부 11

상태 상자 상태 상자 예 판단 상자

조건출력 상자 조건출력 상자 예

Page 12: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

ASM block- 한 개의 상태박스는 반드시 포함,

판별 및 조건적 출력박스는 option- 한 개의 ASM 블럭은 한 개의 클럭 타임에 수행

Timing - 레지스터의 상태 변화는 다음 클럭의

에지에서 발생함에 유의

ASM도는 상태도와 유사

상태박스-상태원,

decision –상태천이조건

조건출력 –Mealy type 출력

한국기술교육대학교 전기전자통신공학부 12

ASM 블록 예

ASM 차트와 등가인 상태도

E=1

Page 13: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

1비트 전가산기를 사용한 n 비트 덧셈연산 데이터패스 전가산기,캐리,시프트레지스터

제어회로 시스템 타이밍신호 데이터패스의 모드제어신호

한국기술교육대학교 전기전자통신공학부 13

직렬 가산기 구조

pregsreg

sreg

dff_ar

q d

enclk

FA

A

B

Ci

S

Co

sa_con

ld

sh

done

sh

shsh

ld

ld

ld

0

0

clk

start

~startrst

x

ysum

sa_dp

clk

start

x sr xy sr y

sum {s, sr sum} q co

S1

x sr xy sr y

sum {s, sr sum} q co

S2

done

S9

.

.

.

S1~S8same

operations

x ay bq 0

S0

직렬 가산기ASM 차트

Page 14: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

직렬가산기의 계층도

한국기술교육대학교 전기전자통신공학부 14

sadd

sa_dp sa_con

sreg preg fa1 dff_ar

TB_sadd

Hardware Simulation

sreg

Page 15: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

한국기술교육대학교 전기전자통신공학부 15

// sreg.v, PISO, parallel in serial outmodule sreg (clk, sh, ld, din, sout);parameter size = 8;input clk, sh, ld;input [size-1:0] din;output sout;reg [size-1:0] sreg; // internal registerassign sout = sreg[0];always @ (posedge clk)

if (ld) sreg <= din;else if (sh) sreg <= sreg >> 1;

endmodule // preg.v, SIPO, serial in parallel outmodule preg (clk, sh, sin, q);parameter size = 8;input clk, sh;input sin;output [size-1:0] q;reg [size-1:0] q;always @ (posedge clk)

if (sh) q <= {sin, q[size-1:1]}; endmodule

// dff_ar.v, 비동기 리셋을 가진 D 플립플롭module dff_ar (rst, clk, en, d, q);input rst, clk, en, d;output q;reg q;always @ (negedge rst or posedge clk)

if (~rst ) q <= 0;else if (en) q <= d;

endmodule

data path 하위 모듈

// fa1.v, 1 비트 전가산기module fa1 (a, b, ci, co, s);input a, b, ci;output co, s;assign co = ( a & b) | (ci & a ) | (ci & b);assign s = a ^ b ^ ci;

endmodule

Page 16: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

data path 모듈

한국기술교육대학교 전기전자통신공학부 16

module sa_dp (rst, clk, x, y, sh, ld, res);

parameter size = 8;

input rst, clk;

input [size-1:0] x, y; // operands

input sh, ld ; // from control

output [size:0] res;

wire x0, y0, ci, co, s;

wire [size-1:0] sum;

assign res = { ci, sum };

sreg UX (clk, sh, ld, x, x0);

sreg UY (clk, sh, ld, y, y0);

preg Us (clk, sh, s, sum);

dff_ar UD (.rst(rst), .clk(clk), .en(sh), .d(co), .q(ci));

fa1 UF (.a(x0), .b(y0), .ci(ci), .co(co), .s(s));

endmodule

Page 17: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

control 모듈- FSM 구조

한국기술교육대학교 전기전자통신공학부 17

module sa_con ( start, clk, sh, ld, done, ps);input start, clk;output sh, ld, done;output [3:0] ps; // to monitorreg [3:0] ps, ns;parameter S0=4'b0000, S1=4'b0001, S2=4'b0010, S3=4'b0011;parameter S4=4'b0100, S5=4'b0101, S6=4'b0110, S7=4'b0111;parameter S8=4'b1000, S9=4'b1001;reg [2:0] mode;

// state registeralways @ (posedge start or posedge clk)

if (start) ps <= S0; else ps <= ns;

assign sh = mode[2];assign ld = mode[1];assign done = mode[0];

// next logicalways @ (ps or start) begin

mode = 3'b100; // default outputcase(ps)

S0 : begin mode = 3'b010; ns = S1; endS1,S2,S3,S4,S5,S6,S7,S8 : ns = ps + 1'b1; S9 : begin mode = 001; ns = S0; end

// if (start) ns=S0; else ns=S9; enddefault : ns = S0;

endcaseend

endmodule

Page 18: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

Top 모듈 데이터 패스와 제어회로의 구조적 연결

한국기술교육대학교 전기전자통신공학부 18

module sadd(start, clk, x, y, ps, res, done, sh, ld);parameter size = 8;input start, clk;input [size-1:0] x, y;output [3:0] ps; // to monitoroutput [size:0] res;output done;output sh, ld; // to monitorwire sh, ld;

sa_dp UD ( ~start, clk, x, y, sh, ld, res);sa_con UC ( start, clk, sh, ld, done, ps);

endmodule

Page 19: 한국기술교육대학교 장영조 - cms3.koreatech.ac.kr · Mealy 머신: 출력이현재상태와입력에의해 결정, ... FSM을구성하는3개의블록(next state logic,

테스트벤치

한국기술교육대학교 전기전자통신공학부 19

`timescale 1 ns/1nsmodule tb_sadd;parameter size = 8;reg start, clk=0;reg [size-1:0] x, y;wire [3:0] ps;wire [size:0] res;wire done, sh, ld;always forever #50 clk = ~clk;

initial begin start = 0;

#10 start = 1; // first trial#150 start = 0;

#1000 start = 1; // second trial#100 start = 0; end

initial beginx = 8'h27; y = 8'h9c;

#900 x = 8'h58; y = 8'hf9; end

sadd DUT (start, clk, x, y, ps, res, done, sh, ld);endmodule