본문 바로가기

Verilog/HDLbits

[HDLBits] Shift4

 

1. 문제 및 설명

  • 4비트 시프트 레지스터를 설계하시오.
    • areset: 시프트 레지스터를 0으로 리셋한다.
    • load: 시프트 동작 대신 data[3:0] 값을 시프트 레지스터에 로드한다.
    • ena: 우측 시프트 동작을 수행한다.
    • q: 시프트 레지스터의 현재 내용

 

2. 모듈 정의

module top_module(
    input clk,
    input areset,  // async active-high reset to zero
    input load,
    input ena,
    input [3:0] data,
    output reg [3:0] q);

 

 

3. 답

module top_module(
    input clk,
    input areset,  // async active-high reset to zero
    input load,
    input ena,
    input [3:0] data,
    output reg [3:0] q); 
    
    always@(posedge clk, posedge areset)
        begin
            if(areset)
            	begin
                    q <= 4'b0;
                end
            else
                begin
                    if(load)
                    	q <= data;
                    else if(ena)
                        q = q >> 1;
                    else
                        q <= q;
                end
        end
            
            

endmodule

'Verilog > HDLbits' 카테고리의 다른 글

[HDLBits] Shift18  (0) 2026.01.19
[HDLBits] Rotate100  (0) 2026.01.19
[HDLBits] Count clock  (0) 2026.01.14
[HDLBits] Countbcd  (0) 2026.01.14
[HDLBits] Exams/ece241 2014 q7b  (0) 2026.01.14