OpenCores
URL https://opencores.org/ocsvn/aoocs/aoocs/trunk

Subversion Repositories aoocs

[/] [aoocs/] [trunk/] [tests/] [tb_drv_audio.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alfik
module tb_drv_audio();
2
 
3
 
4
 
5
reg [5:0] volume0f;
6
reg [5:0] volume1f;
7
reg [5:0] volume2f;
8
reg [5:0] volume3f;
9
reg [7:0] sample0f;
10
reg [7:0] sample1f;
11
reg [7:0] sample2f;
12
reg [7:0] sample3f;
13
 
14
always @(posedge clk_12 or negedge reset_n) begin
15
    if(reset_n == 1'b0) begin
16
        volume0f <= 6'd0;
17
        volume1f <= 6'd0;
18
        volume2f <= 6'd0;
19
        volume3f <= 6'd0;
20
        sample0f <= 8'd0;
21
        sample1f <= 8'd0;
22
        sample2f <= 8'd0;
23
        sample3f <= 8'd0;
24
    end
25
    else begin
26
        volume0f <= 6'd60;
27
        volume1f <= 6'd60;
28
        volume2f <= 6'd60;
29
        volume3f <= 6'd60;
30
 
31
        sample0f <= sample0f + 8'd1;
32
        sample1f <= sample1f + 8'd1;
33
        sample2f <= sample2f + 8'd1;
34
        sample3f <= sample3f + 8'd1;
35
    end
36
end
37
 
38
wire [13:0] mult_left_1;
39
assign mult_left_1 =
40
    ((volume1f[0] == 1'b1)? { {6{sample1f[7]}}, sample1f[7:0] } : 14'd0) +
41
    ((volume1f[1] == 1'b1)? { {5{sample1f[7]}}, sample1f[7:0], 1'b0 } : 14'd0) +
42
    ((volume1f[2] == 1'b1)? { {4{sample1f[7]}}, sample1f[7:0], 2'b0 } : 14'd0) +
43
    ((volume1f[3] == 1'b1)? { {3{sample1f[7]}}, sample1f[7:0], 3'b0 } : 14'd0) +
44
    ((volume1f[4] == 1'b1)? { {2{sample1f[7]}}, sample1f[7:0], 4'b0 } : 14'd0) +
45
    ((volume1f[5] == 1'b1)? { {1{sample1f[7]}}, sample1f[7:0], 5'b0 } : 14'd0);
46
 
47
wire [13:0] mult_left_2;
48
assign mult_left_2 =
49
    ((volume2f[0] == 1'b1)? { {6{sample2f[7]}}, sample2f[7:0] } : 14'd0) +
50
    ((volume2f[1] == 1'b1)? { {5{sample2f[7]}}, sample2f[7:0], 1'b0 } : 14'd0) +
51
    ((volume2f[2] == 1'b1)? { {4{sample2f[7]}}, sample2f[7:0], 2'b0 } : 14'd0) +
52
    ((volume2f[3] == 1'b1)? { {3{sample2f[7]}}, sample2f[7:0], 3'b0 } : 14'd0) +
53
    ((volume2f[4] == 1'b1)? { {2{sample2f[7]}}, sample2f[7:0], 4'b0 } : 14'd0) +
54
    ((volume2f[5] == 1'b1)? { {1{sample2f[7]}}, sample2f[7:0], 5'b0 } : 14'd0);
55
 
56
wire [13:0] mult_right_0;
57
assign mult_right_0 =
58
    ((volume0f[0] == 1'b1)? { {6{sample0f[7]}}, sample0f[7:0] } : 14'd0) +
59
    ((volume0f[1] == 1'b1)? { {5{sample0f[7]}}, sample0f[7:0], 1'b0 } : 14'd0) +
60
    ((volume0f[2] == 1'b1)? { {4{sample0f[7]}}, sample0f[7:0], 2'b0 } : 14'd0) +
61
    ((volume0f[3] == 1'b1)? { {3{sample0f[7]}}, sample0f[7:0], 3'b0 } : 14'd0) +
62
    ((volume0f[4] == 1'b1)? { {2{sample0f[7]}}, sample0f[7:0], 4'b0 } : 14'd0) +
63
    ((volume0f[5] == 1'b1)? { {1{sample0f[7]}}, sample0f[7:0], 5'b0 } : 14'd0);
64
 
65
wire [13:0] mult_right_3;
66
assign mult_right_3 =
67
    ((volume3f[0] == 1'b1)? { {6{sample3f[7]}}, sample3f[7:0] } : 14'd0) +
68
    ((volume3f[1] == 1'b1)? { {5{sample3f[7]}}, sample3f[7:0], 1'b0 } : 14'd0) +
69
    ((volume3f[2] == 1'b1)? { {4{sample3f[7]}}, sample3f[7:0], 2'b0 } : 14'd0) +
70
    ((volume3f[3] == 1'b1)? { {3{sample3f[7]}}, sample3f[7:0], 3'b0 } : 14'd0) +
71
    ((volume3f[4] == 1'b1)? { {2{sample3f[7]}}, sample3f[7:0], 4'b0 } : 14'd0) +
72
    ((volume3f[5] == 1'b1)? { {1{sample3f[7]}}, sample3f[7:0], 5'b0 } : 14'd0);
73
 
74
wire [14:0] left_channel;
75
assign left_channel = mult_left_1 + mult_left_2;
76
 
77
wire [14:0] right_channel;
78
assign right_channel = mult_right_0 + mult_right_3;
79
 
80
 
81
//--------
82
reg clk_12;
83
reg reset_n;
84
 
85
reg [5:0] volume0;
86
reg [5:0] volume1;
87
reg [5:0] volume2;
88
reg [5:0] volume3;
89
reg [7:0] sample0;
90
reg [7:0] sample1;
91
reg [7:0] sample2;
92
reg [7:0] sample3;
93
 
94
wire ac_sdat;
95
assign ac_sdat = 1'b0;
96
 
97
drv_audio drv_audio_inst(
98
    .clk_12(clk_12),
99
    .reset_n(reset_n),
100
 
101
    // audio interface
102
    .volume0(volume0),
103
    .volume1(volume1),
104
    .volume2(volume2),
105
    .volume3(volume3),
106
    .sample0(sample0),
107
    .sample1(sample1),
108
    .sample2(sample2),
109
    .sample3(sample3),
110
 
111
    // audio codec
112
    .ac_sclk(),
113
    .ac_sdat(ac_sdat),
114
    .ac_xclk(),
115
    .ac_bclk(),
116
    .ac_dat(),
117
    .ac_lr()
118
);
119
 
120
initial begin
121
    clk_12 = 1'b0;
122
    forever #5 clk_12 = ~clk_12;
123
end
124
 
125
initial begin
126
    $dumpfile("tb_drv_audio.vcd");
127
    $dumpvars(0);
128
    $dumpon();
129
 
130
    reset_n = 1'b0;
131
    #10 reset_n = 1'b1;
132
 
133
    volume0 = 63;
134
    volume1 = 30;
135
    volume2 = 0;
136
    volume3 = 32;
137
 
138
    sample0 = 255;
139
    sample1 = 128;
140
    sample2 = 127;
141
    sample3 = 0;
142
 
143
 
144
    #10000
145
 
146
    $finish();
147
end
148
 
149
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.