inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

[과제2] Port를 확장하여 High-speed를 위한 Dual-port + Two-port RAM 설계하기

TPSRAM,DPSRAM TB코드 문법 질문

해결된 질문

104

이광언

작성한 질문수 4

0

begin: tpsram_write

@(posedge clk);

for (int i=0;i<DEPTH;i++) begin

we <= 1;

wa <= i;

wd <= 'h10+i;

@(posedge clk);//필요한 이유

end

we <= 0; @(posedge clk);

end

@(posedge clk); for문 마지막과 begin문 마지막에 필요한 이유가 뭔가요?
주석 처리 후 시뮬레이션을 돌려보니 for문에 맞게 wa값과 wd값이 업데이트가 되지 않았습니다.

혹시 system verilog에서 for문과 begin문을 작성하면 @(posedge clk)을 해주는 것이 규칙인가요?

컴퓨터-구조 verilog-hdl fpga 임베디드 amba

답변 2

0

회로설계 멘토 삼코치

네 안녕하세요, 답변 남겨드립니다.
for문 마지막에 @(posedge clk)가 필요한 이유는 문법때문이 아니라, 실제 그러한 동작을 의도했기 때문입니다. @라는것이 이벤트 트리거라서, 그 이벤트가 발생할 때에만 아래 구문을 이어가게 되어있습니다.

- for 루프 내에서 we, wa, wd와 같은 신호를 업데이트한 후, 다음 클럭 사이클에서 이 신호들이 실제로 반영되도록 하기 위해 @(posedge clk)를 사용합니다. 클럭의 상승 에지에서 신호가 업데이트되므로, 이 시점을 명시적으로 지정해 주어야 합니다.

begin문 마지막에 @(posedge clk) 또한 마찬가지입니다.

- begin 블록이 끝나는 시점에서도 클럭의 상승 에지에서 신호가 안정적으로 반영되도록 하기 위해 @(posedge clk)를 사용합니다. 이는 블록 내의 모든 신호가 클럭에 동기화되어 업데이트되도록 보장합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
이광언님, 질문 주셔서 감사합니다.

SystemVerilog에서 @(posedge clk); 문장은 시뮬레이션에서 시계를 기반으로 동작이 진행되도록 하기 위한 동기화 포인트입니다. 초기 begin문과 for문의 마지막에 있는 @(posedge clk);는 각각의 시계 싸이클에 따라 동작을 제어합니다.

  • @(posedge clk);을 for문 내 반복 과정에서 추가하면, 매 반복마다 클럭의 상승 에지에서 for문의 내부 블록이 실행됩니다. 이렇게 해야 wawd의 값이 매 클럭 싸이클마다 올바르게 갱신됩니다.
  • 만약 @(posedge clk);가 없다면 for문 내부의 모든 할당이 클럭의 영향을 받지 않고 즉시 연속적으로 실행되므로, 원하는 디지털 로직의 동작을 수행하지 않습니다.

따라서, SystemVerilog에서는 for문과 begin문 내에서 클럭 신호에 맞춰 동작을 보장하기 위해 @(posedge clk);을 사용하는 것이 통상적입니다.

이해가 되지 않거나 추가 질문이 있으시다면 언제든지 문의해 주세요.

여기에서 내용을 더 확인하실 수 있습니다.

강의 만료일 연장 신청

0

31

2

강의자료 pdf파일

0

89

2

수강기간변경

0

75

2

프로그램 종류

0

89

1

안녕하세요 강의 도중 궁금한 점 있어서 질문드립니다!

0

85

1

수강기간 변경관련

0

65

2

수강기간 만료

0

72

2

수강 연장 문의

0

71

2

I2C SCL_Synched, SDA_Synched 질문

0

83

1

no data path질문

0

102

3

SRAM 강의 modelsim 시뮬레이션에서 inner 메모리를 Objects 리스트에서 찾으려고 하는데 안보입니다.

0

88

2

DataMem 스펙 질문

0

54

1

Hamming Code 질문

0

66

1

W_CRC 값 질문하기

0

60

1

Precharge에 대한 질문

0

167

1

tpsram spec 질문

0

64

2

학습 관련 질문 있습니다!

0

87

2

[과제7] AXI 통신 프로토콜 설계하기 문의드립니다

0

94

2

SRAM 강의 TB 작성 후 waveform 확인시에 dout이 모두 don't care 처리 관련 질문드립니다.

0

105

5

SRAM Interface Behavior(Diagram) 질문

0

133

3

vivado와 quartus 프로그램의 systhesis 결과 차이에 대해 궁금한 점 있습니다

0

185

2

tool 질문

0

92

2

CDC 메타스태빌리티 질문

0

66

1

SRAM module RTL viewer 이상

0

97

2