FSM_순차회로
- 최초 등록일
- 2011.05.23
- 최종 저작일
- 2010.10
- 7페이지/ 한컴오피스
- 가격 1,500원
소개글
FSM(finite state machine)을 verilog로 설계 후 파형 검증 자료입니다.
목차
1. 코드
2. 검증 코드
3. 파형 검증내용
본문내용
//각각의 State에 관련된 선언
//(define)문장 이용
module State (z, x,clk,rst);
input clk, rst;
input [1:0] x;
//입력 신호 : FlipFlop의 동작을 위해서 clk 요구
//초기상태의 선언을 위한 rst 신호 선언
output [1:0] z;
reg [1:0] z;
//출력값을 의미하는 z의 선언
reg[1:0] NS,PS;
//현재 상태와 미래 상태를 나타내는 변수 선언
always @(posedge clk) begin
//always 구문에 posedge와 같은 edge event에 동작하게 되면, register로 잡히게 //된다.
if(rst)begin PS<=`S0; NS<=`S0; end
else begin PS<=NS; end
//아래에 always@(*) 구문에서의 값의 변하고 난뒤에
//상승 edge의 clk에서 상태 값의 변화가 발생하게 된다.
//rst신호가 들어오면 S0 현재와 미래 상태를 S0 상황으로 만들어 준다.
end
always @(x or PS) begin
//edge event가 아니라 값이 바뀌게 될 때, 바뀌게 된다. 이 경우는 실제로 //mapping하게 되면 메모리로 잡히지는 않는다.
//모든 값의 변화에 따라서 always 구문 아래의 문장을 수행한다.
case (PS)
`S0 : if(x==0) NS<=`S3; else if(x==1) NS<=`S2; else if(x==2) NS<=`S1; else NS<=`S0;
`S1 : if(x==0) NS<=`S0; else if(x==1) NS<=`S1; else if(x==2) NS<=`S2; else NS<=`S3;
`S2 : if(x==0) NS<=`S3; else if(x==1) NS<=`S0; else if(x==2) NS<=`S1; else NS<=`S1;
`S3 : if(x==0) NS<=`S2; else if(x==1) NS<=`S2; else if(x==2) NS<=`S1; else NS<=`S0;
default : NS<=NS;
참고 자료
없음