SystemVerilog 기반의 논리적 회로 설계(수업용) - 5장 조합 모듈의 회로 설계
5039 단어 HDLSystemVerilog
제5장 조합 모듈의 회로 설계
System Verilog에서 모듈을 결합하면 대규모 회로 모듈을 구축할 수 있습니다.
본 장은 이전에 설계한 각종 회로 모듈을 결합시켜 새로운 회로를 설계하는 방법을 배울 것이다.
7단식 가법기
제4장 목록 4.1(또는 목록 2.10)의 adder 모듈(4위 가법기)과 목록 4.2의 ssegdecorder 모듈(7단 디코더)을 조합하여 설계도 5.1과 같은 회로를 고려합니다.
<그림 5.17 세그먼트 디스플레이 기능이 있는 가법기>
그림5.1 회로 모듈 ssegadder 내부, adder 모듈과 sseg-decorder 모듈을 사용하고 있습니다.
adder 모듈에 대한 입력 a와 b,sseg-adder 입력numa 와num각각 b를 연결했다.
유사하게 adder 모듈의 출력 캐리와 sseg-decorder 모듈의 출력 y는 sseg-입니다.adder 모듈의 출력 캐리와hex-각각 패널에 연결됩니다.
adder 모듈의 출력sum와 ssegdecorder 모듈의 입력num은 sseg-입니다adder 내부 신호sum를 통해 연결합니다.
이런adder 모듈은 목록 5.1처럼 기술할 수 있습니다.
<목록 5.1 ssegadder 모듈(7단 디스플레이 가법기)>module sseg_adder (
input logic [3:0] num_a,
input logic [3:0] num_b,
output logic [6:0] hex_pattern,
output logic carry
);
logic [3:0] sum; // (1) sseg_adderモジュールの内部信号
adder adder_unit ( // (2) adder モジュールの呼び出し(インスタンス化)
.a (num_a), // (3) adder モジュールの入力 a に sseg_adder の入力 num_a を接続
.b (num_b),
.sum (sum),
.carry (carry)
);
sseg_decoder decoder_unit (
.num (sum),
.y (hex_pattern)
);
endmodule
목록(1)의 ssegadder 모듈의 내부 신호sum를 정의했습니다.
sseg_(2)에서 adder 모듈을 호출합니다. 이 adder 모듈은 adder에서 볼 때 낮은 모듈입니다.
서브 모듈을 호출하는 것도 실례라고 부른다.
모듈은 회로의 설계도를 제공하는데 실례는 이 설계도를 실현하는 회로를 실제로 설치했다고 상상할 수 있다.
모듈 실례는 모듈 명칭, 실례 명칭, 포트 목록 (잠시 후 설명) 을 지정합니다.
<module_name> <instance_name>(<port_list>);
목록(2)에서 adder 모듈의 실례 이름 adder실례
생성 중입니다.
포트 목록에는 하위 모듈의 입력 출력 신호와 상위 모듈 (여기는 sseg adder) 의 신호 연결이 기술되어 있습니다.
예를 들어 목록(3)에서 저모듈 adder 모듈의 입력 신호 a에서 상급 모듈의 sseg-로adder 모듈의 신호num연결 a를 나타냅니다.
연습하다
목록 5.1sseg실습 보드 DE0-CV에 adder 모듈을 설치하여 동작을 확인합니다.
sseg_adder 모듈의 입력 출력 신호를 표 5.1과 같이 DE0-CV의 입력 출력 장치에 할당하십시오.
주의, 목록 4.1 adder 모듈과 목록 4.2%segdecorder 모듈이 필요하니까 프로젝트에도 디자인 파일을 추가하세요.
<표 5.1 sseg장치에 adder 모듈의 입력 출력 할당 >
신호 이름
장치 지정
입출력
num_a[3:0]
SW7-SW4
input
num_b[3:0]
SW3-SW0
input
hex_pattern[6:0]
HEX06-HEX00
output
carry
LEDR0
output
16진수 카운터
목록 3.1의 레지스터 4자리 레지스터 모듈과 목록 4.1의 4자리 가법기adder 모듈을 그림5.2와 같이 조합하면 시계가 상승하는 16진 계수기를 만들 수 있다.
<그림 5.216 진수 카운터 counter 16>
이 16진 계수기 회로counter16 모듈의 설계 예는 목록 5.2와 같다.
<목록 5.2 counter 16 모듈(16진수 카운터)>module counter16 (
input logic clock,
output logic [3:0] count_binary
);
logic [3:0] count;
logic [3:0] next_count;
assign count_binary = count;
adder add_1 (
.a (count),
.b (4'b0001),
.sum (next_count)
);
register register_4bit(
.clock (clock),
.d (next_count),
.q (count)
);
endmodule
연습하다
실습 보드 DE0-CV에 목록 5.2 counter 16 모듈을 설치하여 동작을 확인합니다.
counter16 모듈의 입력 출력 신호를 DE0-CV의 입력 출력 장치에 분배하십시오. 표5.2와 같습니다.
또한 목록 4.1 adder 모듈과 목록 3.1 register 모듈이 필요하기 때문에 프로젝트에도 이 디자인 파일을 추가합니다.
<표 5.2 counter16 모듈의 입력과 출력을 장치에 할당>
신호 이름
장치 지정
입출력
clock
KEY0
input
count_binary[3:0]
LEDR3-LEDR0
output
7 세그먼트 디스플레이 덧셈기
목록 3.1의 4비트 레지스터 리지스터 모듈, 목록 4.1의 4비트 가법기 adder 모듈, 목록 4.2의 7단 디코더 sseg-decorder 모듈에 있는 3개의 뮤얼을 그림5.3과 같이 조합하면 7개의 섹션 디스플레이의 누적기를 만들 수 있다.
<그림 5.3 세그먼트로 표시된 가법기>
이 7 섹션에 표시된 가법기addaccumultraor 모듈은 목록 5.3에 따라 설명할 수 있습니다.
<목록 5.3addaccumulaator(7단 디스플레이 가법기)>module add_accumulator (
input logic clock,
input logic [3:0] num,
output logic [6:0] hex_pattern
);
logic [3:0] next_result;
logic [3:0] result;
adder adder (
.a (result),
.b (num),
.sum (next_result)
);
register register (
.clock (clock),
.d (next_result),
.q (result)
);
sseg_decoder decoder (
.num (result),
.y (hex_pattern)
);
endmodule
여러 모듈의 조합 회로를 설계할 때 먼저 그림5.3과 같은 상자도를 그리고 상급 및 하급 각 모듈의 입력과 출력 신호(인터페이스) 간의 연결을 정리한다.
그리고 목록 5.3 같은 HDL 기술을 수정하면 오류가 줄어든다.
연습하다
목록 5.3add실습 보드 DE0-CV에 accumultor 모듈을 설치하여 동작을 확인합니다.
add_accumulaator 모듈의 입력 출력 신호는 표 5.3에 따라 DE0-CV의 입력 출력 장치에 분배하십시오.
목록 4.1 adder 모듈과 목록 3.1 register 모듈 및 목록 4.2 7단 디코더 sseg-decorder가 필요하니까 그 디자인 파일도 프로젝트에 추가하세요.
<표 5.3addaccumultor 모듈의 입력과 출력을 장치에 할당 >
신호 이름
장치 지정
입출력
clock
KEY0
input
num[3:0]
SW3-SW0
input
hex_pattern[6:0]
HEX06-HEX00
output
Reference
이 문제에 관하여(SystemVerilog 기반의 논리적 회로 설계(수업용) - 5장 조합 모듈의 회로 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rikitoro@github/items/42653d50b30096da3038
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
module sseg_adder (
input logic [3:0] num_a,
input logic [3:0] num_b,
output logic [6:0] hex_pattern,
output logic carry
);
logic [3:0] sum; // (1) sseg_adderモジュールの内部信号
adder adder_unit ( // (2) adder モジュールの呼び出し(インスタンス化)
.a (num_a), // (3) adder モジュールの入力 a に sseg_adder の入力 num_a を接続
.b (num_b),
.sum (sum),
.carry (carry)
);
sseg_decoder decoder_unit (
.num (sum),
.y (hex_pattern)
);
endmodule
<module_name> <instance_name>(<port_list>);
module counter16 (
input logic clock,
output logic [3:0] count_binary
);
logic [3:0] count;
logic [3:0] next_count;
assign count_binary = count;
adder add_1 (
.a (count),
.b (4'b0001),
.sum (next_count)
);
register register_4bit(
.clock (clock),
.d (next_count),
.q (count)
);
endmodule
module add_accumulator (
input logic clock,
input logic [3:0] num,
output logic [6:0] hex_pattern
);
logic [3:0] next_result;
logic [3:0] result;
adder adder (
.a (result),
.b (num),
.sum (next_result)
);
register register (
.clock (clock),
.d (next_result),
.q (result)
);
sseg_decoder decoder (
.num (result),
.y (hex_pattern)
);
endmodule
Reference
이 문제에 관하여(SystemVerilog 기반의 논리적 회로 설계(수업용) - 5장 조합 모듈의 회로 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rikitoro@github/items/42653d50b30096da3038텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)