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

Subversion Repositories fht

[/] [fht/] [web_uploads/] [fht.v] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 root
 
2
 
3
// Code for Fast Hadamhard Transforms
4
// Developed by Kaushal D. Buch
5
// March, 2007.
6
 
7
 
8
module fht ( clk, reset, data_i , data_o );
9
 
10
 
11
input clk,reset ;
12
input [7:0] data_i ;
13
 
14
output [7:0] data_o ;
15
 
16
 
17
wire clk,reset ;
18
wire [7:0] data_i,comp ;
19
 
20
reg [7:0] data_o ;
21
 
22
 
23
reg [7:0] data_d,a,b,data_od,a_d,b_d,comp_d,temp_d,temp ;
24
reg [1:0] cnt ;
25
reg data_valid ;
26
 
27
always@(posedge clk or negedge reset)
28
begin
29
  if(!reset)
30
  begin
31
    data_d  <= 'b0 ;
32
    comp_d  <= 'b0 ;
33
    temp_d  <= 'b0 ;
34
  end
35
  else
36
  begin
37
    data_d  <= data_i ;
38
    comp_d  <= comp ;
39
    temp_d  <= temp ;
40
  end
41
end
42
 
43
always@(posedge clk or negedge reset)
44
begin
45
  if(!reset)
46
  begin
47
    cnt     <= 'b0 ;
48
  end
49
  else if(cnt < 2'b11)
50
  begin
51
    cnt     <= cnt + 'b1 ;
52
  end
53
  else
54
  begin
55
    cnt     <= 'b0 ;
56
  end
57
end
58
 
59
 
60
always@(cnt or data_d or a or b or temp_d)
61
begin
62
  case(cnt)
63
  2'b00 : begin
64
            temp  =  data_d  ;
65
            data_valid = 'b0 ;
66
          end
67
 
68
  2'b01 : begin
69
            temp  =  comp_d  ;
70
            data_valid = 'b0 ;
71
          end
72
 
73
  2'b10 : begin
74
            temp  =  comp_d  ;
75
            data_valid = 'b1 ;
76
          end
77
  default : begin
78
            temp = temp_d    ;
79
            data_valid = 'b0 ;
80
            end
81
  endcase
82
end
83
 
84
assign comp = {temp[6] - temp[7], temp[4] - temp[5], temp[2] - temp[3],
85
  temp[0] - temp[1], temp[6] + temp[7], temp[4] + temp[5], temp[2]
86
  + temp[3], temp[0] + temp[1]} ;
87
 
88
always@(posedge clk or negedge reset)
89
begin
90
  if(!reset)
91
  begin
92
    data_o  <= 'b0 ;
93
  end
94
  else if(data_valid)
95
  begin
96
    data_o  <= temp ;
97
  end
98
end
99
 
100
endmodule
101
 
102
 
103
 
104
 
105
 
106
 

powered by: WebSVN 2.1.0

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