文章目录

  • 一.任务要求
  • 二.设计思路
  • 三.代码实现

一.任务要求

能够通过串口向FPGA芯片发送命令,以命令控制FPGA接收温度传感器数据,以及串口发送和数码管显示。该项目以前面学习的ds18b20温度传感器为例。

二.设计思路

①温度传感器返回数据是二进制的形式,为了方便后续处理,我们需要先将数据转换为bcd码的形式。

BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

在这里,我们采用的是8421BCD码,也就是采用4位二进制的前十组代码表示0~9。
方法是:将要转的二进制值向左移动,一旦表示一位十进制数的4位二进制的值大于4,就加上3。
具体如下:

②串口以ASCII的形式收发数据,所以我们需要两个模块用于ASCII码和16进制数据转换。
根据下表对串口输入数据进行操作:

ASCII转16进制数据(关键代码):
这部分用于将串口发送的数据转换成我们需要的16进制命令,而该命令以两个16进制数据组成,所以该模块需要一次输出连续处理的两个数据。

always@(posedge clk or negedge rst_n)beginif(!rst_n)begintmp <= 0;endelse if(din >= 8'h30 && din <= 8'h39)begin//0~9tmp <= din - 8'h30;endelse if(din >= 8'h41 && din <= 8'h46)begin//A~Ftmp <= din - 8'h37;endelse if(din >= 8'h61 && din <= 8'h66)begin//a~ftmp <= din - 8'h57;endend

16进制转ASCII(关键代码):

always@(posedge clk or negedge rst_n)beginif(!rst_n)begindata <= 0;endelse if(din_vld)begindata <= din + 8'h30;//16进制数与相应ASCII数相差8'h30endend

③命令解析,接收到串口发送的相关命令后,对数码管,串口发送以及温度采集的使能信号开启。
这里使用了一个帧结构,包含帧头,命令,帧尾。简单用一个状态机(含有三个状态,对应帧结构)
④设计一个控制模块,例化上述模块,对接收的串口数据进行转换,命令解析,温度传感器的数据进行转换,将各个使能信号传递给相应模块。

三.代码实现

【FPGA】串口以命令控制温度采集相关推荐

  1. FPGA串口收发(四):接收数据并转发,间隔时间发送

    FPGA串口收发(四):接收数据并转发,间隔时间发送 // Description: 串口收发:串口接收数据,内部生成数据,串口间隔特定时间发送数据 // 串口接收数据:串行信号线 1101_1000 ...

  2. 一、FPGA Cyclone Ⅳ OV5640图像实时采集系统设计

    一.FPGA Cyclone Ⅳ OV5640图像实时采集系统设计 1.系统框架 2.摄像头配置模块 3.图像数据拼接模块 4.SDRAM操作模块 5.乒乓缓存模块 6.VGA驱动模块 7.顶层模块 ...

  3. 基于单片机串口远程多路温湿度采集仿真-基于单片机ADC0809八路电压采集系统设计-基于单片机16x32点阵多模式显示仿真设计-基于单片机餐厅呼叫控制系统仿真设计-基于STM32单片机的智能水杯设计

    1220基于单片机ADC0809八路电压采集系统设计-毕设课设资料 数码管显示,测量八路电压表. #define addo (5.0/255.0) #define zero 0.005 //用于校准A ...

  4. 双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合

    ▌01 底层串口控制命令 1.调试说明 本文是继 调试机械臂一体化控制电路 博文中对于 两轴机械臂+机械爪整体控制板设计与机械爪控制调试 在 基于STM32F103双轴机械臂完整电路板 控制下进行串口 ...

  5. android 串口调试adb,Android系统 debug 技巧(最全最强adb 串口调试命令)

    串口调试命令 debug adb 命令(去掉adb shell即为串口命令) 发送广播 adb shell am broadcast -a com.android.test 打开activity ad ...

  6. FPGA 串口接收不准确,有误码

    FPGA 串口接收不准确,有误码 FPGA 的Uart接收时,出现接收不正确的分析 波特率计数值= 时钟频率/波特率 FPGA 的Uart接收时,出现接收不正确的分析 波特率计数值= 时钟频率/波特率 ...

  7. FPGA串口接收与发送详解( part 3 )

    之前的part1~2已经详解完了单个数据的串口接收与发送,链接如下: FPGA串口接收与发送 详解 (part 1 )_居安士的博客-CSDN博客 FPGA串口接收与发送详解( part 2 )_居安 ...

  8. FPGA控制ADS1256的ADC采集(三)

    前两篇分别详解了ADS1256的数据手册以及代码分析,这篇文章来介绍一下实际操作以及精准分析.附上上一篇文章的链接:FPGA控制ADS1256的ADC采集(二). 测试 (1)4.69V电压测试 实际 ...

  9. fpga串口打印计数值作业

    fpga串口打印计数值作业 作业4: 在前面第六讲作业3的基础上(带按键消抖的计数器流水灯作业作业3),实现功能: 当按键1操作时,向串口发送按键的编号,以及按键时6位计数器的数值大小.发送的内容为: ...

最新文章

  1. git 对之前的commit 进行重新签名 Resign
  2. 会看会吃还要会做——自制小摊上的鸡蛋卷饼
  3. mysql 导入sql文件,source命令
  4. 快速幂算法相关题目(Leetcode题解-Python语言)
  5. /proc 文件系统并使用/proc 进行输入
  6. python爬虫电影资源_python爬虫批量获取最新电影资源
  7. Telnet访问邮件服务器
  8. 无线RTU入库四川省地质灾害专业监测设备目录教程
  9. 个人云存储的两大强者比拼 百度云VS苹果iCloud
  10. java根据经纬度获取地址信息
  11. mysql 字段被截断_msyql存储数据时字段被截断
  12. 计算机主机散热器,如何自制计算机散热器
  13. 云堡垒机的作用_传统运维堡垒机和云堡垒机,哪个更好?
  14. 漫画:震惊!直觉误判类题目在面试时是如何坑人的?
  15. 黄色-图片识别引擎的一些心得
  16. STM32与威纶通触控屏通讯
  17. 为什么“1000000000000000 in range(1000000000000001)”在 Python 3 中如此之快?
  18. Segment Anything Model (SAM) 部分报告汇总
  19. 广告归因-让你彻底弄归因架构实现
  20. vue pdf下载及预览(移动端)

热门文章

  1. Twitter网页版推出通用搜索功能 复制链接
  2. python爬取推特的详细教程_使用Selenium Python进行网页抓取[Twitter+Instagram]
  3. 编写测试用例的基本方法之边界值
  4. 详解Axes()中的markersize
  5. Jekins安装配置教程
  6. XML解析为Document对象
  7. Authorization—权限控制流程
  8. win10安装MingW64
  9. 前端文件上传,这8种场景
  10. UML设计java程序_利用UML序列图设计Java应用程序详解