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

Verilog always 블록으로 순차 논리 구현: JK 플립플롭, 카운터, 시프트 레지스터

always 블록은 순차 논리(메모리 요소 포함) 구현의 주력 도구입니다. 클럭 에지 기반 상태 업데이트 패턴을 마스터하세요.

JK 플립플롭

진리표: J=K=0 유지, J=0/K=1 리셋(0), J=1/K=0 세트(1), J=K=1 토글.

module jk_ff (input j, k, rstn, clk, output reg q);
    always @(posedge clk or negedge rstn) begin
        if (!rstn) q <= 0;
        else       q <= (j & ~q) | (~k & q);  // JK 특성 방정식
    end
endmodule

테스트벤치 패턴

module tb;
    reg j, k, rstn, clk; wire q;
    always #10 clk = ~clk;  // 클럭 생성
    jk_ff u0 (.j(j), .k(k), .clk(clk), .rstn(rstn), .q(q));
    initial begin
        {j,k,rstn,clk} = 0; #10 rstn = 1;
        repeat (10) begin
            #($random) j = $random; #($random) k = $random;
        end
        #20 $finish;
    end
endmodule

모듈로-10 카운터 (MOD-10 Counter)

0~9 카운트 후 롤오버. 4비트 레지스터 필요 (log2(10) ≈ 4).

module mod10_counter (input clk, rstn, output reg [3:0] out);
    always @(posedge clk) begin
        if (!rstn) out <= 0;
        else if (out == 4'd9) out <= 0;  // 9 다음 0
        else out <= out + 1;
    end
endmodule

파라미터화로 MOD-N 확장 가능: parameter N = 10; localparam W = $clog2(N);

4비트 좌측 시프트 레지스터

입력 d가 LSB로 들어오고 기존 비트들이 좌측 시프트.

module lshift_4b_reg (input d, clk, rstn, output reg [3:0] out);
    always @(posedge clk) begin
        if (!rstn) out <= 0;
        else       out <= {out[2:0], d};  // 결합으로 시프트 구현
    end
endmodule

초기값 0011, d=0 입력 시: 0011 → 0110 → 1100 → 1000 → 0000 ...

순차 논리 설계 핵심 패턴

패턴템플릿
동기 리셋always @(posedge clk) if (rst) q<=0; else q<=next;
비동기 리셋always @(posedge clk or negedge rstn) if (!rstn) q<=0; else q<=next;
동기 세트/리셋always @(posedge clk) if (rst) q<=0; else if (set) q<=1; else q<=next;
이네이블 포함always @(posedge clk) if (en) q<=next;
상태 머신always @(posedge clk) state <= next_state; always @(*) next_state = f(state, in);

흔한 실수와 회피

verilog

  1. VHDL·Verilog 마스터하기: 깨끗한 조합·순차 로직 작성법
  2. 스위치 회로: 기본 전기 회로 실용 가이드
  3. 집적회로: 디지털 로직 게이트 기초
  4. 프로그래머블 로직 컨트롤러(PLC): 산업 시스템을 위한 현대적 디지털 제어
  5. 불 대수 이해: 논리 기초부터 디지털 회로까지
  6. 카르노 맵으로 논리 단순화 마스터하기
  7. 피드백이 있는 디지털 로직: 결정론적 게이트에서 멀티바이브레이터까지
  8. Verilog Mod-N 카운터 설계: 파라미터화 모듈 및 테스트벤치
  9. Verilog 그레이 카운터 모듈: 4비트 그레이 코드 생성기
  10. 오카모토 정밀 연삭기로 완벽한 마감 실현하기