基于发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信号即可

相关推荐
GateWorld1 天前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之点屏五 miniLVDS
fpga开发·lcd显示·fpga点亮屏幕·minilvds
nuoxin1142 天前
WILX1200HC-5TG144I替代 LCMXO2-1200HC-5TG144I(富利威)
人工智能·嵌入式硬件·fpga开发·电脑·硬件工程·dsp开发
Bahair_2 天前
【FPGA】使用fdatool设计滤波器系数,使用FIR Compiler导入系数联合滤波
fpga开发
qq_411262422 天前
硬件是ESP32-P4连接LAN8720A,正常初始化之后,设备DHCP失败
stm32·单片机·fpga开发
第二层皮-合肥2 天前
【数据采集专栏】时钟同步(有时钟卡方案)
fpga开发
XINVRY-FPGA2 天前
XCKU035-2FBVA676I AMD Xilinx Kintex UltraScale FPGA
arm开发·嵌入式硬件·网络安全·fpga开发·硬件工程·信号处理·fpga
米琪脆脆屋2 天前
0-1学习FPGA之底层资源——LUT
fpga开发·fpga
TTGGGFF2 天前
ModelSim SE 10.1c 超详细安装与激活保姆级教程(图文详解 2026 仅供学习)
学习·fpga开发
Aaron15883 天前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
暴风雨中的白杨3 天前
fpga复位电平与资源消耗对比测试
fpga开发