Привожу отрывок кода, чтобы было понятней:
Код
process(reset,clk_counter)
begin
if (reset = '0') then
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '0';
lcd_data_sig <= X"00";
else
case clk_counter(31 downto 0) is
-- clear screen command (3 times sequentially)
-- 15 ms is gone after reset
when X"000F1B30" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '0';
lcd_data_sig <= X"30";
-- 1 us is gone after data setting
when X"000F1B72" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '1';
lcd_data_sig <= X"30";
-- 2 us for data latching
when X"000F1BF6" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '0';
lcd_data_sig <= X"30";
-- 5 ms delay after each clear screen command
when X"00142506" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '1';
lcd_data_sig <= X"30";
end case;
end if;
end process;
begin
if (reset = '0') then
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '0';
lcd_data_sig <= X"00";
else
case clk_counter(31 downto 0) is
-- clear screen command (3 times sequentially)
-- 15 ms is gone after reset
when X"000F1B30" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '0';
lcd_data_sig <= X"30";
-- 1 us is gone after data setting
when X"000F1B72" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '1';
lcd_data_sig <= X"30";
-- 2 us for data latching
when X"000F1BF6" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '0';
lcd_data_sig <= X"30";
-- 5 ms delay after each clear screen command
when X"00142506" =>
lcd_rs_sig <= '0';
lcd_rw_sig <= '0';
lcd_e_sig <= '1';
lcd_data_sig <= X"30";
end case;
end if;
end process;