Initial import
git-svn-id: http://moon:8086/svn/vhdl/trunk@5 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
function eval_filter(N)
|
||||
omega_lp = 0.15
|
||||
omega_hp = 0.05
|
||||
|
||||
omega_bp_m = 0.02;
|
||||
bw2_bp = 0.02;
|
||||
|
||||
lp = lowpass(N, omega_lp, 1.0);
|
||||
coef_lp = hann(N)'.*lp./sum(lp.^2);
|
||||
|
||||
hp = lowpass(N, 0.5-omega_hp, 1.0).*cos(pi*(0:N-1));
|
||||
coef_hp = hp./sum(hp.^2).*hann(N)';
|
||||
|
||||
bp = lowpass(N, bw2_bp/2, 1.0).*cos(2*pi*omega_bp_m*(0:N-1));
|
||||
coef_bp = bp./sum(bp.^2).*hann(N)';
|
||||
|
||||
abs_lp = 20*log10(abs(fft(coef_lp)));
|
||||
abs_hp = 20*log10(abs(fft(coef_hp)));
|
||||
abs_bp = 20*log10(abs(fft(coef_bp)));
|
||||
|
||||
close all;
|
||||
plot((0:N/2)/N, abs_lp(1:N/2+1));grid;
|
||||
figure
|
||||
plot((0:N/2)/N, abs_hp(1:N/2+1));grid;
|
||||
figure
|
||||
plot((0:N/2)/N, abs_bp(1:N/2+1));grid;
|
||||
|
||||
figure
|
||||
plot((0:N-1), coef_lp);grid;
|
||||
figure
|
||||
plot((0:N-1), coef_hp);grid;
|
||||
figure
|
||||
plot((0:N-1), coef_bp);grid;
|
||||
|
||||
mean_lp = mean(coef_lp-mean(coef_lp))
|
||||
mean_hp = mean(coef_hp)
|
||||
mean_bp = mean(coef_bp)
|
||||
@@ -0,0 +1,20 @@
|
||||
function coef = lowpass(N, omega, scale)
|
||||
|
||||
phi = 0;
|
||||
dphi = 2*omega;
|
||||
if (mod(N, 2) == 0)
|
||||
M = N/2;
|
||||
for i=0:M-1,
|
||||
phi = phi + dphi;
|
||||
coef(M+i+1) = scale*sinc(phi);
|
||||
coef(M-i-1+1) = coef(M+i+1);
|
||||
end;
|
||||
else
|
||||
M = (N-1)/2;
|
||||
for i=1:M,
|
||||
phi = phi + dphi;
|
||||
coef(M+i+1) = scale*sinc(phi);
|
||||
coef(M-i+1) = coef(M+i+1);
|
||||
end;
|
||||
coef(M+1) = scale*Sinc(0.0);
|
||||
end;
|
||||
@@ -0,0 +1,16 @@
|
||||
vlib work
|
||||
vcom -explicit -93 "../../../lib/fixed/fixed_pkg_c.vhd"
|
||||
vcom -explicit -93 "../../../lib/PCK_FIO-2002.7/PCK_FIO_1993.vhd"
|
||||
vcom -explicit -93 "../../../lib/PCK_FIO-2002.7/PCK_FIO_1993_BODY.vhd"
|
||||
vcom -explicit -93 "../src/filter_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_stage_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_stage.vhd"
|
||||
vcom -explicit -93 "../src/fir_iterative_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_iterative.vhd"
|
||||
vcom -explicit -93 "../src/tb_fir_iterative.vhd"
|
||||
vsim -t 1ps -lib work tb_fir_iterative
|
||||
do {tb_fir_iterative.wdo}
|
||||
view wave
|
||||
view structure
|
||||
view signals
|
||||
run 20us
|
||||
@@ -0,0 +1,86 @@
|
||||
onerror {resume}
|
||||
quietly WaveActivateNextPane {} 0
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/srst
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/clk
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/h_addr
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/ready
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/x_din
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/s
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/xo
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/coeffs
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/xtap_cnt_w
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/xtap_cnt_r
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/htap_cnt
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/xi
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/yo
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/stage_en
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/fir_stage_clr
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/fir_stage_en
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/cnt_reset
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/x_valid
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/valid
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/y_valid
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/y_dout
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/new_round
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/x_stage
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/h_din
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/ymem
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/xmem
|
||||
add wave -noupdate -divider {Xmem Dual}
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/srst
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/clk
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/h_addr
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/ready
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/x_din
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/s
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/xo
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/coeffs
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/xtap_cnt_w
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/xtap_cnt_r
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/htap_cnt
|
||||
add wave -noupdate -format Analog-Step -scale 10.0 /tb_fir_iterative/xi
|
||||
add wave -noupdate -format Analog-Step -scale 10.0 /tb_fir_iterative/yo
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/stage_en
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/valid
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/y_valid
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/y_valid
|
||||
add wave -noupdate -format Analog-Step -radix decimal -scale 0.00061037000000000005 /tb_fir_iterative/uut_fir_iterative/y_dout
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/x_valid
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/new_round
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/x_stage
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/h_din
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/y_stage
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/ymem
|
||||
add wave -noupdate -divider {FIR Stage}
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/clk
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/in_valid
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/y_out_clr
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/x_in
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/h_in
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/y_in
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/xin
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/hin
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/yin
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/prod
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/x_out
|
||||
add wave -noupdate -format Literal -radix hexadecimal /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/y_out
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/valid
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/p_valid
|
||||
add wave -noupdate -format Literal /tb_fir_iterative/uut_fir_iterative/s
|
||||
add wave -noupdate -format Logic /tb_fir_iterative/uut_fir_iterative/inst_fir_stage/out_valid
|
||||
TreeUpdate [SetDefaultTree]
|
||||
WaveRestoreCursors {{Cursor 1} {1892287 ps} 0}
|
||||
configure wave -namecolwidth 140
|
||||
configure wave -valuecolwidth 100
|
||||
configure wave -justifyvalue left
|
||||
configure wave -signalnamewidth 1
|
||||
configure wave -snapdistance 10
|
||||
configure wave -datasetprefix 0
|
||||
configure wave -rowmargin 4
|
||||
configure wave -childrowmargin 2
|
||||
configure wave -gridoffset 0
|
||||
configure wave -gridperiod 1
|
||||
configure wave -griddelta 40
|
||||
configure wave -timeline 0
|
||||
update
|
||||
WaveRestoreZoom {1750644 ps} {2771198 ps}
|
||||
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
vlib work
|
||||
vcom -explicit -93 "../../../lib/fixed/fixed_pkg_c.vhd"
|
||||
vcom -explicit -93 "../../../lib/PCK_FIO-2002.7/PCK_FIO_1993.vhd"
|
||||
vcom -explicit -93 "../../../lib/PCK_FIO-2002.7/PCK_FIO_1993_BODY.vhd"
|
||||
vcom -explicit -93 "../src/filter_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_stage_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_stage.vhd"
|
||||
vcom -explicit -93 "../src/fir_parallel_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_parallel.vhd"
|
||||
vcom -explicit -93 "../src/tb_fir_parallel.vhd"
|
||||
vsim -t 1ps -lib work tb_fir_parallel
|
||||
do {tb_fir_parallel.wdo}
|
||||
view wave
|
||||
view structure
|
||||
view signals
|
||||
run 1000us
|
||||
@@ -0,0 +1,29 @@
|
||||
onerror {resume}
|
||||
quietly WaveActivateNextPane {} 0
|
||||
add wave -noupdate -format Logic /tb_fir_parallel/clk
|
||||
add wave -noupdate -format Logic /tb_fir_parallel/srst
|
||||
add wave -noupdate -format Logic /tb_fir_parallel/in_valid
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_parallel/x_in
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_parallel/y_out
|
||||
add wave -noupdate -format Logic /tb_fir_parallel/out_valid
|
||||
add wave -noupdate -format Logic /tb_fir_parallel/fileout_enable
|
||||
add wave -noupdate -format Analog-Interpolated -scale 10.0 /tb_fir_parallel/xi
|
||||
add wave -noupdate -format Analog-Interpolated -scale 10.0 /tb_fir_parallel/yo
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_parallel/coeff_in
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_parallel/uut_fir_parallel/h
|
||||
TreeUpdate [SetDefaultTree]
|
||||
WaveRestoreCursors {{Cursor 1} {19450000 ps} 0}
|
||||
configure wave -namecolwidth 140
|
||||
configure wave -valuecolwidth 100
|
||||
configure wave -justifyvalue left
|
||||
configure wave -signalnamewidth 1
|
||||
configure wave -snapdistance 10
|
||||
configure wave -datasetprefix 0
|
||||
configure wave -rowmargin 4
|
||||
configure wave -childrowmargin 2
|
||||
configure wave -gridoffset 0
|
||||
configure wave -gridperiod 1
|
||||
configure wave -griddelta 40
|
||||
configure wave -timeline 0
|
||||
update
|
||||
WaveRestoreZoom {0 ps} {25152750 ps}
|
||||
@@ -0,0 +1,10 @@
|
||||
% Read data
|
||||
function tb_fir_results()
|
||||
fir = TEXTREAD('fir.txt')';
|
||||
|
||||
N= length(fir);
|
||||
|
||||
% Output
|
||||
close all;
|
||||
plot(0:N-1, fir); grid;
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
vlib work
|
||||
vcom -explicit -93 "../../../lib/fixed/fixed_pkg_c.vhd"
|
||||
vcom -explicit -93 "../../../lib/PCK_FIO-2002.7/PCK_FIO_1993.vhd"
|
||||
vcom -explicit -93 "../../../lib/PCK_FIO-2002.7/PCK_FIO_1993_BODY.vhd"
|
||||
vcom -explicit -93 "../src/filter_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_stage_pkg.vhd"
|
||||
vcom -explicit -93 "../src/fir_stage.vhd"
|
||||
vcom -explicit -93 "../src/tb_fir_stage.vhd"
|
||||
vsim -t 1ps -lib work tb_fir_stage
|
||||
do {tb_fir_stage.wdo}
|
||||
view wave
|
||||
view structure
|
||||
view signals
|
||||
run 2us
|
||||
@@ -0,0 +1,31 @@
|
||||
onerror {resume}
|
||||
quietly WaveActivateNextPane {} 0
|
||||
add wave -noupdate -format Logic /tb_fir_stage/clk
|
||||
add wave -noupdate -format Logic /tb_fir_stage/srst
|
||||
add wave -noupdate -divider Input
|
||||
add wave -noupdate -format Logic /tb_fir_stage/in_valid
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_stage/x_in
|
||||
add wave -noupdate -format Literal /tb_fir_stage/xi
|
||||
add wave -noupdate -divider Output
|
||||
add wave -noupdate -format Logic /tb_fir_stage/out_valid
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_stage/y_out
|
||||
add wave -noupdate -format Analog-Step -scale 10.0 /tb_fir_stage/yo
|
||||
add wave -noupdate -divider {Stage signals}
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_stage/x
|
||||
add wave -noupdate -format Literal -radix decimal /tb_fir_stage/y
|
||||
TreeUpdate [SetDefaultTree]
|
||||
WaveRestoreCursors {{Cursor 1} {1655000 ps} 0}
|
||||
configure wave -namecolwidth 140
|
||||
configure wave -valuecolwidth 100
|
||||
configure wave -justifyvalue left
|
||||
configure wave -signalnamewidth 1
|
||||
configure wave -snapdistance 10
|
||||
configure wave -datasetprefix 0
|
||||
configure wave -rowmargin 4
|
||||
configure wave -childrowmargin 2
|
||||
configure wave -gridoffset 0
|
||||
configure wave -gridperiod 1
|
||||
configure wave -griddelta 40
|
||||
configure wave -timeline 0
|
||||
update
|
||||
WaveRestoreZoom {0 ps} {2100 ns}
|
||||
Reference in New Issue
Block a user