Initial import

git-svn-id: http://moon:8086/svn/vhdl/trunk@5 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2008-08-23 08:20:30 +00:00
parent bfbeba5129
commit d3bd08bb52
160 changed files with 56260 additions and 0 deletions
+37
View File
@@ -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)
+20
View File
@@ -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;
+16
View File
@@ -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
+86
View File
@@ -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.
+16
View File
@@ -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
+29
View File
@@ -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}
+10
View File
@@ -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;
+14
View File
@@ -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
+31
View File
@@ -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}