본문 바로가기

하드웨어/Verilog

Verilog : Elevator 베릴로그 : 엘리베이터

반응형

module Elevator (
  input wire clk,
  input wire reset,
  input wire up,
  input wire down,
  input wire [9:0] floor_sel,
  output wire [9:0] floor_ind
);
  reg [9:0] curr_floor;
  reg [9:0] next_floor;
  
  always @(posedge clk) begin
    if (reset) begin
      curr_floor <= 0;
    end
    else if (up) begin
      next_floor <= curr_floor + 1;
    end
    else if (down) begin
      next_floor <= curr_floor - 1;
    end
    else if (floor_sel != curr_floor) begin
      next_floor <= floor_sel;
    end
    curr_floor <= next_floor;
  end
  
  assign floor_ind = curr_floor;
endmodule

 

 

 

 

 

 

위의 코드는 간단한 엘리베이터 모델을 Verilog로 구현한 것입니다. 엘리베이터는 up과 down 입력을 통해 상하로 이동할 수 있으며, floor_sel 입력을 통해 특정 층으로 이동할 수 있습니다. 현재 층은 curr_floor 레지스터에 저장되며, 출력 벡터인 floor_ind에 나타납니다.

위의 코드는 간단한 엘리베이터 모델이며, 실제 엘리베이터에서 사용되는 많은 기능들을 포함하지 않았습니다.

반응형

'하드웨어 > Verilog' 카테고리의 다른 글

Verilog : Elevator 10 베릴로그 : 10층 엘리베이터  (0) 2023.02.09