优化温度检测工程架构的心得

news2024/11/18 23:02:14

一、硬件与架构设计

本项目中用到的设备有:PC、FPGA、温度传感器DS18B20、蜂鸣器(beep)、数码管(segment)。

对于本次的项目,我的任务是将之前的温度检测项目的架构再进行细分,以及将相应的代码写出来并且能够上板调试出来。

之前的温度检测项目的架构主要分了九个模块:分别是uart_rx模块、ascii_hex模块、opcode模块、control模块、byte模块、bit模块、seg_disp模块、hex_ascii模块、uart_tx模块,具体的架构图如图1所示:

 

在上面温度检测架构(图1)的基础上,我将架构再进行了细分,分成了11个模块:分别是uart_rx模块、ascii_hex模块、opcode模块、control模块、byte模块、温度比较模块、温度计算转换模块、bit模块、seg_disp模块、hex_ascii模块、符号补全模块、uart_tx模块,具体的架构图如图2所示:

该项目架构细分前后的主要区别主要是:将细分之前的control模块分解成了control模块、温度比较模块、温度计算比较转换模块、符号补全模块、以及将opcode模块的输出设置为地址指令和数据指令一起输出。

二、架构细分后的优点

我个人认为有以下几个优点:

1、 让每一个模块的功能更加清晰,看起来比较直观(让刚接触到该项目的新手,能够比较短时间内了解各个模块的功能);

2、 让思路更加清晰,方便写相应地代码,减少因代码过多而导致容易发生错误的问题(细分前的control模块代码多,功能多,使得看或者写代码时有一定的难度);

3、 方便对每一个模块进行相应地测试(方便写测试文件)。

三、产生问题及解决方案

在细分该项目的过程中,我所遇到的问题有以下三点:

1、 对各个细分模块的输入和输出信号定义不太清晰(不知道该设置多少个输入和输出信号);

2、 对模块之前的闲忙信号定义比较模糊(不太清楚哪些模块之间需要定义闲忙信号);

3、 上板调试时,数码管上能够正常显示读取到的温度值,而pc上却出现了乱码(没有显示读取到的温度值);

对于以上提到的三个问题,我分别做了如下的处理:对于第一个问题、我先将能够想到的输入或者输出信号先定义好(多除少补),再结合细分架构之前对应的输入和输出进行定义;对于第二个问题、我先考虑各个模块之间的信号处理时间,看看哪些模块之间需要用到闲忙信号,最后再结合细分架构之前各个模块之前的闲忙信号设置;对于第三个问题、我使用signaltap从uart_tx模块、符号补全模块、hex_ascii模块、温度计算比较转换模块依次进行查找问题,最后查找出是某一个输出信号的位宽定义的问题。

总的来说,通过对本次温度检测项目架构细分,让我对该项目更加的了解了,以及在一定程度上扩展我的设计思路,同时也让我对signaltap的使用更加熟悉了(用signaltap找bug确实是一种很好的方法),还有就是也让我体验到了一丝的成就感。

以上就是本人优化温度检测工程架构的心得笔记,感兴趣的朋友可以在留言中与我进行交流讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 监控服务器GPU状态

文章目录1 前言2 监控GPU状态2.1 使用nvidia-smi2.2 使用gpustat1 前言 深度学习需要使用GPU进行训练学习,在训练我们的模型时,我们需要直到GPU的状态,以帮助我们监控程序的运行。下面就介绍几种简单的方式来展示GPU的状态 2 监控GPU状态 …

基础算法 - 常见算法模板题(最简洁写法)【上】

目录 快速排序 第k个数 归并排序 逆序对的数量 二分查找 数的范围 浮点数二分 高精度 高精度加法 高精度减法 高精度乘法(高精度x低精度) 高精度除法 前缀和与差分 前缀和 子矩阵的和 差分 差分矩阵 快速排序 思路: 确认分界点&#…

【操作系统】Linux性能优化诊断pidstat+mpstat详解

文章目录1.CPU压测环境准备2.pidstatmpstat命令详解3.CPU密集型应用案例实战4.IO密集型应用案例实战5.CPU多进程调度案例实战6.pidstat命令详解进阶7.性能监控命令vmstat详解8.CPU上下文切换案例实战9.top、mpstat、pidstat、vmstat中wait含义1.CPU压测环境准备 (1…

以人为本的方法打击身份欺骗

身份的概念是动态的——它一直在变化。在人类历史的大部分时间里,一个人的身份由他们的名字、他们的家庭关系和他们居住的地方组成。身份只有三四个元素。在过去的 100 年里,随着护照和其他身份证明文件的广泛使用,人们的身份也增加了额外的元…

Qt5 高分辨率支持

1. 结论 先说结论,在Qt5版本没有比较完美的解决方案。如果使用Qt系统提供的支持方式会出现各种小问题。如果可以的,建议升级为Qt6版本,能够更好支持高分辨率屏。而最终我在Qt5.12.12版本中,采用的方案是通过各种方法组合解决。 详…

【我和openGauss的故事】openGauss获奖项目讲解

文章目录前言参赛方案介绍系统需求分析主要功能模块设计思路字段基本数据分析页面及功能设计功能函数视图设计技术亮点及优势商业模式及市场前景功能测试项目总结前言 2022年8月30日华为鲲鹏应用大赛openGauss赛道上海赛区第三名获奖作品开源分享,我们团队参加本次…

再学C语言23:分支和跳转——if语句

一、简单if语句 if语句被称为分支语句(branching statement)或选择语句(selection statement),功能是让程序选择分支中的一条前进 if语句一般形式: if(expression)statement 如果expression的值为真&am…

【数据结构】LeetCode移除链表元素、反转链表、链表的中间结点

目录 一、移除链表元素 1、题目说明 2、题目解析 二、反转链表 1、题目说明 2、题目解析 三、链表的中间结点 1、题目说明 2、题目解析 一、移除链表元素 1、题目说明 题目链接:移除链表的元素 给你一个链表的头节点 head ,和一个整数 val,…

蓝牙资讯|苹果获得智能戒指专利,可用于交互 AR / VR 头显设备

美国商标和专利局(USPTO)批准并公示了苹果的一项智能戒指专利。这款戒指主要作为苹果混合现实头显设备的辅助交互设备,但可以和 iPhone、iPad、AirPods、Mac 和其它设备一起使用。 苹果希望通过智能戒指来改善 AR / VR 世界的交互体验&…

工程项目管理系统源码-简洁+好用+全面-工程项目管理系统

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承…

javafx实现的工资管理系统

🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习…

ESP8266 SDK开发(ESP8266_RTOS_SDK 3.x)之AiThinkerIDE_V1.5.2安装、配置以及编写烧录一个程序

【本文发布于https://blog.csdn.net/Stack_/article/details/128509864,未经允许不得转载,转载须注明出处】 前言 乐鑫官方不搞IDE,安信可搞了IDE,但是各版本之间安装配置有差异,还没有文档说明。官方安装配置教程不完…

CTFHUB技能树-SSRF-redis协议踩坑

在gopherus上面输入命令:python gophers.py --exploit redis 将自动生成的代码url解密可以得到 如果是get传参需要再进行一次url编码 虽然蚁剑连接不上但可以用urlshell?cmdls / 获取flag 接下来看可以连接蚁剑的代码 文件名最好还是用shell.php 我测试了s.…

【C++初阶8-vector实现】没想的那么简单!

前言 本期带来vector实现,和以前的顺序表差别不大。 博主水平有限,不足之处望请斧正! 预备知识 实现参考SGI的stl30 我们看这种源码,要抓框架看:首先找类,看它的属性,再看方法 template &l…

全方位解析 C 端和 B 端的产品特性

近年来,互联网进入下半场,C 端流量红利逐渐消退,很多企业转向了 B 端服务,随之而来的是产品设计者的转型,现在越来越多的 C 端产品设计师开始涉足到 B 端产品的设计,这是一个知识迁移的过程,需要…

自动驾驶专题介绍 ———— 摄像头

文章目录介绍工作原理实现功能分类按通信协议区分按不同感光芯片按像元排列方式介绍 摄像头可以采集汽车周边的图像信息,跟人类的眼睛最为接近。摄像头可以拥有较广的视场角、较大的分辨率,还可以提供颜色和纹理等信息。这些信息对于实现自动驾驶功能是存…

Mentor-dft 学习笔记 day48-OCC With Capture Enable Clock Control Operation Modes

OCC With Capture Enable 有一个OCC具有capture_enable输入,可以与自由运行的慢速时钟一起使用。当OCC指定为启用捕获(capture_trigger:capture_en)时,在输入自由运行的慢时钟上添加时钟门控器,以从自由运行的时钟输…

影响宝宝大脑发育的6个坏习惯,你可能每天都在做

“望子成龙,望女成凤”这几乎是每个父母的愿望。虽然有一个高智商的天才宝宝太难了,但从不妨碍父母希望孩子更健康、更聪明。所以大家都比较关注宝宝的大脑发育,希望宝宝的大脑发育更好,长大后更聪明。但在日常生活中,…

android 12+从后台启动FGS限制

后台启动FGS限制 限制简介 以 Android 12(API 级别 31)或更高版本为目标平台的应用在后台运行时无法启动前台服务,少数特殊情况除外。 如果应用程序在后台运行时尝试启动前台服务,而前台服务不满足其中一种异常情况,系…

vue前端打包Docker镜像并nginx运行

首先说明咱们的前端项目是基于Vue的,反向代理使用的是nginx 1.打包vue前端项目生成dist文件夹上传至服务器 新建一个文件夹,叫vueDockerTest,下面的文件都需要。 cert是你存放ssl证书的文件夹,nginx.conf 是nginx的配置文件&am…