산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 결합(Concatenation) & 복제(Replication) 연산자 실전 가이드

여러 비트 와이어/변수를 { }로 묶어 더 큰 벡터를 만드는 결합, 같은 표현식을 반복하는 복제 연산자를 마스터하세요.

결합 연산자 { }

피연산자: 와이어, 변수, 표현식, 크기 지정된 상수. 각 피연산자 크기를 알아야 전체 크기 계산 가능.

wire a, b;
wire [1:0] res;
assign res = {a, b};  // res[1]=a, res[0]=b

wire [2:0] c;
wire [7:0] res1;
assign res1 = {b, a, c[1:0], 2'b00, c[2]};
// res1[7]=b, [6]=a, [5:4]=c[1:0], [3:2]=0, [1]=c[2], [0]=0 (암시적 패딩?)

작동 예제: 파라미터화된 결합

module des (input [1:0] a, input [2:0] b, output [4:0] out1, output [3:0] out2);
    assign out1 = {a, b};           // 2+3=5비트
    assign out2 = {a[1], 2'b01, b[2]}; // 1+2+1=4비트, out2[2:1]은 항상 2'b01
endmodule

시뮬레이션으로 동적 변화 확인 가능.

복제 연산자 {n{expr}}

n: 0 이상 상수 (변수, x, z 불가). 표현식 n번 반복.

wire a; wire [6:0] res;
assign res = {7{a}};  // aaaaaaa (7비트)

{2'bz{2'b0}}  // 불법: 복제 상수에 z 불가
{2'bx{2'b0}}  // 불법: 복제 상수에 x 불가
복제 표현식은 LHS에 올 수 없음, output/inout 포트 직접 연결 불가.

중첩 복제 (Nested Replication)

복제 표현식을 일반 결합 안에 포함 가능.

module des;
    reg [1:0] a; reg [2:0] b;
    initial begin
        a = 2; b = 4;
        $display("res=%b", {a, b, 3'b000, {{2{a}}, {3{b}}}});
        // a(2비트) + b(3비트) + 000(3비트) + a×2(4비트) + b×3(9비트) = 21비트
    end
endmodule
// 출력: a=10, b=100 → res=101000001010100100100

불법 사용 사례

reg [3:0] _var;
assign res = {_var{a}};  // 컴파일 에러: 변수를 복제 상수로 사용 불가
// xmelab: *E,NOTPAR: Illegal operand for constant expression

실무 활용 패턴

요약표

연산자문법제약용도
결합{a, b, c}피연산자 크기 알려져야 함버스 조립, 비트 필드 구성
복제{n{expr}}n=상수≥0, LHS/포트 연결 불가비트 확장, 패턴 생성, 초기화
중첩 복제{a, {3{b}}}복제 안 복제 가능복잡한 비트 패턴 구성

verilog

  1. 버릴로그(Verilog) 입문: 디지털 회로 설계를 위한 하드웨어 기술 언어
  2. Verilog 할당문 이해: 유형, 문법, 모범 사례
  3. Verilog 차단 vs 비차단 할당: 핵심 차이점 완벽 이해
  4. Verilog 함수 마스터하기: 효율적인 RTL 설계를 위한 활용법
  5. Verilog 태스크 이해: 함수와의 차이점, 문법, 활용법
  6. Verilog 클럭 생성기: 설계 및 구현 가이드
  7. Verilog 수학 함수 마스터하기: 효율적인 하드웨어 설계를 위한 활용
  8. Verilog $timeformat 마스터하기: 정밀도 및 표시 제어
  9. 모든 범위에서 Verilog Timescale 이해 및 출력하기
  10. Verilog 파일 I/O 마스터하기: 열기, 읽기, 쓰기, 닫기