基于发FPGA 练手智能小车顶层文件
`timescale 1ns / 1psmodule top(
input wire clk ,
input wire rst_n ,
input wire rx ,
input wire echo,
input wire D0 ,
output reg dj ,
output wire trig,
output wire sel ,
output reg t17 ,
output reg u18 ,
output wire seg
);
wire valid;
wire dis ;
wiredata ;
reg dis_t;
reg state;
reg cunt ;
parameter ZERO =2'b00;
parameter ONE =2'b11;
//产生一个计数器
always @(posedge clk ) begin
if(!rst_n)
cunt<=0;
else if(cunt===100)
cunt<=0;
else
cunt<=cunt+1;
end
//t17 u18赋值
always @(posedge clk ) begin
if(!rst_n)begin
t17<=0;
end
elsecase(state)
ZERO:begin
if(cunt<35)
t17<=1;
else
t17<=0;
end
ONE:t17<=1;
default:;
endcase
end
always @(posedge clk ) begin
if(!rst_n)
u18<=0;
elsecase(state)
ZERO:begin
if(cunt<35)
u18<=1;
else
u18<=0;
end
ONE: u18<=1;
default:;
endcase
end
//状态的转移
always @(posedge clk ) begin
if(!rst_n)
state<=ONE;
else if(state==ONE&&data==8'h06)
state<=ZERO;
else if(state==ZERO&&data==8'h07)
state<=ONE;
else
state<=state;
end
// dis_t的缓存
always @(posedge clk ) begin
if(!rst_n)
dis_t<=0;
else if(dis>0)
dis_t<=dis;
else
dis_t<=dis_t;
end
//红外寻迹 正常模式 的描述 (状态的描述)
always @(posedge clk ) begin
if(state==ZERO)begin
if(dis_t<55)
dj<=4'b0000;
elsecase (D0)
2'b00: dj<=4'b0101;
2'b01: dj<=4'b1001;
2'b10: dj<=4'b0110;
default:dj<=4'b0000 ;
endcase
end
elseif(state==ONE)begin
if(dis_t<55)
dj<=4'b0000;
else case (data)
8'h01:dj<=4'b0101;
8'h02:dj<=4'b1010;
8'h03:dj<=4'b1001;
8'h04:dj<=4'b0110;
8'h05:dj<=4'b0000;
default: dj<=4'b0000;
endcase
end
else
dj<=4'b0000;
end
rx#(
. CLK_DIV ( 50_000_000 ),
. BIT ( 9600 )
)u_rx(
.clk(clk),
.rst_n(rst_n),
.rx (rx ),
.data (data ),//o
.valid(valid)
);
HC_SR04 u_hc(
/*input wire */. clk(clk ),
/*input wire */. rst_n(rst_n ),
/*input wire */. echo (echo ),
/*output wire */. trig (trig ),
/*output wire */. sel(sel ),
/*output wire */. seg(seg ),
. data (dis )// 精度0.1cm 小于40执行避障停止
);
endmodule
其中细节1 蓝牙连接tx相称于是 蓝牙担当到了数据通过tx发送给fpga的(fpga只写了rx)
https://i-blog.csdnimg.cn/direct/cc8088bc19ee40dbb5d03ff286348e7c.jpeg
其中细节2
https://i-blog.csdnimg.cn/direct/3b87bb7ae4484c139ffa92efca141842.png
其中细节3
红外线寻迹模块需要低速 这时候如果速度过快需要调整pwm
https://i-blog.csdnimg.cn/direct/a1906606c7f7427f85d003dcec75c505.png
ENA 与ENB为两马达的使能,需要调速的时候把这两个使能的跳帽去掉,然后在第一个入口接入一个pwm信号即可
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]