verilog 오류? 상태...?

verilog 오류? 상태...?

작성일 2022.11.05댓글 1건
    게시물 수정 , 삭제는 로그인 필요

`timescale 1ns / 1ps
module oneshot_fsm(clk, sig, rstb, sig_oneshot);

input clk;
input sig;
input rstb;
output sig_oneshot;
reg q;

assign sig_oneshot = (sig & (~q));

always @(posedge clk or negedge rstb or posedge sig) begin
if(!rstb) 
sig = 0;
else q <= sig;
end
endmodule



module tb_oneshot_fsm;
reg clk , sig, rstb;
wire sig_oneshot;
oneshot_fsm u0( clk , sig, rstb , sig_oneshot);
initial clk = 0;
always #5 clk = ~clk;
initial begin
sig = 0; rstb = 0;
#10 rstb =1;
#22 sig = 1;
#20 sig = 0;
#40 sig = 1;
#40 sig = 0;
#10;
$stop;
end
endmodule

//////

idle 상태에서는 sig 신호가 들어오면 wait
wait 상태에서 sig 0이 되기를 기다려 idle
출력신호 sig_oneshot은 idle상태에서 sig신호가 1일때만 1로 출력


뭐가 문제인가요? 오류날 이유는 없어 보이는데요..




profile_image 익명 작성일 -

always @(posedge clk or negedge rstb or posedge sig) begin

if(!rstb)

sig = 0;

else q <= sig;

end

아래와 같이 수정하세요.

always @(posedge clk or negedge rstb or posedge sig) begin

if(!rstb)

q <= 0;

else q <= sig;

end

참고로, 플립플롭을 기술할때는 sensitivity list에 clock과 reset 만 넣어줘야 합니다.

sig는 입력 데이터로서 빼야 합니다.

sensitivity list (골뱅이(@) 뒤의 괄호)는 출력신호를 바뀌게 하는 이벤트를 나열하는 곳인데,

플립플롭의 출력이 바뀌게 하는 이벤트는 clock과 reset입니다. 따라서 clock과 reset 이외의 신호를 추가하면 안됩니다. 시뮬레이션은 되겠지만 합성이 되지 않거나 설계 의도와 다르게 합성이 됩니다.

조합논리도 always 문으로 기술을 할 수 있습니다. 조합논리는 모든 입력이 출력을 바뀌게 할 수 있으므로 모든 입력 신호를 always문에 넣어줍니다. 실수로 입력 신호를 빠뜨리게 되면 latch등이 사용되어 의도와 다르게 합성이 되므로, 실수를 방지하기 위해 always @* (모든 입력 추가하라는 의미)를 사용하는 것이 좋습니다.

예)

always @*y = (x1 & x2) | x3; // always @(x1 or x2 or x3) y = (x1 & x2) | x3; 와 동일

그리고 합성이 되지는 않지만 검증을 위한 모델링 코드에는 원하는 어떤 신호라도 필요에 따라 sensitivity list에 추가, 삭제가 가능합니다. 단 합성과 무관한 검증용 코드(테스트벤치)에서만 그런식으로 기술해야 합니다.

Verilog Mealy 질문(case, else if)

... 한 상태(WhiteState)에서 input(Red Green Blue)이 각각 다르고 그 input을 제가 if랑 else if를 사용해서 나타내려고 하는데 어떤 부분에서 오류가 나는걸까요.....

Verilog로 synchronus setable...

... 플립플롭을 맨 처음 초기화를 하지 않은 상태는 unknown상태로 값을 모르는 상태 (빨간 줄)입니다. set_n 혹은 reset_n 두 가지 중의...

xlinx ise 실습 verilog문 질문

... 지금 저 상태로 컴파일을 해보면 AS = 1; AS = 0; 이 부분에서 오류가 나네요ㅜㅠ 제가 이런쪽은 잘 모르는데 고수님들 도움 바랍니다 디지털논리 혹은 컴퓨터아키텍쳐의...

verilog 오류좀 잡아주세요 ㅠㅠ

... //state1 의 5가지 상태 모두 반복 후 end end always @(posedge Clock) //Clock신호의 상승 엣지에서 항상 이루어짐 << 오류가 여기를...

전기전자공학부에서는 뭘 배우나요?

... 화학결합의 상태, 분자의 구조, 화학평형 및 속도론... 특히, 수강생들은 본 교과목을 통해 Verilog HDL의 사용과... 이에 따라 본 강의에서는 오류정정 부호, 변조 기법...

opnet에 대해 자세히 알고 싶습니다...

... 어떤 오류를 범하게 되는가를 잘 보여주는... VHDL/Verilog 칩설계 도구를 하나로 결합하였습니다. 즉... 5 Probe Editor 노드상태 분석을 위한 Node Probe 링크상태...

verilog 에러 질문입니다.

... (10170): Verilog HDL syntax error at exexex.v(62)... 지금 상태를 변경하는 것까지는... 콜론 다음에 case 문 항목 구문 오류 입니다. money...

Xilinx의 VHDL질문

... VHDL과 Verilog-HDL이다. HDL이란 이와 같이... 설계상의 오류 및 개발 기간을 단축할 수 있으므로... 있는 상태이다. 그런 경험을 바탕으로 VHDL을 접하게...