生成的dds compiler核,怎样编写vhdl程序,来生成正弦波

生成的dds compiler核,怎样编写vhdl程序,来生成正弦波,第1张

我Verilog语源腊衫言的看看对你有帮助吗

module DDS(Clk,out,MOSI,nSS,Sck)

inputClk

output MOSI,nSS,Sck

output [9:0] out

wire Clk

wire [9:0] q

reg [7:0] address

reg Clk_1M,En

reg [2:0] Cnt_R0

reg [3:0] Cnt_R1

rom u0(.address(address),.clock(Clk),.q(q))

TLC5615 u1(.Clk(Clk),.Clk_1M(Clk_1M),.En(En),.MOSI(MOSI),.nSS(nSS),.Sck(Sck),.DA_Data(q))

always @(posedge Clk)

begin

if(Cnt_R0 <局友 2)

begin

Clk_1M <= 0

end

else

begin

Clk_1M <= 1

end

Cnt_R0 <= Cnt_R0 + 1

end

always @(posedge Clk_1M)

begin

if(Cnt_R1 <雹腔 14)

begin

Cnt_R1 = Cnt_R1 + 1

En = 0

end

else

begin

Cnt_R1 = Cnt_R1 + 1

En = 1

end

end

always @(posedge En)

begin

address = address + 8

end

assign out = q

endmodule

用51单片机或者FPGA完全可以实现正弦波的输出,具体的方法有:

1.你说的查表法,就是在ROM里面建一个表格,只需要四分之一正弦波的数据就可以了,然后用DA输出;

2.用扮枣PWM波的方法,就是用单片机的定时计数器输出不同占空比的方波,后端用厅枝拆合适的低通滤波器滤波,就能产生不同幅值的模拟信号正弦波,低通滤波器将方波的高频部分滤掉,PWM波的占空比越大,输出的模拟信号幅值就越高;

3.使用DDS技术,一块DDS芯片中主要包括频率控制寄存器、高速相位累加器和正弦计算器三搭升个部分。频率控制寄存器可以串行或并行的方式装载并寄存用户输入的频率控制码;而相位累加器根据

dds频率控制码在每个时钟周期内进行相位累加,得到一个相位值;正弦计算器则对该相位值计算数字化正弦波幅度(芯片一般通过查表得到)。DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存