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

Subversion Repositories eco32

[/] [eco32/] [trunk/] [fpga/] [mc/] [src/] [fms/] [fms.v] - Blame information for rev 298

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 218 hellwig
//
2
// fms.v -- FM synthesizer
3
//
4 231 hellwig
// NOTE: This is a fake module for now.
5
//       It allows writing directly to the DAC.
6 218 hellwig
//
7
 
8
 
9 290 hellwig
`timescale 1ns/10ps
10
`default_nettype none
11
 
12
 
13
module fms(clk, rst,
14
           stb, we, addr,
15 218 hellwig
           data_in, data_out,
16 290 hellwig
           ack,
17 218 hellwig
           next, sample_l, sample_r);
18
    // internal interface
19
    input clk;
20 290 hellwig
    input rst;
21
    input stb;
22
    input we;
23 218 hellwig
    input [11:2] addr;
24
    input [31:0] data_in;
25
    output [31:0] data_out;
26 290 hellwig
    output ack;
27 218 hellwig
    // DAC controller interface
28
    input next;
29
    output [15:0] sample_l;
30
    output [15:0] sample_r;
31
 
32
  reg [31:0] value;
33 231 hellwig
  reg value_needed;
34 218 hellwig
 
35
  always @(posedge clk) begin
36 290 hellwig
    if (rst) begin
37 218 hellwig
      value[31:0] <= 32'h0;
38 231 hellwig
      value_needed <= 0;
39 218 hellwig
    end else begin
40 290 hellwig
      if (stb & we & ~|addr[11:2]) begin
41 218 hellwig
        value[31:0] <= data_in[31:0];
42 231 hellwig
        value_needed <= 0;
43
      end else begin
44
        if (next) begin
45
          value_needed <= 1;
46
        end
47 218 hellwig
      end
48
    end
49
  end
50
 
51 231 hellwig
  assign data_out[31:0] = { 31'h0, value_needed };
52 290 hellwig
  assign ack = stb;
53 218 hellwig
 
54
  assign sample_l[15:0] = value[31:16];
55
  assign sample_r[15:0] = value[15:0];
56
 
57
endmodule

powered by: WebSVN 2.1.0

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