菜鸟求帮助;用 verilog写的一个DDS相位累加器的程序,用Modelsim仿真的时候输出为xxxxxx,编译没错

菜鸟求帮助;用 verilog写的一个DDS相位累加器的程序,用Modelsim仿真的时候输出为xxxxxx,编译没错,第1张

您好,把它缩小就像了,不过分辨率不高,你的ROM存的多少位的波形数据?越高越好!波形读出来的数据少了波形就不完整!把频率控制字该成1嘛。

1.在FPGA中写一个ROM,ROM表用matlab或者C语言写,存成16进制数

2.verilog程序中设定变量,指定变量(reg型)的数据宽度,长度

3. 在初始化变量的语句为

initial begin

$readmemh("///文件名/// ",ROMname) end

4. 按照DDS内核方法做波形发生器

5. 编写仿真顶层文件

6 设定modelsim路径,FPGA仿真路径,设定仿真顶层文件即可(具体 *** 作网上有。

verilog 是一种硬件描述语言 你应该知道

DDS是数字锁相环的标示,DDS是一种方法。

方法可以应用很广,很多领域都使用这种方法。

DDS最经典的功能就是频率调制。

verilog中也当然可以使用DDS的方法进行频率调制

不清楚的地方可以追问。

希望能帮到你

这是时钟域的问题,得看你的几个时钟的关系如何,比如你的两个时钟是由同一个时钟源分频出来的(也就是两个时钟有频率和相位的固定关系),那么是可以直接用的;如果你的两个时钟是异步的(就是频率和相位都没有关系),那么你需要先进行同步化处理之后,两个模块的信号才能交互。

如果是简单的单bit信号,直接打两拍之后就可用了;

如果是CPU和一个芯片传输数据,时钟频率没有关系,那么从CPU传进来的数据就需要进行同步化处理,比如交互是由一个片选cs和使能rw_en信号控制的,那么就需要将rw_en信号延迟两拍,取得rw_en信号的跳变边沿,然后CPU传输的数据都在这个边沿进行传输就可以了

基本的思想是这样的,具体的电路是在这种思想上生成的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11990061.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存