很久之前就想写这篇博客,但因为这是学校的课程设计,在没验收前发怕老师说抄袭,所以拖到现在。此次的小玩意
是一个频率计,准确来讲是一个数字频率计,只能测TTL方波。采用了等精度方法,具体等精度和直接测周期或直接
测频率法有什么异同,优缺点可以参考
http://wenku.baidu.com/link?
url=o7Y4CeJ3qYVVa7ZoX8KpCrz5l3NxXIDfTYHVisPPbfSldJXTmYFhWwpcuh91cPWMTtEEC4HAlCOQ0DdN
asNtKuzjg35S4JVOGS6TvJaELkK
按上面的思路就写成了下面的程序,如果知道等精度测量的思路,程序应该很容易读懂
问题:程序中上升沿检测为何一开始要跟高电平比较(也就是真常量),大家思考一下。
说明一下,myRIO时钟默认为40M,为扩大可测量频宽,可进行分频,这个也很简单,操作如下:
右击40M那个时钟,选择new 什么什么clock,然后直接在框图位置中输入要的频率,点OK,之后双击本页第一个图
的定时循环时钟,选择为你想要的时钟即可。
注意:在本程序中,时钟太高会编译不通过,因为FPGA实际是对芯片进行专门话设计,你程序对信号取反,相当于
用FPGA门阵列生成一个非门,所以时钟太高,在定时循环中硬件反应不过来,编译就不通过了(以上为个人推
测),考虑自己的需求,我将频率分为了240M(可以再高一点点,但大于320M就编译不通过了,每次编译若超时
编译器会告诉你最小时间,感兴趣同学可以自己计算最高频率)
然后以下是我在调试中遇到的问题:
错误程序:
首先闸门用上面会出现问题,程序无法计算上升沿,N,n值为0,原因自行分析。
其次,测试时的线不能用有衰减的,最好用鳄鱼夹那种,因为现在在宿舍,没能拍照,包涵。
还有,myRIO数字输入信号不能是函数电平,要用TTL,不然也读不到上升沿(我因为这个调了挺久,调到怀疑人
生,最后才发现问题所在)
如果要测正弦波的话就要用自己弄一个整形电路啦,电路实在不是我的强项,不过这次我人品好,两个方案就搞定
了,第一次用的是tl3016外加两级功放,什么阻抗匹配、纹波系数啥啥的我也没学好,就不瞎扯了。这个方案不行,
之后直接用函数发生器测方波,发现2mV也很准,就把功放去了,然后申请的3016芯片用完了,又不想拆(走狗屎
运的关键一步),然后就用了tlv3501,没功放,直接典型电路,可以,之后我会附上整个设计的PCB和程序(包括
ARM部分,串口,自动量程切换什么的,当然这个我想赚点积分,我没积分可用了)。上面相关芯片资料可直接在ti
找datasheet和申请样片。
测试结果因为有名字学号学校等信息就不附了,方波用函数发生器误差小于十万分之一,正弦波小于万分之一(和设
计的电路整形后的信号有关)
啰啰嗦嗦写了这么多,到此吧,希望大家多和我交流。