题目描述:
请编写一个信号发生器模块,根据波形选择信号wave_choise发出相应的波形:wave_choice=0时,发出方波信号;wave_choice=1时,发出锯齿波信号;wave_choice=2时,发出三角波信号。
有一说一,牛客网现在的verilog的题出的就挺离谱,不看答案题目都不知道啥意思.
解题思路:
这一题首先需要确定如何得到三种信号,以及最基本的三种信号的幅值、周期,题目里全都没有。从答案可以看出,方波周期为20个clk,且占空比为0.5,锯齿波周期为21个clk,三角波周期为40个clk。
具体详解如下:
`timescale 1ns/1ns
module signal_generator(
input clk,
input rst_n,
input [1:0] wave_choise,
output reg [4:0]wave
);
//wave_choice 为0时输出方波,先写出方波信号发生器
//以20个clk为方波周期(题目没有,看答案才知道),则需要一个计数器num
reg [4:0] num;
always @(posedge clk or negedge rst_n) begin
if(!rst_n)