FSM 실습편에서 질문
맛비님 강의 FSM 실습편에서 궁금한점이 있어 질문드립니다
#10
@(posedge clk);
$display("Start! [%d]", $time);
i_run = 1;
@(posedge clk);
i_run = 0;
테스트벤치에서 initial begin 안에 이런 구문이 등장하는데
@(posedge clk) 뜻이 뭔가요
@를 보니
always @(posedge clk)이 생각나는데
제가 알기로는 initial 구문안에 always를 쓸 수 없다고 알고 있었거근요
@(posedge clk)는 always @(posedge clk)에서 always 만을 없앤 것인가요? 아니면
다른 어떤 의미가 있는 것인가요?
답변 1
1
안녕하세요 :)
Testbench 안에 사용했던 @(posedge clk) 여쭤보신 거로 이해했구요.
사용 가능합니다.
해당 구문의 의미는,
clk 이 Positive edge 가 입력되면 넘어가라. 라는 의미에요.
Testbench 작성시, Clock 동기화를 위해서 사용합니다. (모듈에서는 사용 금지)
Testbench 를 작성하실때, 보통
always
#5 clk = ~clk;
initial begin
#10 블라블라
#10 블라블라
end
이렇게 많이 하시는데, (처음 배우실때)
만약에 clk 이 #5 가 아니고 다른 숫자라면, 예를 들어 #7 이라고 가정하면 어떻게 될까요?
initial begin 안에 있는 #10 이 #14 로 바껴야 정상 동작하겠죠.
하지만 #10 대신,
@(posedge clk) 블라블라
가 되면 clk 의 숫자 관계없이, positive edge 에서 정상 동작 합니다.
당연히 @(negedge clk) 도 됩니다. :)
뭔가 길었는데, 정리하면
Testbench 에서 Clock 동기화에 맞춰서 기술하고 싶을 때, 사용합니다.
이렇게도 가끔 사용해요. 다시한번 말씀드리지만, Testbench 에요!! 그럼 즐공하세요 :)
initial begin
// 10 cycle 기다리기 ver1
for ( i = 0; i < 10; i = i+1) begin
@(posedge clk);
end
// 10 cycle 기다리기 ver2 (repeat 사용. 훨씬 보기 좋습니다. 추천.)
repeat (10) @(posedge clk);
end
latency 개념 구현
1
78
3
비바도 all os버전
1
64
2
초기화를 reset_n 이 '1'일 때가 아닌 '0' 일 때 실행시키는 이유 질문
1
65
2
다운로드용량
1
67
2
비바도리눅스설치
1
77
2
전체path복사넣기
1
58
2
Vivado 2025.2 리눅스 설치 후 실행 에러와 솔루션 (libxv_commontasks.so)
1
139
2
explorer.exe오류
1
95
3
mobaxterm설치오류
1
82
2
./build시, waveform 'divide color' 사용
1
50
2
Latch와 관련하여 (Time borrowing, Latch-based design)
1
120
2
clean 명령어가 안되는데, 따로 저장해줘야 하는지 궁금합니다.
0
56
1
안녕하세요 설치 관련 질문 드립니다.
1
59
3
16장 mealy 설계.
1
70
2
14장 Cycle 관련, Testbench 코드.
1
62
2
21강(16장) 초기값 설정이 적용되는 시점 질문
1
58
1
20강(15장) - 밀리 머신 관련하여 질문 드립니다.
1
61
2
build에러 질문
0
53
2
1장 ./build에서 에러가 나요
1
69
2
FPGA 강의 보드 문의 드립니다.
1
103
2
5장 DFF특성에 대한 질문
1
70
3
vivado linux 사용 이유.
1
130
2
메모리의 형태가 전체설계에 미치는 영향이 궁금합니다.
1
98
2
디스코드 멤버쉽 등업 관련 문제
1
87
2





