3.2.4 Sequential Logic - More circuits

Kiwoong Nam·2025년 6월 6일

HDLBits

목록 보기
11/11

Rule 90

Rule90

module top_module(
    input clk,
    input load,
    input [511:0] data,
    output [511:0] q ); 
    
    integer i;
    wire [513:0] qq = {1'b0, q, 1'b0};
    always @(posedge clk) begin
        if (load) q <= data;
        else 
            for (i = 0; i <= 511; i += 1) q[i] <= qq[i]^qq[i+2];
    end

endmodule

진리표를 보고 할 수도 있긴 한데 설명 보면 xor이라서 좌우를 xor했다.
양 끝단의 경우 0과 xor해야 하기 때문에 길이 514의 wire를 별도로 선언하여 구현했다.

Rule 110

Rule110

module top_module(
    input clk,
    input load,
    input [511:0] data,
    output [511:0] q
); 
    wire [511:0] wl = {1'b0, q[511:1]};
    wire [511:0] wr = {q[510:0], 1'b0};
    always @(posedge clk) begin
        if (load) q <= data;
        else q <= (~q & wr) | (~wl & q) | (q & ~wr);
    end

endmodule

이쪽은 별다른 수가 없어 카르노 맵을 그려 구현했다.

Conway's Game of Life 16x16

Conwaylife

module top_module(
    input clk,
    input load,
    input [255:0] data,
    output [255:0] q ); 
    integer i, j, p, pu, pd, pl, pr, c;
    always @(posedge clk) begin
        if (load) q <= data;
        else begin
            for (i = 0; i < 16; i += 1) begin
                for (j = 0; j < 16; j += 1) begin
                    c = 0; p = i * 16 + j;
                    pu = i == 15 ? -240 : 16;
                    pd = i == 0 ? 240 : -16;
                    pl = j == 15 ? -15 : 1;
                    pr = j == 0 ? 15 : -1;
                    if (q[p + pl]) c += 1;
                    if (q[p + pr]) c += 1;
                    if (q[p + pu]) c += 1;
                    if (q[p + pd]) c += 1;
                    if (q[p + pl + pu]) c += 1;
                    if (q[p + pl + pd]) c += 1;
                    if (q[p + pr + pu]) c += 1;
                    if (q[p + pr + pd]) c += 1;
                    
                    if (c == 2) q[p] <= q[p];
                    else if (c == 3) q[p] <= 1'b1;
                    else q[p] <= 1'b0;
                end
            end
        end
    end

endmodule

이걸 시험에 낼라나??

0개의 댓글