OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9887|回复: 10

[ALTERA] Verilog测量输入信号脉宽的方法

[复制链接]

21

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2020-6-8
在线时间
70 小时
发表于 2020-7-1 17:00:43 | 显示全部楼层 |阅读模式
7金钱
本人新手,现在有一想法测量脉宽(电平时长)
1.需求
测量电平时长
2方法
先使用一个逻辑固定频率进行计数,然后在其他一个逻辑里判断电平跳变,并记录当前计数,然后将后一次跳变的计数减去前一次跳变的计数,以此得到该电平持续时间
3问题
当我在逻辑里用输入信号电平当做条件时,仿真发现,并不会在输入电平跳变时运行程序,计数会为未知数,其次,由于非阻塞赋值和阻塞赋值的特性,并不能实时得到电平持续的计数

这个波形为计数相加

这个波形为计数相加



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2020-6-8
在线时间
70 小时
 楼主| 发表于 2020-7-1 17:00:44 | 显示全部楼层
回复

使用道具 举报

21

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2020-6-8
在线时间
70 小时
 楼主| 发表于 2020-7-2 08:54:17 | 显示全部楼层
我顶!!!!!!!!
回复

使用道具 举报

3

主题

2013

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5618
金钱
5618
注册时间
2018-10-21
在线时间
1591 小时
发表于 2020-7-2 13:49:36 | 显示全部楼层
输入高电平开始计数,在下降沿时寄存计数值,并把计数值清零。当然这种计数方法建立在时钟频率的周期远小于输入电平高电平时间,否则误差还是挺大的。
回复

使用道具 举报

21

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2020-6-8
在线时间
70 小时
 楼主| 发表于 2020-7-2 14:40:34 | 显示全部楼层
QinQZ 发表于 2020-7-2 13:49
输入高电平开始计数,在下降沿时寄存计数值,并把计数值清零。当然这种计数方法建立在时钟频率的周期远小于 ...

想法不成立啊,这样的话我需要一个逻辑做计数器进行计数,如果其他一个逻辑进行高电平计数,下降沿寄存计数值,还清零的话,这不就要报错吗,不能同时测正边沿和负边沿,不能在两个逻辑里给一个值赋值
回复

使用道具 举报

21

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2020-6-8
在线时间
70 小时
 楼主| 发表于 2020-7-2 14:48:07 | 显示全部楼层
QinQZ 发表于 2020-7-2 13:49
输入高电平开始计数,在下降沿时寄存计数值,并把计数值清零。当然这种计数方法建立在时钟频率的周期远小于 ...

我的想法是用一个计数器一直计数,然后其他一个逻辑用电平触发,将前一次的值和后一次的值比较也就是
always @(data)//data即为测量的信号
up<=count;//count为计数器计数
down<=up;//得到之前一次的值
up-down;//得差值
但问题是是不同步,且有的地方会忽略部分电平跳变的差值

回复

使用道具 举报

4

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2016-11-1
在线时间
22 小时
发表于 2020-7-2 16:03:21 | 显示全部楼层
15125413637 发表于 2020-7-2 14:48
我的想法是用一个计数器一直计数,然后其他一个逻辑用电平触发,将前一次的值和后一次的值比较也就是
al ...

这不是C语言,这几个语句是并行的
回复

使用道具 举报

21

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2020-6-8
在线时间
70 小时
 楼主| 发表于 2020-7-2 16:18:57 | 显示全部楼层
爱上在路上 发表于 2020-7-2 16:03
这不是C语言,这几个语句是并行的

不就是因为并行所以我才能一边计时一边得到同时得到前一次和后一次的值做比较吗
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
发表于 2020-7-26 16:50:06 | 显示全部楼层
本帖最后由 jshzp 于 2020-7-26 16:52 编辑

如果你的脉冲是周期性重复出现的,可以用增加检测时间的方法提高检测精度;如果是单个脉冲,就只能通过提高计数时钟这一个办法提高精度了。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-8-6
在线时间
1 小时
发表于 2021-10-8 09:42:37 | 显示全部楼层
jshzp 发表于 2020-7-26 16:50
如果你的脉冲是周期性重复出现的,可以用增加检测时间的方法提高检测精度;如果是单个脉冲,就只能通过提高 ...

计数时钟提高,脉冲中的毛刺影响不会加大吗?
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
发表于 2022-5-16 08:56:13 | 显示全部楼层
alng 发表于 2021-10-8 09:42
计数时钟提高,脉冲中的毛刺影响不会加大吗?

脉冲中有毛刺,就是干扰环境下的检测问题,涉及的情况就复杂多了。必须针对具体干扰情况具体分析,一两句话说不清楚。建议了解一下《信号检测与估计》方面的知识。以我的认识,提高计数时钟,对付干扰只有好处,弊端只是增加了检测代价而已。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表