刚进实验室的第一个项目——做一个寻线小车,我就用FPGA芯片尝试做了一个。

用到的零件有:车模一个、一块L298N驱动模块、一块cyclone IV芯片(具体型号是EP4CE6E22C8N)、四个电机、一个电源、一个四灰度寻迹模块(或者红外寻迹模块)。

以下是四灰度寻迹模块输出的高低电平及小车对应的功能:

以下是具体代码:

module  xunji_car
#(
    parameter   CNT_MAX  =  19'd49_9999  ,
    parameter   CNT_NUM  =  19'd25_9999  
)
(
    input    wire         sys_clk    ,
    input    wire         sys_rst_n  ,
    input    wire  [3:0]  in         ,
    
    output   reg   [3:0]  led_out    ,
    output   reg          ENA        ,
    output   reg          ENB        ,
    output   reg   [3:0]  out         
);
 reg    [18:0]  cnt         ;
 reg            cnt_flag    ;
 reg            pwm_out     ;
 
always @ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0 )
    cnt <= 19'd0  ;
    else if(cnt == CNT_MAX)
    cnt <= 19'd0  ;
    else cnt <= cnt + 19'd1  ;

always @ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0 )
    cnt_flag <= 1'b0 ;
    else if (cnt == CNT_NUM - 19'd1)
    cnt_flag <= 1'b1 ;
    else cnt_flag <= 1'b0 ;
    
always @ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
    pwm_out <= 1'b0 ;
    else if(cnt_flag == 1'b1)
    pwm_out <= ~pwm_out ;
    else if(cnt == CNT_MAX)
    pwm_out <= 1'b0 ;
    else pwm_out <= pwm_out ;
    
always @ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
      begin
      led_out <= 4'b0000 ;
      ENA     <= 1'b0    ;
      ENB     <= 1'b0    ;
      out     <= 4'b0000 ;
      end
    else case (in)
    4'b0000 : begin  led_out <= 4'b0000 ; ENA <= 0       ;ENB <= 0       ; out <= 4'b0000 ;end
    4'b0001 : begin  led_out <= 4'b1110 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b1001 ;end
    4'b0010 : begin  led_out <= 4'b1110 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b1001 ;end
    4'b0011 : begin  led_out <= 4'b1110 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b1001 ;end
    4'b0100 : begin  led_out <= 4'b0111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0110 ;end
    4'b0101 : begin  led_out <= 4'b0111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0110 ;end
    4'b0110 : begin  led_out <= 4'b1111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0101 ;end
    4'b0111 : begin  led_out <= 4'b1110 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b1001 ;end
    4'b1000 : begin  led_out <= 4'b0111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0110 ;end
    4'b1001 : begin  led_out <= 4'b1110 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b1001 ;end
    4'b1010 : begin  led_out <= 4'b1110 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b1001 ;end
    4'b1011 : begin  led_out <= 4'b1110 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b1001 ;end
    4'b1100 : begin  led_out <= 4'b0111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0110 ;end
    4'b1101 : begin  led_out <= 4'b0111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0110 ;end
    4'b1110 : begin  led_out <= 4'b0111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0110 ;end
    4'b1111 : begin  led_out <= 4'b1111 ; ENA <= pwm_out ;ENB <= pwm_out ; out <= 4'b0101 ;end
    default : begin  led_out <= 4'b0000 ; ENA <= 0       ;ENB <= 0       ; out <= 4'b0000 ;end
    endcase
 
endmodule

基于Verilog HDL 和FPGA的寻线小车设计代码相关推荐

  1. matlab4fsk软件解调代码,4fsk调制与解调基于Verilog HDL语言

    [实例简介] 4fsk调制与解调基于Verilog HDL语言 [实例截图] [核心代码] 4fsk调制与解调基于VerilogHDL语言 └── kechengsheji ├── dac0832(1 ...

  2. 《Verilog HDL与FPGA数字系统设计》书籍试读体验

    文章目录 前言 第一部分:数字系统基础 第二部分:数字系统设计实践 第三部分:可编程片上系统 总结 前言 最近参加一个面包板社区的图书试读活动:<Verilog HDL与FPGA数字系统设计&g ...

  3. 基于Verilog HDL的数字秒表、波形发送器等设计

    基于Verilog HDL的数字秒表设计 一.EDA 二.基于Verilog HDL的数字秒表设计 1. 用Verilog HDL设计一个数字跑表,所需引脚和功能如下所示: 2.代码示例 3. 结果: ...

  4. 基于Verilog HDL的数字时钟

    目录 一.实验目的 二.实验概述 三.实验过程 一.实验目的 1.学习相关的设计方法及原理 2.学习设计方法 二.实验概述 基于Verilog HDL设计一个时钟 三.实验过程 新建一个工程 选择芯片 ...

  5. 基于MSP432控制的红外循迹爬坡小车设计报告

    基于MSP432控制的红外循迹爬坡小车设计报告 竞赛选题:坡道行驶电动小车(C题) 摘要 本小车基于TI的MSP432平台,设计了可以沿指定路线在坡道上循迹行驶的四轮小车.小车采用L298N驱动芯片控 ...

  6. 基于STM32F103的红外循迹避障小车设计(含Proteus仿真)

    基于STM32F103的红外循迹避障小车设计 红外循迹及红外避障实现较简单,无论是51单片机还是STM32单片机,其例程随处可见.但是完全可以运行的Proteus仿真,开源的并不多,更不要说基于STM ...

  7. (多图) 基于Verilog HDL的FIR数字滤波器设计与仿真

    引言:数字滤波器是语音与图像处理.模式识别.雷达信号处理.频谱分析等应用中的一种基本的处理部件,它能满足波器对幅度和相位特性的严格要求,避免模拟滤波器所无法克服的电压漂移.温度漂移和噪声等问题.有限冲 ...

  8. 基于Verilog HDL与虚拟实验平台的【计算机组成】与CPU实验第三章:三态门和多路器

    1判断(2分) 数字逻辑电路有两大种类型,组合逻辑电路和时序逻辑电路,组合逻辑电路"没有记忆",输出由输入决定,时序逻辑电路"有记忆",输出由当前输入和以前的状 ...

  9. 基于Verilog HDL与虚拟实验平台的【计算机组成】与CPU实验第四章:七段译码器

    1单选(2分) 2-4译码器有____位输入,位输出,在输出的所有位中,只有其中1位有效,通常在计算机里用作, 有一些译码器设有一个和多个使能控制输入端,又成为片选端,用来控制允许译码或禁止译码. A ...

最新文章

  1. SAP PM纠正维护
  2. VS2017 Pro未能找到路径“……\bin\roslyn\csc.exe”的解决方案
  3. 开发日记-20190906 关键词 当当云阅读 ipad
  4. **23.m阶的B-树和B+树的主要区别
  5. php yii 插入,Yii2 批量插入、更新数据实例
  6. phppage类封装分页功能_PHP封装的page分页类定义与用法完整示例
  7. javascript 请求web service
  8. 零基础自学用Python 3开发网络爬虫(二): 用到的数据结构简介以及爬虫Ver1.0 alpha...
  9. Intel酷睿前世今生(二)
  10. android实现自动触摸,Android编程开发之多点触摸(Multitouch)实现方法
  11. 头部姿态估计:《Fine-Grained Head Pose Estimation Without Keypoints》
  12. 北京地标《信息化项目软件开发费用测算规范》完成公开征求意见
  13. ssdt函数索引号_技术分享 - 32位系统上获取SSDT表地址以及从中获取指定SSDT函数的地址...
  14. Carp后端开发文档
  15. 阿里云认证是什么?报考要什么条件?
  16. cad.net 图层隐藏 IsHidden 用法 eDuplicateRecordName 报错
  17. Android实战技巧之十:获得屏幕物理尺寸、密度及分辨率
  18. 2021年华为云618年中钜惠,惊喜“惠”聚!
  19. linux进入vi界面后命令,教你Linux-vi编辑器的常用命令
  20. 【Linux】部署web项目

热门文章

  1. 读书笔记(三)工作票数据挖掘
  2. 小白学习MySQL - 数据库软件和初始化安装
  3. Android 定时器+倒计时 仿淘宝秒杀
  4. WordPress 设置 wp_remote_get()用户代理
  5. XDR的过去、现状与未来
  6. dompdf php,php – 如何在Dompdf中添加页眉和页脚?
  7. 4 利用逻辑门实现加法器和减法器
  8. 腾达ac23虚拟服务器怎么设置,腾达(Tenda)AC23 如何设置上网? | 192路由网
  9. 用matlab画波特图
  10. Matlab如何打开nc文件?