URL
https://opencores.org/ocsvn/sqmusic/sqmusic/trunk
[/] [sqmusic/] [trunk/] [sqm/] [sq_pg.v] - Diff between revs 12 and 16
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 12 |
Rev 16 |
|
/*
|
|
SQmusic
|
|
|
|
(c) Jose Tejada Gomez, 9th May 2013
|
|
You can use this file following the GNU GENERAL PUBLIC LICENSE version 3
|
|
Read the details of the license in:
|
|
http://www.gnu.org/licenses/gpl.txt
|
|
|
|
Send comments to: jose.tejada@ieee.org
|
|
|
|
*/
|
|
|
module sq_pg(
|
module sq_pg(
|
input clk,
|
input clk,
|
input reset_n,
|
input reset_n,
|
input [10:0] fnumber,
|
input [10:0] fnumber,
|
input [2:0] block,
|
input [2:0] block,
|
input [3:0] multiple,
|
input [3:0] multiple,
|
output [9:0]phase );
|
output [9:0]phase );
|
|
|
reg [19:0] count;
|
reg [19:0] count;
|
assign phase = count[19:10];
|
assign phase = count[19:10];
|
|
|
wire [19:0]fmult;
|
wire [19:0]fmult;
|
|
|
always @(*) begin
|
always @(*) begin
|
case( multiple )
|
case( multiple )
|
4'b0: fmult = (phase << block) >> 1'b1;
|
4'b0: fmult = (phase << block) >> 1'b1;
|
default: fmult = (phase<<block)*multiple;
|
default: fmult = (phase<<block)*multiple;
|
endcase
|
endcase
|
end
|
end
|
|
|
always @(posedge clk or negedge reset_n ) begin
|
always @(posedge clk or negedge reset_n ) begin
|
if( !reset_n )
|
if( !reset_n )
|
count <= 20'b0;
|
count <= 20'b0;
|
else begin
|
else begin
|
count <= count + fmult;
|
count <= count + fmult;
|
end
|
end
|
end
|
end
|
|
|
endmodule
|
endmodule
|
|
|
module sq_sin(
|
module sq_sin(
|
// input clk,
|
// input clk,
|
// input reset_n,
|
// input reset_n,
|
input [9:0]phase,
|
input [9:0]phase,
|
output [19:0] val
|
output [19:0] val
|
)
|
)
|
|
|
reg [19:0] sin_table[1023:0];
|
reg [19:0] sin_table[1023:0];
|
|
|
initial begin
|
initial begin
|
$readmemh("sin_table.hex", sin_table);
|
$readmemh("sin_table.hex", sin_table);
|
end
|
end
|
|
|
assign val = sin_table[phase];
|
assign val = sin_table[phase];
|
|
|
end
|
end
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.