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

Subversion Repositories canny_edge_detector

[/] [canny_edge_detector/] [trunk/] [vhdl_src/] [buffer.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 angelobacc
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
USE ieee.numeric_std.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5
 
6
entity CacheSystem is
7
  generic (
8
        DATA_WIDTH : integer := 8;
9
        WINDOW_SIZE : integer := 9;
10
        ROW_BITS : integer := 9;
11
        COL_BITS : integer := 10;
12
        NO_OF_ROWS : integer := 480;
13
        NO_OF_COLS : integer := 640
14
        );
15
  port(
16
        clk : in std_logic;
17
        fsync_in : in std_logic;
18
        pdata_in : in std_logic_vector(DATA_WIDTH -1 downto 0);
19
        --fsync_out : out std_logic;
20
        pdata_out1 : out std_logic_vector(DATA_WIDTH -1 downto 0);--primo pixel a sx
21
        pdata_out2 : out std_logic_vector(DATA_WIDTH -1 downto 0);
22
        pdata_out3 : out std_logic_vector(DATA_WIDTH -1 downto 0);
23
        pdata_out4 : out std_logic_vector(DATA_WIDTH -1 downto 0);
24
        pdata_out5 : out std_logic_vector(DATA_WIDTH -1 downto 0);
25
        pdata_out6 : out std_logic_vector(DATA_WIDTH -1 downto 0);
26
        pdata_out7 : out std_logic_vector(DATA_WIDTH -1 downto 0);
27
        pdata_out8 : out std_logic_vector(DATA_WIDTH -1 downto 0);
28
        pdata_out9 : out std_logic_vector(DATA_WIDTH -1 downto 0) -- ultimo px a destra 
29
        );
30
  end CacheSystem;
31
 
32
 
33
architecture CacheSystem of CacheSystem is
34
 
35
signal cache1 : std_logic_vector((WINDOW_SIZE*DATA_WIDTH) -1 downto 0);
36
 
37
begin
38
--
39
-- fsync_out <= fsync_temp;
40
-- fsync_buffer <= fsync_in OR fsync_temp;
41
--
42
-- fsync_delayer : process (clk)
43
-- begin
44
--      if rising_edge(clk) then
45
--        fsync_store <= fsync_store(LATENCY-2 downto 0) & fsync_in;
46
--        fsync_temp <= fsync_store(LATENCY-1);
47
--      end if;
48
-- end process fsync_delayer;
49
 
50
-- update_reg : process (clk)
51
-- begin 
52
--   if rising_edge(clk) then
53
--          RowsCounter_r <= RowsCounter_x;
54
--     ColsCounter_r <= ColsCounter_x;
55
--        end if;
56
-- end process update_reg;
57
--  
58
-- counter : process (clk, fsync_temp)
59
-- begin
60
--   --RowsCounter_x <= RowsCounter_r;
61
--   --ColsCounter_x <= ColsCounter_r;
62
--        if(fsync_temp = '0') then
63
--          RowsCounter_x <= (others => '0');
64
--          ColsCounter_x <= (others => '0');
65
--        elsif(clk'event and clk = '1') then
66
--          if ColsCounter_r /= std_logic_vector(to_unsigned(NO_OF_COLS-1, COL_BITS)) then
67
--            ColsCounter_x <= ColsCounter_r + 1;
68
--          else
69
--            RowsCounter_x <= RowsCounter_r + 1;
70
--                 ColsCounter_x <= (others => '0');
71
--          end if;
72
--   end if;
73
-- end process counter;
74
 
75
  ShiftingProcess : process (clk, fsync_in)
76
  begin
77
 
78
        if rising_edge(clk) then
79
        if fsync_in = '1' then
80
          cache1(((WINDOW_SIZE-1)*DATA_WIDTH-1) downto 0) <= cache1(((WINDOW_SIZE-0)*DATA_WIDTH-1) downto (DATA_WIDTH));
81
          cache1(((WINDOW_SIZE-0)*DATA_WIDTH-1) downto ((WINDOW_SIZE-1)*DATA_WIDTH)) <= pdata_in;
82
        end if; -- clk
83
        end if;
84
  end process ShiftingProcess;
85
 
86
  EmittingProcess : process (clk)
87
  begin
88
    if rising_edge(clk) then
89
 
90
    if fsync_in = '1' then
91
--        
92
--        -- 1 top left
93
--        if ColsCounter_r = "0000000000" OR ColsCounter_r = std_logic_vector(to_unsigned(NO_OF_COLS-1, COL_BITS)) then 
94
--          pdata_out9 <= cache1(((WINDOW_SIZE-0)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-1)*DATA_WIDTH));
95
--               pdata_out8 <= cache1(((WINDOW_SIZE-1)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-2)*DATA_WIDTH));
96
--               pdata_out7 <= cache1(((WINDOW_SIZE-2)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-3)*DATA_WIDTH));
97
--     pdata_out6 <= cache1(((WINDOW_SIZE-3)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-4)*DATA_WIDTH));
98
--               pdata_out5 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
99
--               pdata_out4 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
100
--               pdata_out3 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
101
--               pdata_out2 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
102
--               pdata_out1 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
103
--              
104
--        elsif ColsCounter_r = "0000000001" OR ColsCounter_r = std_logic_vector(to_unsigned(NO_OF_COLS-2, COL_BITS)) then 
105
--          pdata_out9 <= cache1(((WINDOW_SIZE-0)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-1)*DATA_WIDTH));
106
--               pdata_out8 <= cache1(((WINDOW_SIZE-1)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-2)*DATA_WIDTH));
107
--               pdata_out7 <= cache1(((WINDOW_SIZE-2)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-3)*DATA_WIDTH));
108
--     pdata_out6 <= cache1(((WINDOW_SIZE-3)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-4)*DATA_WIDTH));
109
--               pdata_out5 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
110
--               pdata_out4 <= cache1(((WINDOW_SIZE-5)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-6)*DATA_WIDTH));
111
--               pdata_out3 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
112
--               pdata_out2 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
113
--               pdata_out1 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
114
--              
115
--        elsif ColsCounter_r = "0000000010" OR ColsCounter_r = std_logic_vector(to_unsigned(NO_OF_COLS-3, COL_BITS)) then  
116
--          pdata_out9 <= cache1(((WINDOW_SIZE-0)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-1)*DATA_WIDTH));
117
--               pdata_out8 <= cache1(((WINDOW_SIZE-1)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-2)*DATA_WIDTH));
118
--               pdata_out7 <= cache1(((WINDOW_SIZE-2)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-3)*DATA_WIDTH));
119
--     pdata_out6 <= cache1(((WINDOW_SIZE-3)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-4)*DATA_WIDTH));
120
--               pdata_out5 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
121
--               pdata_out4 <= cache1(((WINDOW_SIZE-5)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-6)*DATA_WIDTH));
122
--               pdata_out3 <= cache1(((WINDOW_SIZE-6)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-7)*DATA_WIDTH));
123
--               pdata_out2 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
124
--               pdata_out1 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
125
--              
126
--        elsif ColsCounter_r = "0000000011" OR ColsCounter_r = std_logic_vector(to_unsigned(NO_OF_COLS-4, COL_BITS)) then 
127
--          pdata_out9 <= cache1(((WINDOW_SIZE-0)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-1)*DATA_WIDTH));
128
--               pdata_out8 <= cache1(((WINDOW_SIZE-1)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-2)*DATA_WIDTH));
129
--               pdata_out7 <= cache1(((WINDOW_SIZE-2)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-3)*DATA_WIDTH));
130
--     pdata_out6 <= cache1(((WINDOW_SIZE-3)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-4)*DATA_WIDTH));
131
--               pdata_out5 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
132
--               pdata_out4 <= cache1(((WINDOW_SIZE-5)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-6)*DATA_WIDTH));
133
--               pdata_out3 <= cache1(((WINDOW_SIZE-6)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-7)*DATA_WIDTH));
134
--               pdata_out2 <= cache1(((WINDOW_SIZE-7)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-8)*DATA_WIDTH));
135
--               pdata_out1 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
136
--
137
--        else
138
            pdata_out9 <= cache1(((WINDOW_SIZE-0)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-1)*DATA_WIDTH));
139
                 pdata_out8 <= cache1(((WINDOW_SIZE-1)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-2)*DATA_WIDTH));
140
                 pdata_out7 <= cache1(((WINDOW_SIZE-2)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-3)*DATA_WIDTH));
141
       pdata_out6 <= cache1(((WINDOW_SIZE-3)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-4)*DATA_WIDTH));
142
                 pdata_out5 <= cache1(((WINDOW_SIZE-4)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-5)*DATA_WIDTH));
143
                 pdata_out4 <= cache1(((WINDOW_SIZE-5)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-6)*DATA_WIDTH));
144
                 pdata_out3 <= cache1(((WINDOW_SIZE-6)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-7)*DATA_WIDTH));
145
                 pdata_out2 <= cache1(((WINDOW_SIZE-7)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-8)*DATA_WIDTH));
146
                 pdata_out1 <= cache1(((WINDOW_SIZE-8)*DATA_WIDTH - 1) downto ((WINDOW_SIZE-9)*DATA_WIDTH));
147
          end if;
148
--              
149
--        end if; -- RowsCounter_r and ColsCounter_r
150
--      else
151
--        pdata_out1 <= (others =>'0');
152
--        pdata_out2 <= (others =>'0');
153
--        pdata_out3 <= (others =>'0');
154
--        pdata_out4 <= (others =>'0');
155
--        pdata_out5 <= (others =>'0');
156
--        pdata_out6 <= (others =>'0');
157
--        pdata_out7 <= (others =>'0');
158
--        pdata_out8 <= (others =>'0');
159
--        pdata_out9 <= (others =>'0');
160
--      end if; --rsync_temp
161
        end if; -- clk
162
  end process EmittingProcess;
163
end CacheSystem;
164
 

powered by: WebSVN 2.1.0

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