基于发FPGA 练手智能小车顶层文件

c 复制代码
`timescale 1ns / 1ps

module top(
    input    wire          clk   ,
    input    wire          rst_n ,
    input    wire          rx    ,
    input    wire          echo  ,
    input    wire [1:0]    D0    ,
    output   reg  [3:0]    dj    ,
    output   wire          trig  ,
    output   wire [3:0]    sel   ,
    output   reg           t17   ,
    output   reg           u18   ,
    output   wire [7:0]    seg         
    );

wire         valid  ;
wire  [13:0] dis    ;
wire  [7:0]  data   ;
reg   [13:0] dis_t  ;
reg   [1:0]  state  ;
reg   [15:0] 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
    else  case(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;
    else  case(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;
        else  case (D0)
            2'b00: dj<=4'b0101;
            2'b01: dj<=4'b1001;
            2'b10: dj<=4'b0110;
            default:dj<=4'b0000 ;
        endcase
    end
    else  if(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  [3:0] */  . sel  (sel     ),
    /*output    wire  [7:0] */  . seg  (seg     ),
                                . data (dis     )// 精度0.1cm 小于40执行避障停止
    );
endmodule

其中细节1 蓝牙连接tx相当于是 蓝牙接受到了数据通过tx发送给fpga的(fpga只写了rx)

其中细节2

其中细节3

红外线寻迹模块需要低速 这时候如果速度过快需要调整pwm

ENA 与ENB为两马达的使能,需要调速的时候把这两个使能的跳帽去掉,然后在第一个入口接入一个pwm信号即可

相关推荐
XINVRY-FPGA10 小时前
EPM240T100I5N Altera FPGA MAX II CPLD
人工智能·嵌入式硬件·fpga开发·硬件工程·dsp开发·射频工程·fpga
第二层皮-合肥15 小时前
FPGA实现ETH接口
单片机·嵌入式硬件·fpga开发
璞致电子18 小时前
【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
嵌入式硬件·fpga开发·fpga·软件无线电·sdr
陌夏微秋19 小时前
FPGA硬件设计2 最小芯片系统-ZYNQ7020/7010
嵌入式硬件·fpga开发·硬件架构·硬件工程·信息与通信·智能硬件
风已经起了1 天前
FPGA学习笔记——IIC协议简介
笔记·学习·fpga开发
逐梦之程2 天前
FPGA-Vivado2017.4-建立AXI4用于单片机与FPGA之间数据互通
fpga开发
XINVRY-FPGA2 天前
10CL016YF484C8G Altera FPGA Cyclone
嵌入式硬件·网络协议·fpga开发·云计算·硬件工程·信息与通信·fpga
嵌入式-老费3 天前
产品开发实践(常见的软硬结合方式)
fpga开发
FakeOccupational3 天前
【电路笔记 通信】AXI4-Lite协议 FPGA实现 & Valid-Ready Handshake 握手协议
笔记·fpga开发
I'm a winner3 天前
FPGA+护理:跨学科发展的探索(五)
fpga开发