Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions labs/3_music/3_10_spectrum_analyzer/converter.sv
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module converter
(
input logic clk,
input logic rst,
input logic signed [ 9:0] [10:0] in,
input logic signed [ 9:0][10:0] in,
input logic [16:0] band_count,
output logic [10:0] rms_out
);
Expand All @@ -17,11 +17,11 @@ module converter
logic pulse_out;
logic [ 4:0] switch = '0;
logic signed [10:0] q00, q90;
logic signed [15:0] i_filtered = '0;
logic signed [15:0] q_filtered = '0;
logic [15:0] abs_i, abs_q;
logic signed [16:0] i_filtered = '0;
logic signed [16:0] q_filtered = '0;
logic [16:0] abs_i, abs_q;
logic [16:0] sum_abs;
logic [17:0] ema = '0;
logic [16:0] ema = '0;

// Reference frequency * 32 of control pulses generator
always_ff @(posedge clk or posedge rst) begin
Expand Down Expand Up @@ -209,8 +209,8 @@ module converter
end

// Rectifier
assign abs_i = i_filtered [15] ? -i_filtered : i_filtered;
assign abs_q = q_filtered [15] ? -q_filtered : q_filtered;
assign abs_i = i_filtered[16] ? -i_filtered : i_filtered;
assign abs_q = q_filtered[16] ? -q_filtered : q_filtered;
assign sum_abs = abs_i + abs_q;

// Averaging
Expand Down
27 changes: 18 additions & 9 deletions labs/3_music/3_10_spectrum_analyzer/gtkwave.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ set all_signals [list]
lappend all_signals tb.sound
lappend all_signals tb.i_converter.q00
lappend all_signals tb.i_converter.q90
lappend all_signals tb.i_converter.switch
lappend all_signals tb.i_converter.i_filtered
lappend all_signals tb.i_converter.q_filtered
lappend all_signals tb.i_converter.abs_i
lappend all_signals tb.i_converter.abs_q
lappend all_signals tb.i_converter.sum_abs
lappend all_signals tb.i_converter.ema
lappend all_signals tb.i_converter.rms_out
lappend all_signals tb.i_converter.switch
lappend all_signals tb.i_convert.ina
lappend all_signals tb.i_convert.ing

set num_added [ gtkwave::addSignalsFromList $all_signals ]

Expand All @@ -33,42 +35,49 @@ gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Signed_Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.i_filtered\[15:0\]"
gtkwave::highlightSignalsFromList "tb.i_converter.switch\[4:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Decimal

gtkwave::highlightSignalsFromList "tb.i_converter.i_filtered\[16:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Signed_Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.q_filtered\[15:0\]"
gtkwave::highlightSignalsFromList "tb.i_converter.q_filtered\[16:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Signed_Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.abs_i\[15:0\]"
gtkwave::highlightSignalsFromList "tb.i_converter.abs_i\[16:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.abs_q\[15:0\]"
gtkwave::highlightSignalsFromList "tb.i_converter.abs_q\[16:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.sum_abs\[16:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.ema\[17:0\]"
gtkwave::highlightSignalsFromList "tb.i_converter.ema\[16:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.rms_out\[10:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_converter.switch\[4:0\]"
gtkwave::highlightSignalsFromList "tb.i_convert.ina\[23:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Signed_Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension

gtkwave::highlightSignalsFromList "tb.i_convert.ing\[23:0\]"
gtkwave::/Edit/Data_Format/Analog/Step
gtkwave::/Edit/Data_Format/Decimal
gtkwave::/Edit/Insert_Analog_Height_Extension
Expand Down
8 changes: 4 additions & 4 deletions labs/3_music/3_10_spectrum_analyzer/lab_top.sv
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,12 @@ module lab_top
mic_11bit <= '0;
led <= '0;
end
else if (|(mic [23:16] ^ {8 {mic [23]}})) begin // overflow prevention
mic_11bit <= {mic [23], {10 {~mic [23]}}};
led <= '1; // overflow warning
else if (mic [17] != mic [18]) begin // overflow prevention
mic_11bit <= {mic [18], {10 {~mic [18]}}};
led <= '1; // overflow warning
end
else begin
mic_11bit <= mic [16:6];
mic_11bit <= mic [17:7];
led <= '0;
end
end
Expand Down
30 changes: 15 additions & 15 deletions labs/3_music/3_10_spectrum_analyzer/spectrum.sv
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ module spectrum
w_y = $clog2 ( screen_height ),

// Frequency bands of the spectrum analyzer
logic [0:11] [13:0] freq = '{132, 152, 174, 200, 230, 264,
303, 348, 400, 458, 525, 600}
logic [0:11][13:0] freq = '{132, 152, 174, 200, 230, 264,
303, 348, 400, 458, 525, 600}
)
(
input clk,
Expand All @@ -30,16 +30,16 @@ module spectrum

//------------------------------------------------------------------------

logic [11:0] [16:0] band_count; // defines period converter.pulse_out
logic [11:0] [10:0] rms_out; // result of spectrum analyzer band
logic white;
logic [ w_y:0] h_scr;
logic signed [ 9:0] [10:0] in;
logic [11:0][16:0] band_count; // defines period converter.pulse_out
logic [11:0][10:0] rms_out; // result of spectrum analyzer band
logic white;
logic [ w_y:0] h_scr;
logic signed [ 9:0][10:0] in;

assign h_scr = screen_height; // shifting minimum height of strip
assign red = {w_red {white}}; //
assign green = {w_green {white}}; // - color selection
assign blue = {w_blue {white}}; //
assign h_scr = screen_height; // shifting minimum height of strip
assign red = {w_red {white}}; //
assign green = {w_green {white}}; // color selection
assign blue = {w_blue {white}}; //

//------------------------------------------------------------------------
//
Expand All @@ -48,7 +48,7 @@ module spectrum
//------------------------------------------------------------------------

// Calculation of control pulses from system clock and band
function automatic logic [16:0] b (input [13:0] f );
function automatic logic [16:0] b (input [13:0] f);
b = (clk_mhz * 31250) / f;
endfunction

Expand All @@ -62,7 +62,7 @@ module spectrum
generate

if (screen_width == 800) begin : screen_w_800
always_ff @ (posedge clk or posedge rst) begin
always_ff @(posedge clk or posedge rst) begin
if (rst)
white <= '0;
else
Expand All @@ -85,7 +85,7 @@ generate
end

else if (screen_width == 640) begin : screen_w_640
always_ff @ (posedge clk or posedge rst) begin
always_ff @(posedge clk or posedge rst) begin
if (rst)
white <= '0;
else
Expand All @@ -108,7 +108,7 @@ generate
end

else begin : screen_w_480
always_ff @ (posedge clk or posedge rst) begin
always_ff @(posedge clk or posedge rst) begin
if (rst)
white <= '0;
else
Expand Down
6 changes: 6 additions & 0 deletions labs/3_music/3_10_spectrum_analyzer/surfer.scr
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ variable_add tb.i_converter.sum_abs
variable_add tb.i_converter.ema
variable_add tb.i_converter.rms_out
variable_add tb.i_converter.switch
variable_add tb.i_convert.ina
variable_add tb.i_convert.ing

item_focus a
item_set_format Signed
Expand All @@ -32,5 +34,9 @@ item_focus j
item_set_format Unsigned
item_focus k
item_set_format Unsigned
item_focus l
item_set_format Signed
item_focus m
item_set_format Unsigned

scope_select tb.i_converter
Loading
Loading