Documente Academic
Documente Profesional
Documente Cultură
always@(posedge clk)
begin
if(rst==1)
begin
q=0;
end
else
begin
q=d;
end
end
endmodule
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 22:07:00 01/29/2014
// Design Name: filterfir
// Module Name: D:/fft/floating_mul/tst.v
// Project Name: floating_mul
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: filterfir
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
module tst;
// Inputs
reg clk;
reg rst;
reg [7:0] x;
// Outputs
wire [9:0] dataout;
// Instantiate the Unit Under Test (UUT)
filterfir uut (
.clk(clk),
.rst(rst),
.x(x),
.dataout(dataout)
);
initial begin
// Initialize Inputs
clk = 0;
rst = 0;
x = 0;
#100;
rst = 1;
#100;
rst = 0;
x = 8'd5;
#100;
x = 8'd10;
#100;
x = 8'd12;
#100;
x = 8'd15;
#100;
x = 8'd16;
#100;
end
always begin #50 clk=~clk; end
endmodule
modulefir_filter(
inputclock,
inputreset,
inputwire[15:0]input_sample,
outputreg[15:0]output_sample);
parameterN=13;
regsigned[15:0]coeffs[12:0];
reg[15:0]holderBefore[12:0];
wire[15:0]toAdd[12:0];
always@(*)
begin
coeffs[0]=6375;
coeffs[1]=1;
coeffs[2]=3656;
coeffs[3]=3;
coeffs[4]=4171;
coeffs[5]=4;
coeffs[6]=28404;
coeffs[7]=4;
coeffs[8]=4171;
coeffs[9]=3;
coeffs[10]=3656;
coeffs[11]=1;
coeffs[12]=6375;
end
genvari;
generate
for(i=0;i<N;i=i+1)
begin:mult
multipliermult1(
.dataa(coeffs[i]),
.datab(holderBefore[i]),
.result(toAdd[i]));
end
endgenerate
always@(posedgeclockorposedgereset)
begin
if(reset)
begin
holderBefore[12]<=0;
holderBefore[11]<=0;
holderBefore[10]<=0;
holderBefore[9]<=0;
holderBefore[8]<=0;
holderBefore[7]<=0;
holderBefore[6]<=0;
holderBefore[5]<=0;
holderBefore[4]<=0;
holderBefore[3]<=0;
holderBefore[2]<=0;
holderBefore[1]<=0;
holderBefore[0]<=0;
output_sample<=0;
end
else
begin
holderBefore[12]<=holderBefore[11];
holderBefore[11]<=holderBefore[10];
holderBefore[10]<=holderBefore[9];
holderBefore[9]<=holderBefore[8];
holderBefore[8]<=holderBefore[7];
holderBefore[7]<=holderBefore[6];
holderBefore[6]<=holderBefore[5];
holderBefore[5]<=holderBefore[4];
holderBefore[4]<=holderBefore[3];
holderBefore[3]<=holderBefore[2];
holderBefore[2]<=holderBefore[1];
holderBefore[1]<=holderBefore[0];
holderBefore[0]<=input_sample;
output_sample<=(input_sample+toAdd[0]+toAdd[1]+
toAdd[2]+toAdd[3]+toAdd[4]+toAdd[5]+
toAdd[6]+toAdd[7]+toAdd[8]+toAdd[9]+
toAdd[10]+toAdd[11]+toAdd[12]);
end
end
endmodule