FPGA(8)--频率计检测控制系统

简介: FPGA(8)--频率计检测控制系统

文章目录


一、设计要求

1.整体控制系统设计要求

2.频率计检测设计要求

二、设计思路

1.确定VHDL描述与原理图相结合完成设计

2.确定状态情况

3.数码管显示功能

三、设计内容

1. 频率检测部分VHDL描述

2. 七段数码管显示部分VHDL描述

3. 系统主控制部分VHDL描述

4.将三个部分的VHDL描述分别都封装成元件

5.连接三个部分封装成的元件

四、结果分析与验证

1.状态机验证

2.频率检测仿真波形图验证

3.主控仿真波形图验证

4. 引脚配置

五、思考与总结


一、设计要求


1.整体控制系统设计要求


858698956c92403a8b53528c336c4c3a.png


①频率计被输送到检测传动带入口,光电传感器(Sensor_1)检测到频率计后启动传送带。光电传感器采集的是光的反射信号,当检测到有被测物体时输出1,否则输出0;

②传送带将频率计传送到检测口,并触发位置开关(Sensor_2),此时,传动带停止,并启动频率测量仪的移动电机。注:位置开关初始状态为0,被触发后变为1;

③移动电机将频率测量仪接入到频率计信号输入端口,信号接通后给控制器反馈一个信号1,否则0;

④接通延迟3s后,频率测量仪给频率计输入一个1024Hz的标准频率,当频率计检测到的脉冲信号在1014~1034Hz时,表示该频率计是合格的,否则不合格。检测合格输出字符“A”,不合格输出“F”。

⑤检测完成后,移动电机反转回到初始位置,并触发位置开关(Sensor_3)后停止;

⑥再次启动传送带,将检测合格的频率计移动到包装工位,并统计和显示合格产品的数量;2s后传送带停,回到初始状态。


2.频率计检测设计要求


92559a79e7cf4c588cdde0ef60017481.png


频率计是用来测量给定信号频率的仪器。其基本原理是在给定的标准时间内(通常是1s),通过计数器检测输入信号的脉冲个数。如图2所示,Clkin是待测信号,Clk是频率计工作时钟,Conl是频率计产生的测控信号,测控信号通常设置为2s的周期,占空比为50%。测量的原理:统计在Conl为高电平时Clkin有多少个周期的脉冲信号。


二、设计思路



1.确定VHDL描述与原理图相结合完成设计

根据该检测控制系统的设计要求可知,该系统可以由三个子部分组成,即频率检测部分、系统主控制部分和七段数码管显示部分。因此,可以分别将三个部分用VHDL描述,进而将三个部分分别封装成元件,以供最后原理图调用连接完成设计。


2.确定状态情况

根据整体控制系统设计要求可知,该系统的状态可以分为五个,即如下图所示的状态机图。


6c0148454d374ed69b10dab1575b065a.png


S0:初始状态(Sensor_1检测到产品进入而进入下一状态)

S1:产品进入传送带传输(Sensor_2检测到产品到达而进入下一状态)

S2:移动电机向下移动,频率测量仪接入产品(延迟3s进入下一状态)

S3:进行检测,移动电机向上移动(Sensor_3检测到电机到达而进入下一状态)

S4:再次启动传送带,更新数据(2s后回到初始状态)


3.数码管显示功能

考虑到该系统需要用七段数码管显示产品是否合格以及合格产品的数量,因此需要相应的数码管显示功能,而此前的实验中有实现此功能的模块,可以将其封装成这里可以调用的元件。


三、设计内容


1. 频率检测部分VHDL描述

1.1导入相关的包


b6e4ff2585874c4cb27bf6ff7e2702bc.png


1.2定义相关输入输出


b720a151aa0b49d8ad8512675fb45786.png


①rst为频率检测功能的使能信号,其值由主控制部分传递过来

②conl为频率计产生的测控信号,一般设置为0.5Hz

③clkin为待测信号

④count为在conl为高电平时clkin的脉冲信号数量

⑤quality为检测结果,其值输出返回给主控制部分


1.3检测脉冲数量进程


821674517cb34ac7b726b04f5aaa68df.png


①在conl为高电平时候,只要clkin到达一个上升沿时就计数一次


1.4检测结果返回进程


1f6a38c096ab49af9619836b121e4ab3.png


①只要在一个conl为高电平时clkin的脉冲信号数量为1014-1034就返回1。


2. 七段数码管显示部分VHDL描述


2.1导入相关的包(同上)

2.2将四位二进制数转换为七段数码管显示信号


19cdd0dc5f454b7aa06f7da697e48eda.png


①d由最高位到最低位分别对应一个七段数码管的a到g

②这里只设计了0-9的显示,超过9的情况只需要稍作改进即可


3. 系统主控制部分VHDL描述


3.1导入相关的包(同上)

3.2定义相关输入输出


b7b94181c41e4b17ae758ec1a68f7f87.png


①rst_c为清零复位信号,clk为工作信号

②count_in为频率检测部分传来的检测结果

③Sensor_1、Sensor_2、Sensor_3_down、Sensor_3_rise为模拟传感器信号

④count_out为统计的合格产品数量

⑤quality_out为表示产品是否合格

⑥testing为传递给频率检测部分的使能信号

⑦show_trf为传送带状态,show_down为电机是否下降,show_up为是否上升

3.3定义状态机情况以及中间信号


c16aea82a1fd4948b93674ee54dcdc5e.png


①该控制系统存在5个状态

②delay_3、delay_2分别为下面需要用的实现延迟功能的中间信号

③adder为统计合格产品数量的中间信号

3.4状态机情况


9ca04419e1a24b5d9d7df67bf2a1f68f.png


①初始为S0状态,当Sensor_1检测到产品进入传送带时候进入下一状态S0

②S1状态传送带动(show_trf输出高电平),当Sensor_2检测到产品到达时进入下一状态S2

③S2状态电机下移(),当Sensor_3_down检测到电机到达时延迟三秒后进入下一状态S3

④S3状态主控制部分给频率检测部分使能信号(testing输出高电平),并且电机上移(show_up输出高电平),当Sensor_3_rise检测到电机到达时进入下一状态S4

⑤S4状态传送带动(show_trf输出高电平)延迟两秒后回到初始状态

3.5统计合格产品与显示检测产品情况


c9565bc8c768496e8abf1926ac4d31d7.png


①如果频率检测部分返回高电平则合格产品数量加一并且显示“A”,否则显示“F”


4.将三个部分的VHDL描述分别都封装成元件

5.连接三个部分封装成的元件


ddc39fd20a4041dab80c78e4ec6117e6.png


①quality与count_in连接


四、结果分析与验证



1.状态机验证

2a7a15d008ee474b8a113f1dd81dad18.png

c6fe9a8092b94c3d9083dd0059786b8b.png


由上面调出的状态机图与前面设计的状态机相同,并且转换情况符合。


2.频率检测仿真波形图验证


e0273683ebf64df78ae22a537c4c4acd.png


3.主控仿真波形图验证


3.1固定输入设计



85b7593ba7264349a5420aeb3c275d63.png


①clk是频率为1Hz的方波信号

②clkin是频率为1024Hz的方波信号

③conl是频率为0.5Hz的方波信号


3.2检测一次的情况


d19ddd2b998e40888365d500abb4120e.png


如图对仿真波形图做了相关说明,从中可以验证得该系统的相关设计要求已经基本实现。


3.3在上一次的基础上再检测一次的情况


2ff5da8b9331439cacad43fc9de0f2fa.png


3.4清零复位


e7461685f5944616bd3866b3c5ee9b7a.png


4. 引脚配置


基于实验板的硬件条件,合理规划硬件显示情况,对频率检测程序/主程序进行硬件验证。如下图为相关引脚配置。


1932b03d7e7242dba0d2215f362ec0de.png


①clk、clkin、conl分别加以1Hz、1024Hz、0.5Hz

②count和quality通过七段式数码管输出

③rst_c、Sensor_1、Sensor_2、Sensor_3_down、Sensor_3_rise分别接入推拉式开关

④trf、down、up分别接以发光二极管指示灯输出


五、思考与总结



1.用原理图设计较VHDL更为直观明了,可以通过电路图清楚其逻辑关系和实现的功能关系。而用VHDL语言设计则较为简便,只需清楚各个接口之间的关系和调用的原则。因此选用VHDL描述结合原理图的方式来设计实现较为合理。

2. VHDL描述的模块化,将实现不同功能的VHDL描述分开在不同的进程里面,实现VHDL的“高内聚低耦合”。

3. 状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。交通信号灯可以用状态机的原理来实现,因为信号灯的变化状态是有限的,各个状态可以列举出来,状态间切换由计数器决定。


------------------------------------------------------------------

特别说明:以上均为个人原创,需要原代码的朋友可以联系我。

相关文章
|
2月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到"hand.txt"文件。
|
4天前
|
存储 算法 编译器
课程设计——基于FPGA的交通红绿灯控制系统(源代码)
课程设计——基于FPGA的交通红绿灯控制系统(源代码)
|
2月前
|
传感器 算法 机器人
在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)
针对实用化人形机器人的控制系统,以深入应用FPGA技术为指导思想做了一个框架设计,提供一个具象化的设计实例、参考技术方案,协助各研发团队及相关决策者了解这一技术思路的价值。 进而,笔者希望读者将这个框架设计与《在实用化人形机器人研发流程中深入应用FPGA技术的流程图》结合起来进行分析、思考,希望: 进一步降低将FPGA深入应用于人形机器人在纯粹技术维度上的门槛; 助力更多正在人形机器人领域参与竞争的团队 -- 及时做出实质性决策,及时将更多资源分配到深入应用FPGA技术这一竞争维度。
132 4
在实用化人形机器人控制系统中深入应用FPGA的框架设计(基于特斯拉Optimus-Gen2的硬件系统)
|
异构计算
基于FPGA的电梯控制系统设计
在本项目中一共分为了五个模块:时钟分频、按键消抖、状态控制、蜂鸣、译码显示及流水指示灯。
|
算法 异构计算
m通信系统中基于相关峰检测的信号定时同步算法的FPGA实现
m通信系统中基于相关峰检测的信号定时同步算法的FPGA实现
312 0
m通信系统中基于相关峰检测的信号定时同步算法的FPGA实现
|
算法 前端开发 异构计算
m基于FPGA的AGC自适应增益控制系统verilog实现,包含testbench
m基于FPGA的AGC自适应增益控制系统verilog实现,包含testbench
441 0
|
算法 异构计算
m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序
m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序
347 0
m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序
|
芯片 异构计算
使用Verilog实现FPGA双列电梯控制系统
设计目的及要求 实现2个8层电梯升降控制设计,该设计模拟完成8层楼的载客服务,同时示电梯运行情况和电梯外请求信息,具体要求如下: 1)       每层电梯设有请求开关,电梯可响应按键操作,到达指定楼层; 2)       当有请求时,该楼层的指示灯亮; 3)       电梯运行时,各楼层有运行模式指示,显示目前电梯是上升或下降。
2006 1
|
2月前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
77 7

热门文章

最新文章