版主: 51FPGA |
只为吸引你
最后登陆时间:2011-10-09 20:36:15 |
如题,刚在看ip core,中的dds,看的一头雾水。
想问问这里的大牛们,core中的a,和data,是怎么用的? 传的数是怎么算出来的?特别是data的数,怎么算的啊。我总觉得书上说的,少了很多东西。····· 不像加法core那样简单啊, 关键词:怎么 |
改变自己。 |
|
dreamjsc
最后登陆时间:2012-06-04 16:42:28 |
你用的是Xilinx的DDS么? |
大山里的娃儿。 |
|
只为吸引你
最后登陆时间:2011-10-09 20:36:15 |
dreamjsc的原帖 你用的是Xilinx的DDS么? 我知道是怎么算data,知道A大多都设成0.但是我不知道是什么时候给data传数,和给a传数啊?我看的一些程序上面都是直接调用了。没有给data和a传数啊? 另外我用的是xilinx的ise。 |
改变自己。
此贴由只为吸引你于2011-05-08 10:52:18最后编辑
|
|
dreamjsc
最后登陆时间:2012-06-04 16:42:28 |
当不需要多通道输出时,不需要给ADDR传数! |
大山里的娃儿。 |
|
只为吸引你
最后登陆时间:2011-10-09 20:36:15 |
那我就不明白了,那它输出的载波频率怎么确定啊? |
改变自己。 |
|
dreamjsc
最后登陆时间:2012-06-04 16:42:28 |
|
大山里的娃儿。
此贴由dreamjsc于2011-05-08 20:14:32最后编辑
|
|
只为吸引你
最后登陆时间:2011-10-09 20:36:15 |
可能是你没明白我意思,要不就是我太笨了,比如这个程序。 在使用时,直接调用mydds模块即可,如 module dds1(DATA, WE, A, CLK, SINE, COSINE); input [27 : 0] DATA; //经过计算,DATA= 10737418. input WE; input [4 : 0] A; input CLK; output [9 : 0] SINE; output [9 : 0] COSINE; mydds mydds1( .DATA(DATA), .WE(WE), .A(A), .CLK(CLK), .SINE(SINE), .COSINE(COSINE) ); endmodule 为什么就写了,经计算data=10737418,直接调用就可以了,而不给data传数呢?是不是在生成IP核时就定义好data了?还是还要在写个其他的程序给data和we这些传数呢?我瞟了一眼时序图,但还是不理解······ |
改变自己。 |
|
dreamjsc
最后登陆时间:2012-06-04 16:42:28 |
你使用的ISE是哪个版本? |
大山里的娃儿。
此贴由dreamjsc于2011-05-09 15:21:43最后编辑
|
|
只为吸引你
最后登陆时间:2011-10-09 20:36:15 |
dreamjsc的原帖 你使用的ISE是哪个版本? 我的这个ise是9.2i的版本,A端口和你的addr是同一个意思的,A的低四位选输出通道的,最高的一位是选择相位偏置寄存器(1)/相位增量寄存器(0)的。我是想让这个DDS作为VCO或者NCO的。所以data肯定要变的哇。求指导···呵呵 |
改变自己。 |
|
dreamjsc
最后登陆时间:2012-06-04 16:42:28 |
这样就清楚多了!首先你应该是单通道输出,所以A的低4位一直为零!你只是想输出一个频率,则相位偏置寄存器也可以不管!所以A的最高位可以一直为零,即一直指向相位增量寄存器!至于DATA在什么时候送数,取决于你什么时候频率需要改变!当频率需要改变时,算出来的DATA值也要改变,就需要更新相位寄存器的值!这时送数就行了!送数的控制信号可以用WE! |
大山里的娃儿。 |
|