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

Subversion Repositories sqmusic

[/] [sqmusic/] [trunk/] [1942/] [1942.v] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 gryzor
/*
2
        1942 simple board setup in order to test SQMUSIC.
3
 
4
        Requirements:
5
                  TV80, Z80 Verilog module
6
                        Dump of Z80 ROM from 1942 board
7
 
8
  (c) Jose Tejada Gomez, 9th May 2013
9
  You can use this file following the GNU GENERAL PUBLIC LICENSE version 3
10
  Read the details of the license in:
11
  http://www.gnu.org/licenses/gpl.txt
12
 
13
  Send comments to: jose.tejada@ieee.org
14
 
15
*/
16
 
17
`timescale 1ns / 1ps
18
 
19
module sound1942;
20 9 gryzor
// inputs to Z80
21
reg reset_n, clk, int_n, sound_clk;
22
parameter dump_text = 1; // set to 1 to dump data to use log2wav later
23
parameter pwm_sound=1;
24 3 gryzor
 
25 9 gryzor
initial begin
26 5 gryzor
/*    $dumpfile("dump.lxt");
27 9 gryzor
  $dumpvars(1,pwm0);
28
  $dumpvars(1,pwm1);*/
29 3 gryzor
//              $dumpvars();
30
//    $dumpon;
31
//              $shm_open("1942.shm");
32 9 gryzor
//      $shm_probe( sound1942, "ACTFS" );
33
  reset_n=0;
34
  #1500 reset_n=1;
35
        $display("1942 START");
36
        // change finish time depending on song
37
//#3000 $finish;
38
   #6e9 $finish;
39
end
40 3 gryzor
 
41 9 gryzor
always begin // main clock
42
  clk=0;
43
  forever clk = #167 ~clk;
44
end
45 3 gryzor
 
46 9 gryzor
always begin // sound clock
47
  sound_clk=0;
48
  forever sound_clk = #334 ~sound_clk;
49
end
50 3 gryzor
 
51 9 gryzor
parameter int_low_time=167*2*80;
52
 
53
always begin // interrupt clock
54
  int_n=1;
55
  forever begin
56
                #(4166667-int_low_time) int_n=0; // 240Hz
57
                //$display("IRQ request @ %t us",$time/1e6);
58
                #(int_low_time) int_n=1;
59
        end
60
end
61
 
62
 
63
wire [3:0] ay0_a, ay0_b, ay0_c, ay1_a, ay1_b, ay1_c;
64
computer_1942 #(0) game( .clk(clk), .sound_clk(sound_clk),
65
  .int_n(int_n), .reset_n(reset_n),
66
  .ay0_a(ay0_a), .ay0_b(ay0_b), .ay0_c(ay0_c),
67
  .ay1_a(ay1_a), .ay1_b(ay1_b), .ay1_c(ay1_c) );
68
 
69
if ( pwm_sound ) begin // PWM OUTPUT
70
        reg vhf_clk;
71
        always begin
72
                vhf_clk=0;
73
                forever begin
74
                if( vhf_clk && dump_text ) begin
75
                $display("%d, %d, %d, %d, %d, %d",
76
                pwm0_a, pwm0_b, pwm0_c, pwm1_a, pwm1_b, pwm1_c );
77
                end
78
                #10 vhf_clk <= ~vhf_clk; // 50MHz
79 3 gryzor
                end
80 9 gryzor
        end
81 5 gryzor
 
82 9 gryzor
        SQM_PWM_1 a0pwm( .clk(vhf_clk), .reset_n(reset_n), .din(ay0_a), .pwm(pwm0_a) );
83
        SQM_PWM_1 b0pwm( .clk(vhf_clk), .reset_n(reset_n), .din(ay0_b), .pwm(pwm0_b) );
84
        SQM_PWM_1 c0pwm( .clk(vhf_clk), .reset_n(reset_n), .din(ay0_c), .pwm(pwm0_c) );
85
 
86
        SQM_PWM_1 a1pwm( .clk(vhf_clk), .reset_n(reset_n), .din(ay1_a), .pwm(pwm1_a) );
87
        SQM_PWM_1 b1pwm( .clk(vhf_clk), .reset_n(reset_n), .din(ay1_b), .pwm(pwm1_b) );
88
        SQM_PWM_1 c1pwm( .clk(vhf_clk), .reset_n(reset_n), .din(ay1_c), .pwm(pwm1_c) );
89
end
90
else begin // LINEAR OUTPUT
91
        wire [15:0] amp0_y, amp1_y;
92 4 gryzor
        SQM_AMP amp0( .A(ay0_a), .B(ay0_b), .C(ay0_c), .Y( amp0_y ));
93 5 gryzor
        SQM_AMP amp1( .A(ay1_a), .B(ay1_b), .C(ay1_c), .Y( amp1_y ));
94 9 gryzor
        always #22676 begin // 44.1kHz sample   
95
                $display("%d", amp0_y*10 );
96
                $display("%d", amp1_y *10);
97 5 gryzor
        end
98 9 gryzor
end
99 3 gryzor
endmodule
100
 
101
 

powered by: WebSVN 2.1.0

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