思路:方波的周期是20,锯齿波的周期是21,三角波的周期是40,且wave 的最大值是20,题目没有明确告知,所以使用case语句。
`timescale 1ns/1ns
/*题目描述:
请编写一个信号发生器模块,根据波形选择信号wave_choise发出相应的波形:
wave_choice=0时,发出方波信号;
wave_choice=1时,发出锯齿波信号;
wave_choice=2时,发出三角波信号。
*/
module signal_generator(
input clk,
input rst_n,
input [1:0] wave_choise,
output reg [4:0] wave
);
reg [5:0] count;
reg flag;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
wave <= 5'd0;
count <= 6'd0;
flag <= 0;
end
else begin
case(wave_choise)
2'b00:begin
if(count==6'd9)begin
wave <

这篇博客展示了如何使用Verilog语言编写一个信号发生器模块,该模块能够根据输入的选择产生方波、锯齿波和三角波。代码中包含了详细的case语句来实现不同波形的生成,并在三角波生成时使用了标志位。同时,还提供了一个测试激励模块用于验证信号发生器的功能。
最低0.47元/天 解锁文章
1058

被折叠的 条评论
为什么被折叠?



