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
Reference
이 문제에 관하여(SystemVerilog 기반의 논리 회로 설계(수업용) - 제3장 레지스터의 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rikitoro@github/items/426186a06242b24e0df2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
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
Reference
이 문제에 관하여(SystemVerilog 기반의 논리 회로 설계(수업용) - 제3장 레지스터의 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rikitoro@github/items/426186a06242b24e0df2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)