SystemVerilog 기반의 논리 회로 설계(수업용) - 제3장 레지스터의 설계

3554 단어 HDLSystemVerilog

제3장 레지스터의 디자인


이 장에서 alwaysff문으로 레지스터를 설계하는 방법을 배우다.

레지스터


설계도 3.1에서 보여준 시계 동기화 4비트 레지스터
이 회로는 목록 3.1의register 모듈로 설명할 수 있습니다.

<그림 3.14비트 레지스터>
<목록 3.1 register 모듈(4비트 레지스터)>
module register(
  input   logic         clock,
  input   logic   [3:0] d,
  output  logic   [3:0] q
);

  always_ff @ (posedge clock) begin // (1) clockの立ち上がりのタイミングで起動
    q <= d; // (2) qにdの値を代入する(ノンブロッキング代入)
  end

endmodule
레지스터처럼 트리거로 구성된 회로는always입니다.ff문 디자인 사용 가능.
always_ff 문장은 다음과 같은 신호가 변할 때begin과end로 둘러싸인 부분의 회로를 실행한다.
목록 3.1의 (1) 부분에서 clock 신호의 상승 (posedge) 시간을 지정합니다.
즉, clock 신호가 상승하는 정시 집행(2)의q <= d.
이것은 신호 d의 값이 신호 q에 대입되는 것을 나타낸다.
이register 모듈의 동작을 합친 후 clock신호가 상승할 때 입력신호 d의 값을 가져와 q에 유지하고 출력합니다.
그림3.2 시차도로 이register 모듈의 동작 예를 나타낸다.
위 동작을 확인하십시오.

<그림3.2 register 모듈의 동작 예>
이번, 명세서 4.1의alwaysff문에서 사용된q <= d같은<=대입을 비저지대입이라고 한다.
트리거로 구성된 회로를 설계할 때 원칙적으로 비저항 대입을 사용하는 것이 좋은 습관이다.

연습하다


실습 보드 DE0-CV에 목록 3.1 register 모듈을 설치하여 동작을 확인합니다.
register 모듈의 입력 출력 신호는 표 3.1과 같이 DE0-CV의 입력 출력 장치에 분배됩니다.
<표 3.1 register 모듈의 입력 및 출력 장치 할당>
신호 이름
장치 지정
입출력
clock
KEY0
input
d[3:0]
SW3-SW0
input
q[3:0]
LEDR3-LEDR0
output

비동기 레지스터


방금 디자인된 시계가 동기화된 네 개의 레지스터에 비동기 리셋 기능을 추가한 회로를 고려한 디자인.
그림3.3에서 보듯이 입력 신호를 복원nreset 추가
n_reset은 수성 브로치입니다.
즉, 통상적으로 n이다reset에 1,n 입력reset이 0일 때 리셋 기능이 작용합니다.
비동기적으로 리셋된 4자리 레지스터는 목록 3.2의register입니다AR 모듈처럼 기술할 수 있습니다.

<그림3.3 비동기 리셋이 있는 4비트 레지스터>
<목록 3.2 registerar 모듈 (비동기적으로 리셋된 4비트 레지스터) >
module register_ar( // asynchronous reset
  input   logic       clock,
  input   logic       n_reset, // active low (0になったらリセット)
  input   logic [3:0] d,
  output  logic [3:0] q
);

  always_ff @ (posedge clock, negedge n_reset) begin
    if (n_reset == 1'b0) begin
      q <= 4'b0000;   // reset
    end else begin
      q <= d;
    end
  end

endmodule
이번 알웨이스.ff문에서 시작할 시기로 clock의 상승과 nreset의 입하(negedge)를 지정했습니다.
또 알웨이스.ff문에if문,nreset이 0일 때 q를 리셋합니다. (0 대입) 그렇지 않으면 d의 값을 q에 대입합니다.
조건에 따라 다른 조작을 수행하는 회로를 설명하려면alwaysff문과 4장이 표시하는alwayscomb문 등always문에서if문을 사용할 수 있습니다.
또한,always문의 바깥쪽은if문을 사용할 수 없습니다.
그림3.4의registerar모듈의 동작 예는 시차도와 같다.
n_reset의 하락 시기에 q가 복원되었는지 확인하십시오.
또한 clock이 상승할 때리셋이 0이면 리셋이 발생합니다.

<그림 3.4 registerar 모듈의 조작 예시 >

연습하다


목록 3.3 register실습판 DE0-CV에 AR 모듈을 설치하여 동작을 확인합니다.
register_ar모듈의 입력과 출력 신호는 표3.3과 같이 DE0-CV의 입력과 출력 장치에 분배된다.
<표 3.2 registerar모듈의 입력과 출력을 장치에 할당>
신호 이름
장치 지정
입출력
clock
KEY0
input
n_reset
KEY1
input
d[3:0]
SW3-SW0
input
q[3:0]
LEDR3-LEDR0
output

좋은 웹페이지 즐겨찾기