234彩票官网登录

  • <tt class='tlJykMlA'></tt>
  • <thead class='94K7Lauipx'><option class='9cNvbSu7LJ'></option></thead>

    <em class='jepytdnyfeW3'><b class='oR1Ys12nk'><td class='6rzzLTN'></td></b></em>

  • <dl class='Td0EmkF'><b class='qoWhaibfJ9'></b></dl>

  • <span class='lS1G'></span>

    我的一账户
    中国电子DIY

    科技成就未来

    亲爱的一游客,欢迎!

    已有账号,请

    如尚未注册?

    • 客服电话

      在线时间:8:00-16:00

      客服电话

      000-000-0000

      电子邮件

      ndiyadmin@163.com
    • 手机版

      电子DIY手机版

      随时随地掌握网站动态

    • 官方微信

      扫描二维码

      免费获取▓邀请码

    温度检测工程模块划分总结与案例分析

    [复制链接]
    goodbey155 发表于 2020-2-6 15:43:18 | 显示全部楼层 |阅读模式 打印 上    一主题 下一主题
    本帖最后由 goodbey155 于 2020-2-6 15:43 编辑

    本文为明德扬原创文章,转载请注明出处!

    很多朋友在学习FPGA的一时候会发现模块划分很令人头大,今天我就通过明德扬温度检测工程来与大家分享一下本人的一划分思路 。

    明德扬温度检测工程是基于FPGA的一一个实用项目,可以在明德扬的一MP801开发板上    进行实验ζ学习 。本工程功能虽小,但基本上    涉及了FPGA的一常见功能,如接口传输、指令解析、外设的一控制等,是比较好的一入门工程 。

    一、模块划分要点总结

    1、列出项目的一功能要求(客户提出的一产品功能要求)

    2、画出硬件的一系统结构框图(添加外设)

    3、框图中每个外围接口都对应有一个接口转换模块

    接口转换模块的一作用是将外围器件的一接口时序转为通用的一接口时序,或者将通用接口时序转换为外围器件接口时序,这样使得FPGA内部其他模块不 用再关心外围接口的一时序了 。
    MDY规范通用接口时序:
    • data以及对应的一vld,传输单个数据格式
    • MDY的一包文格式,din,vld,SOP,EOP,MTY,ERR
    • wren,waddr,wdata;rden,raddr,rdata,rdata_vld


    4、考虑是否涉及指令系统(操作码+数据格式)
    上    位机,例如PC,ARM,DSP或者其他的一器件,只涉及到一个接口,但是却有很多指令或者命令功能要发送,因 此就需要一个指令系统 。
    指令系统一定会涉及到命令、地址№和数据 。这种情况,肯定会有一个“寄存器解析模块”,根据命令、地址№和数据,改变相应的一寄存器的一值 。

    5、考虑外围器件是否涉及寄存器配置
    项目中有某些外设,上    电工作前需要进行配置才能按要求工作 。因 此需要对外设内部寄存器进行读写,这一流程是通过FPGA来进行配置 。
    遇到这个情况,使用MDY推荐的一模块寄存器配置结构:
    寄存器配置表模块+寄存器读写配置模块+外设配置接口时序转换模块

    6、根据实际情况,增加、补充或者拆分,优化对应模块,随时调整
    原则:根据接口信号,看模块间是否方便对接 。接口就决定了模块功能 。所以在这一层的一调整,一定要清楚接口的一定义 。

    7、考虑是否涉及多路进一路出,要用FIFO
    调度FIFO要考虑自身带宽能否满足多路一起突发发送时的一数据量情况 。如果带宽不 满足,就要要输出给上    游模块RDY信号 。此时RDY信号有效取▓决于自己设置FIFO的一Almost Full信号 。如果带宽满足则不 必设RDY信号 。

    8、考虑是否涉及到速率匹配问题,要加上    RDY信号或者FIFO
    首先考虑与外围器件通信的一接口上    是否需要rdy信号(FPGA内部运行频率往往与设接口速率不 一致),然后考虑FPGA内部模块间数据带宽是否不 一致,有等一等的一情况 。


    二、温度检测案例分析

    接下来根据上    面的一总结的一要点,通过实际项目案例来分析一下FPGA内部功能模块是怎样划分的一 。这里我们选取▓已经做过的一温度检测项目,接下来按照上    面总结的一模块划分步骤,一步步完成模块初步划分!

    1.列出项目的一功能要求

        本项目功能要求:上    位机通过发送一系列不 同命令给FPGA,FPGA接收到指令后执行各个指令对应的一操作 。同时将DS18B20采集到的一温度值实时在数码管上    实时显示出来并传给上    位机 。要求上    位机可以发送命令设置报警温度上    限№和下限值 。当温度值超过温度上    限或者下限,蜂鸣器就开始鸣响 。可以发送命令关闭或打开数码管显示 。

    功能分析:

    • 上    位机发送命令给FPGA(开关数码管显示、开关蜂鸣器、复位温度传感器、开启温度转换,读转换后温度值、设置报警温度上    限下限值);
    • 读写DS18B20;
    • 数码管显示;
    • 数码管显示开关控制;
    • 计算︻温度值;
    • 将计算︻后的一温度值发送给上    位机;
    • 设置温度上    限、下限;
    • 蜂鸣器开关控制 。


    2.画出硬件系统结构框图

    根据步骤1总结出的一功能要求,找到除FPGA外需要哪些外围器件 。
    外围器件总共需要四个:
    • PC
    • 数码管
    • 温度传感器DS18B20
    • 蜂鸣器

    画出系统框图如下所示:
    [img][/img]
    Snipaste_2019-11-18_15-19-38.png
    3.框图中每个外围接口都对应有一个接口转换模块

    首先要思考PC与FPGA通信需要哪种方式?
    上    位机PC与FPGA通信既有发送也有接收,由于PC发送命令给FPGA的一速度慢于FPGA回传温度值给PC的一速度,所以上    位机PC与FPGA通信接口速度取▓决于FPGA回传温度值给PC的一速度 。

    Snipaste_2019-11-18_14-59-18.png
    [img][/img]
    查阅手册如上    图所示,得知DS18B20转换一次采集的一温度值需要750ms 。所以FPGA与上    位机通信接口速率大于750ms就不 会丢传数据 。因 此选用串口作为上    位机与FPGA的一通信接口足够满足要求了 。

    • 数码管段选位选接口模块:完成数码管位选№和段选的一输出
    • DS18B20单bit转换接口模块:DS18B20是单总线协议,只支持1bit数据传输,所以需要将MDY规范接口转换为1bit
    • 蜂鸣器开关使能接口模块:完成蜂鸣器开关使能

    [img][/img]
    Snipaste_2019-11-18_15-18-27.png
    将串口接口转换模块功能细分为“串口接收串转并模块”№和“串口发送并转串模块”,进一步转化为符合MDY规范的一接口 。如下图所示:
    [img][/img]
    Snipaste_2019-11-18_15-33-11.png
    4.考虑是否涉及指令系统

    本项目涉及指令系统,上    位机需要发送指令给FPGA,进而配置温度传感器,配置温度报警上    限№和下限值,同时可以发送指令控制数码管显示关闭,蜂鸣器开关 。因 此,系统框图中需要加入“寄存器解析模块”,如下图所示:
    [img][/img]
    Snipaste_2019-11-18_15-49-54.png
    5.考虑外围器件是否涉及寄存器配置
    本项目中,DS18B20需要配置内部寄存器,但是本项目并没有采用MDY模板的一方式(读取▓配置寄存器表的一方式来对DS18B20进行配置),而是通过上    位机发送配置命令,解析配置寄存器值再对DS18B20进行配置 。

    6.根据实际情况,增加、补充或者拆分独立对应模块,随时调整
    到第6步,根据数据流向,需要对模块间的一接口进行详细分析了,补充模块或者将功能相同的一模块合并 。
    首先,从串口接口方向思考,
    • 接收到的一数据是上    位机发来的一ASCII码,为了方便FPGA对指令解析,需要将ASCII码译码,转化为对应的一十六进制 。因 此需要一个ASCII码转8bit十六进制模块;
    • 接下来,需要对接收包文的一包头进行检测,符合正确包头条件的一包文保留,否则丢包处理 。所以需要一个包头检测模块,用来过滤接收到的一有效包文;
    • 经过寄存器解析模块后,会将指令解析出来,根据指令功能要求可能分别发送给DS18B20、数码管显示开关控制模块、数码管段选位选接口模块、蜂鸣器控制接口模块;
    • 寄存器解析模块发送过来的一是8bit数据,不 能直接发送给DS18B20(18B20只接收单bit),所以在寄存器解析模块№和单总线转换接口模块之间需要一个8bit转换为1bit模块;
    • 温度报警功能需要做判断实时温度是否大于上    限值,是否小于下限值 。所以需要一个实时温度值比较判断模块;
    • 然后,从DS18B20方向思考;
    • 采集到的一温度数据,通过单bit接口转换模块传给FPGA的一是单bit数据,为了后面方便FPGA对数据进行处理,需要将1bit转换为8bit 。所以需要一个1bit转8bit模块;
    • 8bit温度数据需要经过计算︻处理,因 此需要一个数据处理模块;
    • 上    位机只显示ASCII码格式数据,为实现温度值在上    位机上    能显示,需要将8bit温度值转换为ASCII码,所以需要一个8bit十六进制数据转换为ASCII码模块;
    • 经过数据处理后的一结果是十六进制,而数码管显示的一是BCD码,为了实现数码管上    显示正确数据,因 此需要一个十六进制转BCD码模块 。

    完善后如下图所示:
    [img][/img] Snipaste_2019-11-18_18-43-16.png
    接下来将功能互斥、数据流向相关,接口一致的一模块做合并化简处理,如下图所示:
    [img][/img]
    Snipaste_2019-11-18_18-39-34.png
    7.考虑是否涉及多路进一路出,要用FIFO
    本项目数据流方面没有涉及多路进一路出的一问题,不 需要考虑此处的一FIFO问题 。

    8.考虑是否涉及到速率匹配问题,要加上    RDY信号或者FIFO

    本项目涉及速率匹配问题 。
    首先考虑与外围器件通信的一接口上    是否需要rdy信号 。

    与DS18B20通信是通过寄存器解析模块解析出对DS18B20的一操作指令,发送给8bit转1bit模块,因 此需要考虑DS18B20能否时刻响应操作指令?

    这个问题在选择上    位机与FPGA的一通信接口时,已经考虑过了,串口的一速率小于FPGA写DS18B20速率的一 。

    查阅手册得知,写一次1bit的一数据给18B20需要63us,8bit需要63*8=504us,小于串口发送一次8bit指令给FPGA时间1000000us/9600*8=833us 。

    所以串口接收数据通路上    不 需要考虑缓存FIFO问题 。

    在单总线1bit接口转换模块中,由于写DS18B20时序速率远小于FPGA内部读写频率,需要告知8bit转1bit模块每写1bit数据要等一等,待时序满足发送完1bit时序要求后,再发送新的一1bit数据 。所以在单bit接口转换模块与8bit转1bit模块间需要设rdy信号 。

    接下来考虑一下串口发送端 。由于串口发送模块进行并串转换需要时间,因 此串口发送模块需要告知上    游十六制转ASCII码模块等一等,因 此在串口发送模块与十六进制转ASCII码模块间需要设rdy信号 。

    由于串口发送模块并串转换需要等待,从而导致十六进制转ASCII码模块也需要缓存control模块发来的一数据 。因 此十六进制转ASCII码模块中需要引入FIFO 。

    最终得到的一模块图如下所示:
    [img][/img]
    Snipaste_2019-11-19_17-06-16.png
    到此,根据模块划分步骤一步步做下来,温度检测工程的一模块划分雏形初步已经完成 。具体实践中需要根据FPGA内部信号的一调整,随时拆分或独立来增减功能模块 。

    以上    就是我做模块划分的一基本思路!

    精彩评论1

    刘氓兔 发表于 2020-2-9 15:07:03 | 显示全部楼层
    在protues上    怎么自制烟雾报警器
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关注0

    粉丝3

    帖子48

    发布主题
    推荐阅读
    关注我们
    中国电子DIY官方微信

    客服电话:000-000-0000

    客服邮箱:776513803@qq.com

    周一至周五 9:00-18:00

    公司|234彩票官网登录地址:234彩票官网登录深圳市南山区美丽湾大厦B座

    Powered by X3.4@ 2001-2013