Verilog 基于FPGA的频率生成

Verilog 基于FPGA的频率生成,verilog,fpga,Verilog,Fpga,我想从我的FPGA中产生一个小信号。我想通过我板上的立体声输出。后者将充当一个简单的DAC。下面是一个简单的Verilog程序,它应该会发出嘟嘟声,但不会 module music(clk, speaker); input clk; output speaker; // Binary counter, 16-bits wide reg [15:0] counter; initial begin counter = 0; end always @(posedge

我想从我的FPGA中产生一个小信号。我想通过我板上的立体声输出。后者将充当一个简单的DAC。下面是一个简单的Verilog程序,它应该会发出嘟嘟声,但不会

module music(clk, speaker);

input clk;
output speaker;

// Binary counter, 16-bits wide
reg [15:0] counter;

 initial 
    begin
    counter = 0;
    end

always @(posedge clk) counter <= counter+1;

// Use the most significant bit (MSB) of the counter to drive the speaker
assign speaker = counter[15];
endmodule
模块音乐(时钟、扬声器);
输入时钟;
输出扬声器;
//16位宽的二进制计数器
reg[15:0]计数器;
首字母
开始
计数器=0;
结束

始终@(posedge clk)计数器我将使用异步重置来初始化计数器:

module music(clk, _reset, speaker);

input clk, _reset;
output speaker;

// Binary counter, 16-bits wide
reg [15:0] counter;

always @(posedge clk or negedge _reset) 
    if (_reset == 1'b0)
        counter <= 'b0;
    else 
        counter <= counter + 1;

// Use the most significant bit (MSB) of the counter to drive the speaker
assign speaker = counter[15];

endmodule
模块音乐(时钟、复位、扬声器);
输入时钟,复位;
输出扬声器;
//16位宽的二进制计数器
reg[15:0]计数器;
始终@(posedge clk或negedge U重置)
如果(_reset==1'b0)

计数器我将使用异步重置来初始化计数器:

module music(clk, _reset, speaker);

input clk, _reset;
output speaker;

// Binary counter, 16-bits wide
reg [15:0] counter;

always @(posedge clk or negedge _reset) 
    if (_reset == 1'b0)
        counter <= 'b0;
    else 
        counter <= counter + 1;

// Use the most significant bit (MSB) of the counter to drive the speaker
assign speaker = counter[15];

endmodule
模块音乐(时钟、复位、扬声器);
输入时钟,复位;
输出扬声器;
//16位宽的二进制计数器
reg[15:0]计数器;
始终@(posedge clk或negedge U重置)
如果(_reset==1'b0)

计数器“reg[15:0]计数器”不是这样做的吗?你能提供代码吗?时钟频率是多少?输出波形是否在音频频谱中?时钟频率为25MHz,输出应为380 HZ左右的方形信号。这不是“reg[15:0]计数器”的功能吗?你能提供代码吗?时钟频率是多少?输出波形是否在音频频谱中?时钟频率为25MHz,输出应为380 HZ左右的方形信号。由于异步复位触发器有限,我认为首选FPGA上的
初始x=0
。ASIC上首选异步触发器。同步复位怎么样?初始x=0合成为什么?当芯片通电时,其寄存器没有已知值,这就是为什么需要同步或异步复位的原因。诚然,在某些FPGA的下载中,位文件也会初始化所有内存元素,因此可能不需要重置信号就可以脱身,但该代码是FPGA和板特定的。所以我相信,除非FPGA上的面积真的很小,否则最好使用复位信号。关于重置的更多信息:一年前我会同意,但
reg x=0或初始块似乎是为FPGA设置初始值的一种被接受的方式,在这个网站上经常被比我有更多FPGA经验的人推荐。我相信
初始x=0
在FPGA上是首选的,因为异步复位触发器有限。ASIC上首选异步触发器。同步复位怎么样?初始x=0合成为什么?当芯片通电时,其寄存器没有已知值,这就是为什么需要同步或异步复位的原因。诚然,在某些FPGA的下载中,位文件也会初始化所有内存元素,因此可能不需要重置信号就可以脱身,但该代码是FPGA和板特定的。所以我相信,除非FPGA上的面积真的很小,否则最好使用复位信号。关于重置的更多信息:一年前我会同意,但
reg x=0或初始块”似乎确实是为FPGA设置初始值的一种公认方式,而且在本网站上经常被那些比我有更多FPGA经验的人推荐。