inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

f/f 동작원리에대해서 궁금증이 있습니다.

157

권효원

작성한 질문수 1

1

안녕하세요

학습을하다가 궁금증이 생겨서 질문드립니다.

module d_ff_asyn_rst_en(
    input wire clk, d, rst_b, en,
    output reg q
    );

   always @(posedge clk or negedge rst_b or negedge en) 
   begin
      if (!rst_b)         
         q <= 0; 
      else if (!en)       
         q <= 0; 
      else                
         q <= d;          
   end

endmodule

이렇게 async rst, en F/F 설계를 했습니다.

 

여기서 궁금한게 있습니다.( rst_b로 말씀드리면)

여기서 rst_b가 negedge일때 always문이 동작하고 rst_b ==0 일떄 q <=0 이라고 했는데 negedege일때 rst_b의 값이 0인지 1인지 어떻게 판별을 하나요?

시뮬레이션상에서는 negedge rst_b 트리거가 발생하는 시점에서 rst_b의 값은 0으로판단하고 리셋시키는데 1에서 0으로 바뀌는순간은 기울기가 무한대라서 0인지 1인지 판별할 수 없다고 생각이듭니다...

 

 

verilog-hdl fpga 임베디드

답변 1

0

설계독학맛비

안녕하세요 🙂

실제 저희가 waveform 을 보고 있는대로, 1 -> 0 으로 변하는 순간 (edge) 의 기울기 무한대는 눈으로 확인가능합니다. 하지만 이 edge 의 기울기를 현재 저희가 사용하는 simulation tool 의 waveform 상에서는 불가능 한것으로 알고있습니다. 저희는 아날로그가 아닌, 디지털을 설계하고 있죠. 아날로그 설계라면 이런 기울기가 중요한 요소겠지만, 디지털은 edge 라는 표현으로 충분히 커버된다고 생각합니다.

=====================================

Verilog 에서의 always 블록의 동작에 대해 이해하는 것이 중요합니다. 특히 @(posedge clk or negedge rst_b or negedge en) 구문은 세 가지 조건 중 하나가 발생할 때마다 항상 블록이 트리거된다는 것을 의미합니다. 이 세 가지 조건은 다음과 같습니다:

  1. clk의 상승 에지 (posedge)

  2. rst_b의 하강 에지 (negedge)

  3. en의 하강 에지 (negedge)

negedge rst_brst_b1에서 0으로 변하는 순간을 의미합니다. 이 순간에 항상 블록이 트리거되고, 블록 내부의 조건문이 실행됩니다.

if (!rst_b)
    q <= 0;

이 부분은 rst_b가 0일 때 q를 0으로 설정하라는 의미입니다. 즉, rst_b의 하강 에지가 발생( 1-> 0)하면 rst_b0이 되었음을 의미하므로 조건문이 참이 되고, q가 0으로 설정됩니다.

Verilog 시뮬레이션에서 negedge rst_brst_b1에서 0으로 변하는 순간을 정확히 인식하며, 이 순간 rst_b는 0으로 간주됩니다. 따라서, 에지가 발생한 후 조건문 if (!rst_b)rst_b가 0임을 정확히 판단하고, q를 0으로 설정합니다.

 

즐공하세요 🙂

 

 

latency 개념 구현

1

84

3

비바도 all os버전

1

68

2

초기화를 reset_n 이 '1'일 때가 아닌 '0' 일 때 실행시키는 이유 질문

1

69

2

다운로드용량

1

68

2

비바도리눅스설치

1

79

2

전체path복사넣기

1

60

2

Vivado 2025.2 리눅스 설치 후 실행 에러와 솔루션 (libxv_commontasks.so)

1

142

2

explorer.exe오류

1

102

3

mobaxterm설치오류

1

84

2

./build시, waveform 'divide color' 사용

1

52

2

Latch와 관련하여 (Time borrowing, Latch-based design)

1

122

2

clean 명령어가 안되는데, 따로 저장해줘야 하는지 궁금합니다.

0

57

1

안녕하세요 설치 관련 질문 드립니다.

1

60

3

16장 mealy 설계.

1

71

2

14장 Cycle 관련, Testbench 코드.

1

63

2

21강(16장) 초기값 설정이 적용되는 시점 질문

1

60

1

20강(15장) - 밀리 머신 관련하여 질문 드립니다.

1

63

2

build에러 질문

0

54

2

1장 ./build에서 에러가 나요

1

70

2

FPGA 강의 보드 문의 드립니다.

1

104

2

5장 DFF특성에 대한 질문

1

74

3

vivado linux 사용 이유.

1

135

2

메모리의 형태가 전체설계에 미치는 영향이 궁금합니다.

1

102

2

디스코드 멤버쉽 등업 관련 문제

1

92

2