打印
[FPGA]

fpga实现AD9958驱动所遇到的问题之宏定义除法

[复制链接]
750|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
龙溪傲|  楼主 | 2017-1-4 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经过了三周的手册与C语言代码的阅读,今天完成了AD9958程序驱动。主要是利用了线性序列机和状态机实现的。今天最后一步的时候遇到给CTW0寄存器(地址为0x01)填写计算后的值,发现公式没有错误,但是输出频率总是162.427MHZ,这个问题浪费了我20分钟,百思不得其解,最后**一现解决了。。。大家看到可能都会笑话我了。其实一个很简单的一个问题,类似C语言宏定义。
记得李老师说过,Verilog有天生的人机交互障碍,所以呢,用头文间来宏定义一些常量

`define      PLL_DIV           13                       //宏定义倍频数
`define     SYS_FRE          25*`PLL_DIV        //本板子为25MHz
`define      TWOPOWER   32'hffffffff



手册中给出的频率转换字的计算公式为
FTW=f0/fs*2^32

`define CTW0_DATA0    100*(`TWOPOWER+1.0)/`SYS_FRE          //100MHZ
其实和C语言一样,define只是简单的替换,也就是说上面公式变成了100*(32‘hffffffff+1.0)/25*`PLL_DIV  这显然是有问题的。
所以在得宏定义中加上括号
`define     SYS_FRE         (25*`PLL_DIV)         //本板子为25MHz


虽然问题很low,但是避免自己忘记,还是发个帖子做个笔记吧。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

18

帖子

0

粉丝