summaryrefslogtreecommitdiff
path: root/FPGA/vhdl/lcd.vhd
diff options
context:
space:
mode:
authorPacien TRAN-GIRARD2014-04-11 19:29:53 +0200
committerPacien TRAN-GIRARD2014-04-11 19:29:53 +0200
commit12bbdb42cdcf5e6e39832d75fbbd31e3781d550a (patch)
tree21d9d8fdb7a949c8050de38c237386d0066ca146 /FPGA/vhdl/lcd.vhd
downloadfpga-home-automation-12bbdb42cdcf5e6e39832d75fbbd31e3781d550a.tar.gz
Import fichiers projet Quartus
Diffstat (limited to 'FPGA/vhdl/lcd.vhd')
-rw-r--r--FPGA/vhdl/lcd.vhd89
1 files changed, 89 insertions, 0 deletions
diff --git a/FPGA/vhdl/lcd.vhd b/FPGA/vhdl/lcd.vhd
new file mode 100644
index 0000000..186aa52
--- /dev/null
+++ b/FPGA/vhdl/lcd.vhd
@@ -0,0 +1,89 @@
1library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
4
5entity lcd is
6 generic (board_frequency : real := 50_000_000.0);
7 port(
8 clk : in std_logic;
9 resetn : in std_logic;
10
11 -- User Interface
12 ready : out std_logic;
13 mode : in std_logic_vector(1 downto 0);
14 char : in std_logic_vector(7 downto 0);
15 address : in std_logic_vector(6 downto 0);
16 write_char : in std_logic;
17 write_address : in std_logic;
18
19 D : in std_logic;
20 C : in std_logic;
21 B : in std_logic;
22
23 -- lcd signals
24 lcd_data : inout std_logic_vector(7 downto 0);
25 lcd_on : out std_logic;
26 lcd_blon : out std_logic;
27 lcd_rs : out std_logic;
28 lcd_rw : out std_logic;
29 lcd_en : out std_logic
30 );
31end entity;
32
33architecture rtl of lcd is
34
35 signal en_user : std_logic;
36 signal lcd_data_int : std_logic_vector(lcd_data'range);
37 signal lcd_rs_int : std_logic;
38 signal lcd_en_int : std_logic;
39
40begin
41
42--------------------------------
43-- lcd
44--------------------------------
45lcd_on <= '1';
46lcd_blon <= '1';
47
48 ctrl : entity work.lcd_Controller
49 port map(
50 Clk => clk,
51 resetn => resetn,
52 en_250kHz => en_user,
53 char => char,
54 D => D,
55 C => C,
56 B => B,
57 write_char => write_char,
58 mode => mode,
59 address => address,
60 write_address => write_address,
61 ready => ready,
62 lcd_data => lcd_data_int,
63 lcd_RS => lcd_rs_int,
64 lcd_RW => lcd_rw,
65 lcd_EN => lcd_en_int
66 );
67
68ck : entity work.clock_divider
69 generic map (board_frequency => 50_000_000.0,
70 user_frequency => 250_000.0 )
71 port map (
72 clk => clk,
73 resetn => resetn,
74 en_user => en_user
75 );
76 process(resetn,clk) is
77 begin
78 if resetn = '0' then
79 lcd_data <= (others => '0');
80 lcd_rs <= '0';
81 lcd_en <= '0';
82 elsif rising_edge (clk) then
83 lcd_data <= lcd_data_int;
84 lcd_rs <= lcd_rs_int;
85 lcd_en <= lcd_en_int;
86 end if;
87 end process;
88end architecture;
89 \ No newline at end of file