Port Mapping By Order
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 35번째.
이전 레슨에서는 이름으로 포트 매핑하는 방법을 배웠습니다. 이 방법에서는 .port(signal)를 사용하여 각 연결에 명시적으로 레이블을 지정합니다. 이제 대안인 순서로 포트 매핑하는 방법을 살펴보겠습니다.
모듈 정의에 나타나는 order에 따라 신호를 모듈의 ports에 연결합니다. 괄호 안에 signals를 나열하기만 하면 Verilog가 이를 하나씩 일치시킵니다.
구문:
module_name instance_name (signal1, signal2, signal3);첫 번째 signal은 첫 번째 port에 연결되고, 두 번째 signal은 두 번째 port에 연결되는 식입니다.
예제
모듈 정의:
module or_gate (
input in1, // 첫 번째 포트
input in2, // 두 번째 포트
output result // 세 번째 포트
);
assign result = in1 | in2;
endmodule순서에 따른 포트 매핑을 사용한 인스턴스화:
or_gate or1 (input_a, input_b, output_y);다음과 같이 연결됩니다:
- First signal
input_a→ first portin1 - Second signal
input_b→ second portin2 - Third signal
output_y→ third portresult
순서가 중요합니다
순서에 따른 포트 매핑에서는 순서가 매우 중요합니다:
// 올바른 순서
or_gate or1 (input_a, input_b, output_y);
// 잘못된 순서 - 신호가 잘못된 포트에 연결됨!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);순서를 뒤섞으면 연결이 잘못된 포트로 연결됩니다. 코드는 처음 얼핏 보기에는 correct해 보이기 때문에 디버깅하기 어려울 수 있습니다.
이름으로 포트 매핑하기 vs 순서대로 포트 매핑하기
| 기능 | 이름으로 | 순서대로 |
|---|---|---|
| Syntax | .port(signal) | signal1, signal2 |
| 순서가 중요한가? | 아니요 | 예 |
| 자기 설명적인가? | 예 | 아니요 |
| 실수 위험 | 낮음 | 높음 |
| 권장 대상 | 대부분의 설계 | 간단한 경우에만 |
ORDER에 따른 포트 매핑을 사용하는 경우
다음과 같은 경우에는 ORDER에 따른 포트 매핑을 사용해도 괜찮습니다.
- 모듈에 포트가 매우 적은 경우(2-3개)
- 포트 순서가 명확하고 변경될 가능성이 낮은 경우
- 빠른 테스트벤치를 작성하는 경우
대부분의 설계에서는 더 명확하고 오류가 발생할 가능성이 적기 때문에 이름을 통한 포트 매핑이 선호됩니다.
챌린지
올바른 순서로 신호를 나열하여 순서에 따른 포트 매핑을 사용해 인스턴스화를 완료하세요.
할 일:
모듈 포트(이 순서대로):
input en(enable)input [7:0] d(data input)output [7:0] q(data output)
연결할 신호:
enable_signal→en에 연결data_input→d에 연결data_output→q에 연결
직접 해보기
module register (
input en,
input [7:0] d,
output [7:0] q
);
assign q = en ? d : q;
endmodule
module top (
input enable_signal,
input [7:0] data_input,
output [7:0] data_output
);
// TODO: ORDER 매핑을 사용하여 reg1이라는 이름으로 register를 인스턴스화하세요
// 올바른 순서로 신호를 나열하세요: enable_signal, data_input, data_output
// .port(signal) 구문을 사용하지 마세요
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic직접 연습해 보세요: 온라인 Verilog 컴파일러