Concatenation Operator
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 27번째.
연결 연산자 { }는 여러 신호, 상수 또는 표현식을 결합하여 하나의 더 큰 벡터로 만듭니다. 비트를 연결하여 더 넓은 값을 형성해야 할 때 사용합니다.
연결에 사용할 수 있는 값
다음 항목을 연결할 수 있습니다:
- 와이어와 레지스터: 모든 신호
- 상수:
4'b1010또는8'hFF와 같은 숫자
- 표현식:
a + b와 같은 연산의 결과 - 반복: 값을 여러 번 반복하기
연결되는 모든 값은 고정되고 알려진 너비를 가져야 합니다.
기본 구문: {value1, value2, value3, ...} 결과 너비는 모든 개별 너비의 합입니다.
예제
두 개의 4비트 값을 8비트로 결합:
reg [3:0] high, low;
reg [7:0] word;
word = {high, low}; // high는 상위 4비트가 되고, low는 하위 4비트가 됨상수와 결합:
data = {4'b1010, 4'b0000}; // 8'b10100000두 개 이상 결합하기:
full = {a, b, c, d}; // 모든 너비가 합산됩니다복제
{n{value}}을 사용하여 값을 여러 번 반복할 수 있습니다:
repeated = {4{4'b1010}}; // 16'b1010101010101010 (repeat 4 times)이는 부호 확장에 유용합니다:
signed_8bit = {{4{sign_bit}}, value_4bit};코드 예제
module concatenation_demo;
reg [3:0] upper, lower;
reg [7:0] combined;
reg [11:0] repeated;
initial begin
upper = 4'b1010;
lower = 4'b1100;
combined = {upper, lower}; // 10101100
repeated = {3{4'b1010}}; // 101010101010
$display("{upper, lower} = %b", combined);
$display("{3{4'b1010}} = %b", repeated);
$finish;
end
endmodule출력:
{upper, lower} = 10101100
{3{4'b1010}} = 101010101010중요한 참고 사항
- 순서가 중요합니다:
{a, b}는{b, a}와 다릅니다 - 모든 부분은 고정된 너비를 가져야 합니다(크기가 지정되지 않은 숫자는 허용되지 않음)
- 연결은 대입문의 왼쪽과 오른쪽 모두에서 사용할 수 있습니다
챌린지
각 작업에 맞는 올바른 연결 표현식을 작성하세요.
할 일:
a와b를 결합하여 8비트 result를 만들고combine1에 저장하세요.c,d,e를 결합하여 12비트 result를 만들고combine2에 저장하세요.f와g의 두 복사본을 결합하여 12비트 result를 만들고combine3에 저장하세요.
직접 해보기
module concatenation_challenge;
reg [3:0] a, b;
reg [3:0] c, d, e;
reg [3:0] f, g;
reg [7:0] combine1;
reg [11:0] combine2, combine3;
initial begin
a = 4'b1010;
b = 4'b0101;
c = 4'b1111;
d = 4'b0000;
e = 4'b1100;
f = 4'b1001;
g = 4'b0110;
combine1 = ______; // Combine a and b into an 8-bit result
combine2 = ______; // Combine c, d, and e into a 12-bit result
combine3 = ______; // Combine f and two copies of g into a 12-bit result
$display("{a, b} = %b", combine1);
$display("{c, d, e} = %b", combine2);
$display("{f, g, g} = %b", combine3);
$finish;
end
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 컴파일러