⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sumadato.vhd

📁 Image_Filter_An_Image_halftone is performed over data loaded into the on board RAM and presented on
💻 VHD
字号:
-- Sumador de datos, que recibe los pixels leidos de la imagen,
-- y realiza la suma y media de los 4 valores de cada mascara 2x2 
-- en el caso de que se trate de procesamiento halftonning.
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity sumadato is
    port (
        dato: in STD_LOGIC_VECTOR (7 downto 0); 
        			-- Pixel capturado de la
        			-- imagen original.
        masc: in STD_LOGIC; 	-- Maqextrae le indica asi el 
        			-- tipo de proceso.
        suma: in STD_LOGIC; 	
        med: in STD_LOGIC; 	-- Para hacer la media de los 
        			-- pixels de la mascara.
        GReset: in std_logic;
        clk: in std_logic;
        media: out STD_LOGIC_VECTOR (7 downto 0) -- Media de la masc. 
    );
end sumadato;

architecture sumadato_arch of sumadato is
signal sumaux,anyade: std_logic_vector(9 downto 0);
				-- 10 bits porque sumamos 4 pixels
signal mediaux,auxmed:std_logic_vector(9 downto 0);
				-- Al sacar la media solo tendremos 
				-- en cuenta los 8 primeros bits.
begin
     
       async: process(suma,masc,auxmed,dato,med,anyade)
           begin
              
               if(suma='1') then
                  sumaux<=anyade+dato;  -- Lo sumamos el dato al 
                  			-- valor acumulado.
		  mediaux<=auxmed;
               elsif (med='1' ) then                          
                  if(masc='1') then 	-- mascara de 2x2
                  	mediaux<="00" & anyade(9 downto 2); 
                  			-- Para implementar la division
                  			-- por 4, desechamos los dos
                  			-- ultimos bits.
                  else
                  	mediaux<=anyade;  --caso binario
                  end if;
                  sumaux<="0000000000";	-- Nos preparamos para el 
                  			-- sgte. pixel o mascara.
               else  
               sumaux<=anyade;
               mediaux<=auxmed;
               end if;                  
       end process;
            
       sync:process(clk,mediaux,GReset,sumaux)
           begin
               if (GReset='1') then	-- Reset global
               	anyade<="0000000000"; 
               	auxmed<="0000000000";
               elsif(clk'event and clk='1') then
                auxmed<=mediaux;      	        			
		anyade<=sumaux;
               end if;
       end process;
media<=auxmed(7 downto 0);		-- Para tener una salida 
					-- de ocho bits.                 
end sumadato_arch;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -