1 -------------------------------------------------------------------------
\r
3 -- Filename: textmode_vga_struct.vhd
\r
6 -- Short Description:
\r
7 -- ==================
\r
8 -- Structual implementation of the toplevel entity.
\r
10 -------------------------------------------------------------------------
\r
13 use ieee.std_logic_1164.all;
14 use work.math_pkg.all;
15 use work.textmode_vga_pkg.all;
16 use work.textmode_vga_component_pkg.all;
17 use work.font_pkg.all;
19 architecture struct of textmode_vga is
20 signal is_data_line : std_logic;
21 signal is_eol : std_logic;
22 signal char_line_cnt : std_logic_vector(log2c(LINE_COUNT) - 1 downto 0);
23 signal char_height_pixel : std_logic_vector(log2c(CHAR_HEIGHT) - 1 downto 0);
24 signal rgb : std_logic_vector(RED_BITS + GREEN_BITS + BLUE_BITS - 1 downto 0);
25 signal char_cnt : std_logic_vector(log2c(COLUMN_COUNT) - 1 downto 0);
27 signal mem_data, char_data : std_logic_vector(RED_BITS + GREEN_BITS + BLUE_BITS + CHAR_SIZE - 1 downto 0);
28 signal mem_col_address : std_logic_vector(log2c(COLUMN_COUNT) - 1 downto 0);
29 signal mem_row_address : std_logic_vector(log2c(LINE_COUNT) - 1 downto 0);
30 signal mem_scroll_address : std_logic_vector(log2c(LINE_COUNT) - 1 downto 0);
31 signal mem_wr : std_logic;
32 signal ack_vga, command_req_vga : std_logic;
33 signal command_vga : std_logic_vector(CHAR_SIZE - 1 downto 0);
34 signal command_data_vga : std_logic_vector(3 * COLOR_SIZE + CHAR_SIZE - 1 downto 0);
35 signal decoded_char : std_logic_vector(0 to CHAR_WIDTH - 1);
36 signal blink : std_logic;
37 signal background_color, cursor_color : std_logic_vector(RED_BITS + GREEN_BITS + BLUE_BITS - 1 downto 0);
38 signal cursor_state : CURSOR_STATE_TYPE;
40 textmode_vga_h_sm_inst : textmode_vga_h_sm
44 sys_res_n => vga_res_n,
45 background_color => background_color,
47 char_line_cnt => char_line_cnt,
48 cursor_column => mem_col_address,
49 cursor_line => mem_row_address,
50 cursor_color => cursor_color,
51 cursor_state => cursor_state,
52 decoded_char => decoded_char,
53 color => char_data(RED_BITS + GREEN_BITS + BLUE_BITS + CHAR_SIZE - 1 downto CHAR_SIZE),
54 is_data_line => is_data_line,
60 r <= rgb(RED_BITS + GREEN_BITS + BLUE_BITS - 1 downto GREEN_BITS + BLUE_BITS);
61 g <= rgb(GREEN_BITS + BLUE_BITS - 1 downto BLUE_BITS);
62 b <= rgb(BLUE_BITS - 1 downto 0);
64 textmode_vga_v_sm_inst : textmode_vga_v_sm
68 sys_res_n => vga_res_n,
69 is_data_line => is_data_line,
70 char_line_cnt => char_line_cnt,
71 char_height_pixel => char_height_pixel,
76 video_memory_inst : video_memory
79 DATA_WIDTH => RED_BITS + GREEN_BITS + BLUE_BITS + CHAR_SIZE,
80 ROW_ADDR_WIDTH => log2c(LINE_COUNT),
81 COL_ADDR_WIDTH => log2c(COLUMN_COUNT)
86 vga_col_address => char_cnt,
87 vga_row_address => char_line_cnt,
88 vga_data => char_data,
89 sm_col_address => mem_col_address,
90 sm_row_address => mem_row_address,
93 sm_scroll_address => mem_scroll_address
96 font_rom_inst : font_rom
100 char => char_data(CHAR_SIZE - 1 downto 0),
101 char_height_pixel => char_height_pixel,
102 decoded_char => decoded_char
105 console_sm_inst : console_sm
109 vga_res_n => vga_res_n,
110 command => command_vga,
111 command_data => command_data_vga,
112 command_req => command_req_vga,
114 column_address => mem_col_address,
115 row_address => mem_row_address,
118 scroll_address => mem_scroll_address,
119 background_color => background_color,
120 cursor_color => cursor_color,
121 cursor_state => cursor_state
124 console_sm_sync_inst : console_sm_sync
127 SYNC_STAGES => SYNC_STAGES
132 sys_res_n => sys_res_n,
133 command_sys => command,
134 command_data_sys => command_data,
137 vga_res_n => vga_res_n,
138 command_vga => command_vga,
139 command_data_vga => command_data_vga,
140 command_req_vga => command_req_vga,
144 blink_interval_inst : interval
147 CLK_FREQ => VGA_CLK_FREQ,
148 INTERVAL_TIME_MS => BLINK_INTERVAL_MS
156 end architecture struct;