Uh, nhưng mà mình chưa tách được màu nên lấy đâu tín hiệu đưa vào RGB của VGA T.T. RAM này cũng trên Kit SRAM 256K 16bits, kit de2 đó mà. Verilog với VHDL mình nghĩ như nhau thôi, chủ yếu là giải thuật, VHDL nó đòi hỏi hơi chặt chẽ hơn 1 chút, với lại, source kiếm hok ra , hì. Chứ nói chung là như nhau thôi ^_^.
@NEO3F: FSM mình hok wen viết, viết ra nó cũng y chang cái code cũ, nên cũng pó tay ùi ^^
@NEO3F: FSM mình hok wen viết, viết ra nó cũng y chang cái code cũ, nên cũng pó tay ùi ^^
Code:
Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; entity Color_split is port ( CK: in std_logic; indata: in std_logic_vector ( 15 downto 0); g1: out std_logic_vector (7 downto 0); b1: out std_logic_vector (7 downto 0); r1: out std_logic_vector (7 downto 0); g2: out std_logic_vector (7 downto 0); b2: out std_logic_vector (7 downto 0); r2: out std_logic_vector (7 downto 0); add_read: out std_logic_vector ( 17 downto 0); CEn: out std_logic); end Color_split; architecture behav of Color_split is type state is(state1,state2,state3,state4); signal current_state,next_state:state; begin process(CK) begin if CK'event and CK='1' then current_state<=next_state; end if; end process; process(current_state,next_state) variable x: integer; variable i: integer:=0; variable data1: std_logic_vector ( 15 downto 0); variable data2: std_logic_vector ( 15 downto 0); variable data3: std_logic_vector ( 15 downto 0); begin x:= 3*i; If ( x < 16200) then case current_state is when state1=> CEn <= '0'; add_read<= CONV_STD_LOGIC_VECTOR(x,18); data1 := indata; b1 <= data1 ( 15 downto 8); g1 <= data1 ( 7 downto 0); next_state<=state2; when state2=> CEn <= '0'; add_read<= CONV_STD_LOGIC_VECTOR(x+1,18); data2 := indata; r1 <= data2 ( 15 downto 8); b2 <= data2 ( 7 downto 0); next_state<=state3; when state3=> CEn <= '0'; add_read<= CONV_STD_LOGIC_VECTOR(x+2,18); data3 := indata; g2 <= data3 ( 15 downto 8); r2 <= data3 ( 7 downto 0); next_state<=state4; when state4=> next_state<=state1; when others=> next_state<=state1; end case; i := i + 1; else CEn <= '1'; end if; end process; end behav;
Comment