4273|8

1059

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

verilog写频率计失败 FPGA(cyclone4)开发板心得第05贴 [复制链接]

FPGA板子到手不学学HDL语言总是说不过去的,看了看verilog的教程,感觉干看太空洞了,不如做点什么,于是就打算做一个频率计,想看看最高能检测到多高频率的方波.
发现一个很大的问题,verilog不支持任意模除,所以在数据显示的时候.很简单的:
ds[0]=signal_cnt;
ds[1]=signal_cnt/10;
ds[2]=signal_cnt/100;
ds[3]=signal_cnt/1000;
上面signal_cnt是检测到的信号上升沿数量,本来很简单的逻辑被搞的乱七八糟的.

不同的always块中不能对同一个的reg赋值,原因倒是很站得住脚,但是确实太不方便了.比如每次clk我希望检测一次外部引脚状态,对变化记个数,每过1ms,对上述计数器清零,准备一次频率数据输出,就不能分别写在两个always块.

所以我只能把所有逻辑写在@clk的块中,可能是导致失败的原因,同时触发的逻辑太多了?

看到kdy指点秒表的程序感觉茅塞顿开,想大家能不吝指点下思路.多谢多谢

freq.rar (3.28 MB, 下载次数: 22)
此帖出自FPGA/CPLD论坛

最新回复

呵呵  楼上说的很有道理  详情 回复 发表于 2013-6-30 10:33
点赞 关注
 

回复
举报

755

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

回复 楼主 astwyg 的帖子

如果进一步设计一个频率计,或者说想把代码写的更好理解应该先对整个设计分析
然后进行功能块划分,然后分模块写个个功能块。

而不是简单的把所有的东西都放在同一个模块中。

以上只是个人观点,仅供参考。
此帖出自FPGA/CPLD论坛
 
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

板凳
 

回复 沙发 deweyled 的帖子

您说的对.
目前还是刚刚入门HDL语言,滤波什么的先放一放吧.想先实现个基本功能.
就频率计应用来说.真的对于怎么拆块没思路,网上的例程感觉也都不好

有什么方法什么的推荐么?
此帖出自FPGA/CPLD论坛
 
 
 

回复

755

帖子

0

TA的资源

五彩晶圆(初级)

4
 

回复 板凳 astwyg 的帖子

以频率计为例:我会把所有功能分为3个模块:
1、统计模块:用于输入脉冲统计。
2、数据处理及控制模块:用于对计数模块输入的数据进行变换,如果有控制输入的也在这个模块中完成。
3、显示模块:专门驱动显示数码管(或者其他显示设备)。

以上只是一种简单的分块思路,分块主要是能够对模块进行重利用。
假设我开始选择数码管进行,但后面用想用LCD显示,那我只需要修改显示模块就行了。前面两个模块不作修改就可以直接使用。但是也需要注意的是一定要规定好每个模块直间的接口。
此帖出自FPGA/CPLD论坛
 
 
 

回复

581

帖子

0

TA的资源

五彩晶圆(初级)

5
 
clk_1ms =!clk_1ms;                //为什么不是用符号~
~和!一个是逻辑反一个是位反,对于1bit的变量是一样的
此帖出自FPGA/CPLD论坛
个人签名Net:Wxeda.taobao.com
QQ:1035868547
Blog:https://home.eeworld.com.cn/space-uid-390804.html
 
 
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

6
 

回复 5楼 kdy 的帖子

嗯 嗯
记下了
这个取反到不是什么重点.希望您指点下频率计的思路,我感觉我现在在这思路问题太大了
此帖出自FPGA/CPLD论坛
 
 
 

回复

581

帖子

0

TA的资源

五彩晶圆(初级)

7
 
思路取决于你要做的程度,如果最简单的我觉得计数就行了,计数器加比较器,把计数频率提高精度就提高了。48M应该到144M没什么问题。
嗯,我初步想了一下:
1、使用一个低脉冲计数器对输入脉冲低计数,然后对输入脉冲用时钟同步取上沿(你会的 ),用取出的锁存计数值并清零计数器。
2、同理另一个搞上沿。
这样你得到了上下沿的宽度和占空比。
3、宽度计数乘上时钟周期相加得到周期。
4、1/周期得到频率。
用到Altera的定点乘法除法IP,以及加法器。
5、对于显示,IP是有任意模除和取余的,这样可以先将数值量化到对应范围MHz、KHz等,再分解为4部分显示,
然后用数码管上的点作为频率的单位,亮一个表示Hz,两个表示KHz,3个表示MHz。

没了...........先想到这么多

[ 本帖最后由 kdy 于 2013-6-29 23:38 编辑 ]
此帖出自FPGA/CPLD论坛
个人签名Net:Wxeda.taobao.com
QQ:1035868547
Blog:https://home.eeworld.com.cn/space-uid-390804.html
 
 
 

回复

5979

帖子

8

TA的资源

版主

8
 
呵呵  楼上说的很有道理
此帖出自FPGA/CPLD论坛
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

9
 

回复 7楼 kdy 的帖子

好详尽.我是没想到用IP核.我想的简单多了.就是采集1ms.得出来的就是kHz,就是显示被弄得一塌糊涂..等闲了再好好试试
此帖出自FPGA/CPLD论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表