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

相关推荐
嵌入式-老费4 小时前
Linux Camera驱动开发(fpga + csi rx/csi tx)
fpga开发
ALINX技术博客16 小时前
【202601芯动态】全球 FPGA 异构热潮,ALINX 高性能异构新品预告
人工智能·fpga开发·gpu算力·fpga
JJRainbow1 天前
SN75176 芯片设计RS-232 转 RS-485 通信模块设计原理图
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
s9123601011 天前
FPGA眼图
fpga开发
北京青翼科技1 天前
【PCIe732】青翼PCIe采集卡-优质光纤卡- PCIe接口-万兆光纤卡
图像处理·人工智能·fpga开发·智能硬件·嵌入式实时数据库
minglie11 天前
verilog信号命名规范
fpga开发
XINVRY-FPGA1 天前
中阶FPGA效能红线重新划定! AMD第2代Kintex UltraScale+登场,记忆体频宽跃升5倍
嵌入式硬件·fpga开发·硬件工程·dsp开发·fpga
南檐巷上学1 天前
基于FPGA的音频信号监测识别系统
fpga开发·音频·verilog·fpga·傅立叶分析·fft·快速傅里叶变换
Aaron15882 天前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理
碎碎思2 天前
当 FPGA 遇见怀旧计算:486 与 Atari ST 的硬件级重生
fpga开发