본문 바로가기

디지털논리회로

[Verilog] FSM(유한 상태 머신)_2

이번에는 두번째 FSM을 설계 해보자.

 

 

첫번째 FSM과는 별다른 차이가 없지만 연습을 더 해보았다. bypass==1일때 상태가 ST1에서 ST3로 바뀌는 상황이다.

이때는 bypass를 clk와 동기화되도록 하였다.

 

동기화가 되면 clk가 변하기 전까지 bypass의 값을 바꿔도 상태는 변하지 않을 것이다.

 

 

 

 

다음과 같이 설계를 하고 testbench의 딜레이를 바꿔보았다.

 

 

130ns에서부터 ST1의 상태가 ST3의 상태로 bypass가 된다.

 

하지만 delay를 바꾸면 어떻게 될까

 

 

122ns에서 bypass가 0으로 입력되었지만 state는 ST3으로 그대로 bypass가 되었다. 이는 bypass가 clk에 동기화 돼서 다음 사이클이 될 때까지 영향을 안받는 것이다.

 

비동기식 방식으로 설계를 하고 싶으면 always @(state or bypass)와 같이 always문에 변하는 조건으로 넣어주면 된다.

 

FSM에는 두가지 방식이 있다. 무어 FSM과 밀리 FSM 방식이 존재한다. 그러나 이 둘의 차이점은 각 상태마다 조건 분기의 유무로 나뉜다.

 

하지만 if문의 양이 많아질 뿐 지금까지는 큰 차이를 못 느껴본거 같다.

 

 

이번 Schematic도 레지스터로 next와 state의 값을 저장 하고 또한 delay를 주는 방식으로 설계가 되었다.

'디지털논리회로' 카테고리의 다른 글

[Verilog] FSM(유한 상태 머신)_3  (0) 2022.07.15
[Verilog] FSM(유한 상태 머신)  (0) 2020.04.08
[Verilog] 4-bit fulladder  (0) 2020.04.08
[Verilog] 인코더, 디코더  (0) 2020.04.07
[Verilog] D flipflop  (0) 2020.03.27