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 |
---|