|

楼主 |
发表于 2010-1-11 21:20:58
|
显示全部楼层
`timescale 1ns/1ns
module t;
reg clk,reset;
reg [5:0] rptr;
reg signed [23:0] sindat[0:64];
integer file;
wire dout;
reg [23:0] din;
reg load;
initial
begin
$readmemb("shift.dat",sindat);
end
//export the waveform
initial
begin
file=$fopen("shift.txt","w");
end
always @(posedge clk)
begin
$fwrite(file,"%d\n",t.m.dout);
end
//The main block, generate the stimulus
always @(posedge load)
begin
rptr<=rptr + 1;
end
always @(posedge load)
begin
if (reset ==1'b1)
din <= 0;
else
din <= sindat[rptr]; //the filter_in has 4-bit-width
end
initial
begin
rptr =0;
clk=1;
load=0;
reset=0;
#40 reset = 1;
#20 reset = 0;
#60 load = 1;
#20 load = 0;
#(127*40+20) load =1;
#20 load = 0;
#(127*40+20) load =1;
#20 load = 0;
#(127*40+20) load =1;
#20 load = 0;
#(20 * 1000) $stop;
end
always #(20) clk=~clk;
shifter m(.din(din),.dout(dout),.clk(clk),.load(load),.reset(reset));
endmodule |
|