数字系统实验——第14-15周任务——大综合1、2

HNU数字系统 专栏收录该内容
6 篇文章 1 订阅

工程:链接:https://pan.baidu.com/s/1c63rjCudZxIzKx9-UuVe_g
提取码:0ev5
仅供参考

任务书

0.简介

初步设计一个复杂数字系统-传感器数字采集系统,理解扩展接口的超声波测距和通用USB-TTL串口电路原理;实现其实作模块功能验证;分层次编写VHDL完成系统模块优化方案,验证平台,FPGA串口与PC上位机软件(可选),并验证调试

1.传感器数字采集系统实验-1

时间:1周
步骤:
阅读实验教材综合设计的概述部分P215基本原理。
阅读服务器网络课程资源中的目标板。
查阅相关网络资源。
实操:

1.C级任务(80%)

阅读教材、观察传感器视频(两组特定距离的trig和echo的示波器捕获波形),认识超声波测距传感器工作原理,在Proteus上用SRF04传感器、蜂鸣器BUZZER和数字电路芯片设计一个能单次启动测距系统电路。参考视频见课程网页内容,如下:
在这里插入图片描述
要求:
分析波形、计算距离并说明。
数码管上显示出距离远近程度(8位距离采样值)
蜂鸣器能根据距离远近发出多种不同频率组合声音。
在这里插入图片描述

步骤:
①课程网页上提供了proteus8.8,卸载自己电脑中原来安装的低于8.8版本的proteus,安装高于8.8版本的proteus8.8

安装时注意点如下:
卸载原来的proteus安装新版本时,除了卸载原有的软件之外,还须删除注册表中的信息:删除注册表HKEY_LOCAL_MACHINE下的SOFTWARE中Labcenter Electronics选项,在该选项上点击鼠标右键,再选择“删除”;如不在该路径下 ,则查找HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node中的Labcenter Electronics选项,在该选项上点击鼠标右键,再选择“删除”。

②观看视频,了解整个超声波测距工程的演示与测量过程,对超声波测距传感器的工作原理进行整体认知;
③仔细看trig和echo信号的示波器波形,对其进行分析,了解其计算过程并说明;

在这里插入图片描述

④在Proteus上用SRF04传感器、蜂鸣器BUZZER和和数字电路芯片设计一个能单次启动测距系统的电路。
⑤该电路(proteus完成的)用数码管显示出距离远近程度(8位距离采样值)。参考上周的数码管数据显示的proteus工程。
⑥加入蜂鸣器能根据距离远近发出多种不同频率组合声音。
实验板上实例中蜂鸣器实际声音的波形图参考如下:
蜂鸣器波形具有间歇式单音波形特点如第二张图所示,第一张是第二张的高频局部放大图。改变单音间歇时间可以调节蜂鸣器音效的缓急程度。

在这里插入图片描述
在这里插入图片描述

2.传感器数字采集系统实验2

时间:1周
步骤:
阅读实验教材综合设计的概述部分P216-P217功能框图和逻辑功能划分。
阅读P180-181参数化计数器与分频电路。
阅读服务器网络课程资源中的目标板。
查阅相关网络资源。
实操:

B级任务(90%)

在QuartusII上,设计一个每1秒启动的距离连续测量与计算系统电路。
要求:
①以24MHz作为输入时钟源,规划好时序分配并记录。
时序应包括:
超声波模块,用于产生Trig启动信号的脉冲的时钟源和用于echo脉宽计数器的时钟信号。√
状态机, 用于切换每1秒开始新一轮测量的时钟源。√
蜂鸣器,用于产生上周内容中单音频率和间隔的时钟源。√
数码管,用于产生多位数码管扫描频率和显示数据刷新时间的时钟源。
②以24MHz作为输入时钟源,阅读P180-181参数化计数器与分频电路,VHDL完成要求①中所有模块时钟信号的分频电路设计并仿真验证。
③输入输出数据与控制信号设计,按顺序填写各个模块的记录表。
在这里插入图片描述
注意:
模块划分参考图如下,数码管显示④和蜂鸣器发声部分⑤⑥⑦上周已经完成,本周不用规划。

在这里插入图片描述
④仿真验证说明。
⑤超声波模块两次测量间隔在60ms以上将不会相互干扰,而题目要求每1秒才刷新一次距离测量数据,请充分利用时间余量和适当的滤波方法,对多次测量值进行数据处理,以得到更稳定的测量结果。规划设计思路并VHDL完成电路设计。
⑥绘制最终设计好的完整的方框图,标注所有模块的名字,输入输出信号总线位宽。

综合实验——传感器数字采集系统

实验日期:2020.5.25-2020.6.14

实验目标:

初步设计一个复杂数字系统-传感器数字采集系统,理解扩展接口的超声波测距和通用USB-TTL串口电路原理;实现其实作模块功能验证;分层次编写VHDL完成系统模块优化方案,验证平台,FPGA串口与PC上位机软件(可选),并验证调试。

实验资源:

proteus8.8、quartusII9.0、Keil Uvision3、Codeblock、python、PyQt5、Qt designer等

传感器数字采集系统实验-1

一、超声波测距基本知识

1、了解超声波测距工程的演示与测量过程:

trig引脚上产生一个大于10μs的高电平信号,模块自动发送8个40kHz的方波,检测是否有信号返回,一旦接收返回信号,echo引脚自动变为高电平;

测距过程:
1、trig引脚上产生一个大于10μs的高电平信号,模块自动发送8个40kHz的方波,检测是否有信号返回,一旦接收返回信号,echo引脚自动变为高电平;
2、超声波模块接收到信号返回,echo引脚上由高电平自动变为低电平,高电平持续的时间位超声波传输时间,根据超声波在空气中传输的速度(340m/s)就能算出实际距离;
公式为:距离=(高电平时间×声速)/2,测量周期在60ms以上,用来防止发射信号对回响信号的影响;

2、仔细看trig和echo信号的示波器波形,对其进行分析,了解其计算过程并说明;

在这里插入图片描述

1)第一幅图中每一格代表500us,echo持续为12个格子左右(没看到详细时间),因此时间为50012us,距离=50012340/210 -6=1.02m,时间不是很准确因此有所误差;
2)第二幅图同样的分析方法,每一格代表200us,echo持续9格左右,时间为2009=1800us,距离=1800us340m/s*10 -6/2=0.306m,含有误差;
(注:图片为提供的波形,这里不展示整个图片了)

二、在Proteus上用SRF04传感器、蜂鸣器BUZZER和和数字电路芯片设计一个能单次启动测距系统的电路。

要求:用数码管显示出距离远近程度(8位距离采样值)、蜂鸣器能根据距离远近发出多种不同频率组合声音(蜂鸣器波形具有间歇式单音波形特点);

纯数字电路实现的简单版本

【想法(可略过)】

HC-SR04超声波模块,模块四个引脚触发信号Trig,回声信号Echo,供电VCC和GND,测量周期60ms以上。当给Trig一个10us以上的脉冲时,HC-SR04内部自动循环发出8个40KHz的脉冲,Echo刚收到回波时置一(超出一定范围收到的信号不够HC-SR04置一定时器不计数),单片机定时器开始计数,直到Echo没有收到信号置零,记了TH+TL次机器周期,一个机器周期需要12个振荡周期,由此时间就可以计算出来,再用时间X速度就可以计算出距离S。

首先利用AT89C51作为数字平台,自己写c程序来实现各个部件信号的控制,令p0.0p0.7作为显示距离的输出信号,p2.1作为控制蜂鸣器buzzer的输出信号、p2.2p2.3作为超声波发射装置TR信号和ECHO信号的两个端口,最后还利用3个端口进行警告距离的设置(当警告距离大于测距时,蜂鸣器根据距离开始响):当按下第一个按钮,则进入警告距离的设置,另外两个端口分别是距离加减的控制;c程序写完后利用keil生成对应的hex文件并放入51单片机;
将其余的部件buzzer、SRF04、以及用于显示的器件LM016L,利用该部件输出详细的信息如:初始显示距离的界面在这里插入图片描述,以及按下第一个按钮后进入的警戒值设置界面在这里插入图片描述
根据c程序设置的端口进行连接,接好后进行调试,最终得到成品。

【设计思路】

将整个电路分为三大板块来实现,第一个板块是计数板块、第二个板块是显示板块、第三个板块是buzzer发声频率选择模块
第一个板块计数板块: 可以由4位的十进制计数器74160来实现,百位、十位、个位各用一片74160来表示并将三片串成一个12位的10进制计数器;
74160功能表:
在这里插入图片描述
这里只需要将低位(个位)74160的RCO进位连接到高一位(十位)74160的EPN端或者ENT端,将十位与个位的RCO进位与后作为百位74160的EPN端或ENT端即可(个位的EPN/ENT端中的一个置1),选择其中一个端口连接后另一个端口与echo相连即可;这样就可以实现当echo为高电平开启计数的功能。
至于74160的clk时钟端口则连上一个17KHZ左右的时钟源来得到正确的高电平数。再设置一个1s为周期的时钟源接在3个74160的MR异步清零端口与TR端口;
在这里插入图片描述

第二个板块显示板块: 可以加上两个74273寄存器(其中一个仅使用4位)以及3个7SEG-BCD-GREEN即可;将三个74160的四位输出分别连接在74273的输入端口,将74273的输出连接到数码管即可实现;
在这里插入图片描述

第三个板块buzzer频率选择板块: 我将8位距离分成了4各部分:B<=25、25<B<=50、50<B<=100以及B>100四种,前三种距离分别是周期位250ms、500ms、1s的时钟源、大于100则不报警。而距离的比较我使用了74LS85(计数器):
将74273寄存器中的12位距离通过比较器74LS85与25、50、100来进行比较,与一个数字进行比较需要3片74LS85(一片仅比较四位),需要将这三片比较器连接起来,将低位的输出O接到高位的输入I中,如果与数字25(0000 0010 0101)比较,则将这3个4位分别从低到高连接到3片74LS85的A端口,而B端口则连上74273寄存器的输出即可;剩余两个与50、100比较的也是同样的思路,因此一共使用了9片74LS85;
最后是根据与三个数相比较的输出O来进行三种频率的选择;这里直接使用与门、或门就可以实现。

【功能验证】

在这里插入图片描述
第一种情况,距离小于25,选择第一种时钟源(周期250ms)作为buzzer的发声频率(只有第一个分支按时钟闪烁),buzzer此时响的最急促,验证正确;
在这里插入图片描述
第二种情况,距离在(25,50]之间,选择第二种时钟源(500ms)作为发声频率,buzzer发声的频率较第一种降下来了,验证正确;
距离在(50,100]与大于一百的情况的验证同样类似,频率选择的四种情况全部验证正确,且数码管正常显示,实验结束。

传感器数字采集系统实验-2

任务:在QuartusII上,设计一个每1秒启动的距离连续测量与计算系统电路

一、距离测量的原理

测量距离首先需要获取时间,echo端变为高电平的时间就是发射到接收到回声信号的时间,可以使用一个计数器,计数器可以记录一段时间内,引入时钟信号的上升沿次数。
显然,这里echo充当的就是时钟信号的使能信号,如果想要获取持续时间,只需要在echo端高电平的时段,计数一共有多少个时钟信号上升沿即可。那么把echo端接在enable端就可以达成这个功能。但是echo隔一段时间便会上升一段时间,那么就要将异步清零信号每当提供一个工作信号给trig之前都输出一个更新信号,使echo端相连接的计数器更新。
时钟信号是高频信号,降低其频率使其能够让超声波模块能够认为其为有效信号(>10us)
在这里插入图片描述
在这里插入图片描述

二、各个部件的详细实现

在这里插入图片描述
在这里插入图片描述
下方的bjcfp:buzzer的初次分频模块; bjpl:buzzer的调整占空比模块;
上方的jsq:计数器模块; hxjsq:回响计数器模块; fp_js:分频出回响计数器的时钟源
cal:计算距离模块; fw:分位模块; scan_led3:显示模块;
计算模块与显示模块相连直接进行显示(显示模块就是前面的scan_led3实验成果,其实只要看显示模块的刷新频率clk2即可)

【自循环计数器】

实验要求:超声波模块单次测距周期应大于60ms;Trig信号高电平脉宽大于10us;单个测距周期以一个Trig信号启动,以 一个清零信号对echo回响信号计数器清零。能用示波器测量到FPGA正确输出Trig信号和清零信号。
原理:计数器是数字系统中的基本逻辑部件,其功能是记录输入脉冲的个数。它所能记忆的最大脉冲个数成为该计数器的模。而本实验要求设计的是自循环计数器。通过超声波雷达的超声波模块(测距周期大于60ms)所输入的时钟信号,而产生一个Trig触发信号,以启动单个测距周期,而要求产生的Trig信号高电平脉宽大于10us;以及产生一个Clr清零信号对下一个计数器的echo回响信号进行清零。所以在设计该计数器的时候,应该设置Input为Clk时钟信号,而Output为Clr清零信号和Trig触发信号。而计数器的实体结构也应该根据要求进行设计。
在这里插入图片描述
分析:每次时钟变化计数的x加1,一个时钟为24MHZ(0.5us),那么只要周期数达到1s/0.5us就能确保1s产生一个Trig触发信号,以启动单个测距周期,而要求产生的Trig信号高电平脉宽大于10us(trig输出1的周期数达到10us/0.5us);产生一个Clr清零信号对下一个计数器的echo回响信号进行清零。这里的1s钟echo回响信号清零满足用于切换每1秒开始新一轮测量的状态机要求。

【回响计数器】

回响计数器,需要用一个高频率的计数器,用echo信号作为计数器的使能端,该计数器测量echo信号持续的时钟周期个数(该时钟频率已经分频),对每次测量结果准确清零。
分频电路:在这里插入图片描述
回响计数器,需要用一个高频率的计数器,用echo信号作为计数器的使能端,该计数器测量echo信号高电平持续的时钟周期个数,并对每次测量结果准确清零。
距离计算:
原理:我们用计数器接收了时钟信号,获得了ECHO为高电平时,一共有多少个时钟上升沿。要根据这个数据,计算障碍物与倒车雷达之间的距离。
我们的计数器的频率是24Mhz,所以周期是0.417us,假设收到的数据为N,即在ECHO为高电平时,有N个时钟信号上升沿。所以用时为N0.417us。在这段时间内,声音从倒车雷达处出发到障碍物,又返回雷达处。所以距离为:N0.41710-6340/2(m),由于显示的单位是厘米,所以最终距离的表达式为:N7.08910-3(cm)。

回响计数:
在这里插入图片描述
如果clr为1则清零,否则如果echo处于高电平则x+1(记录周期数);

【数码管扫描频率和显示数据刷新时间时钟源】

数码管扫描频率太低数码管会出现闪烁的现象,频率太高则亮度不够甚至无法看清,所以一般扫描间隔多为几毫秒,这里设置时钟频率为1ms左右。
在这里插入图片描述

【单音频率和间隔的时钟源】

分为两个模块,第一个模块为初步分频模块,不过这个模块分出来的信号为占空比为50%的标准信号。第二个模块为调整占空比模块产生几种频率的时钟信号,根据距离大小来选择一种频率作为buzzer的单音频率。
以下仅给出其中1种频率占空比的调整,其他的几种实现类似,第一个分频模块与上面类似。
占空比:选择:

【输入输出数据与控制信号设计】

信号名	位宽	方向	释义clk	1	给计数器等部件提供时钟	电路的输入时钟源trig	1	输出到超声波测距器	Trig信号启动echo	1	输入到回响计数部件	用于计数器的使能端jl	15	由计算模块输出给显示模块	 测量的距离clk1	1	clk分频给回响计数器	做回响计数器的时钟源clk2	1	clk分频给显示部件	显示部件刷新的时钟源clkcf	1	clk分频给buzzer(初次分频)	做调整占空比模块的时钟源clk3	1	对clkcf调整占空比	最终的buzzer时钟源clr	1	对ehco测量的数据清零	实现1s启动一次测量电路

【仿真结果】

24MHZ时钟频率——0.5us时钟周期
在这里插入图片描述

【分析】

trig信号持续16us左右高电平,满足条件,且在第3s左右才出现第二次上升;
clk2:周期位2ms左右,满足数码管刷新频率;
clk3:echo仅出现短暂的高电平,此时clk3输出第三种分频时钟,周期为50us左右且占空比为1/6。

大实验3见博客https://blog.csdn.net/weixin_43973089/article/details/115332265

  • 17
    点赞
  • 6
    评论
  • 39
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值