任务目标
寻找汽车的实现。记得调整模块的可调电阻参数。
实现代码
电机模块代码motor.v:
module MOTOR( input sysclk, input rst_n, input ENA, input ENB, input [1:0] ATURN, input [1:0] BTURN, output reg [1:0] EN, output reg [1:0] AIN, output reg [1:0] BIN ); always@(posedge sysclk) begin if(!rst_n) begin EN <= 2'b00; AIN <= 2'b00; BIN <= 2'b00; end else begin EN <= {ENB ,ENA}; AIN <= ATURN; BIN <= BTURN; end end endmodule
顶层文件逻辑TOP.v:
`timescale 1ns / 1ps module TOP( input sysclk, input rst_n, input [1:0] infraded, // 1:左侧红外传感器,0:右侧红外传感器 output [1:0] AIN, // 左侧车轮控制 output [1:0] BIN // 右轮控制 ); reg [1:0] ATURN,BTURN; wire [1:0] EN; MOTOR motor( .sysclk(sysclk), .rst_n(rst_n), .ENA(1'b1), .ENB(1'b1), .ATURN(ATURN), .BTURN(BTURN), .EN(EN), .AIN(AIN), .BIN(BIN) ); always@(posedge sysclk) begin if(infraded == 2'b00) begin ATURN <= 2'b01; BTURN <= 2'b01; end else if(infraded == 2'b01) begin ATURN <= 2'b01; BTURN <= 2'b10; end else if(infraded == 2'b10) begin ATURN <= 2'b10; BTURN <= 2'b01; end else begin ATURN <= 2'b00; BTURN <= 2'b00; end end endmodule
结语
车辆组装取决于读者自己。代码逻辑相似。