Introduce constants for parity.
[bos2k9.git] / bos2k9_globals.vhd
1 -----------------------------------------------------------------------
2 -- Copyright (c) 2009 Malte S. Stretz <http://msquadrat.de> 
3 --
4 -- Project settings, constants and global helper types.
5 --
6 -----------------------------------------------------------------------
7 library ieee;
8 use ieee.std_logic_1164.all;
9
10 library fhw_sd;
11 use fhw_sd.sd_globals_p.all;
12
13 package bos2k9_globals is
14
15   -- The DE2 board runs at 50 MHz.
16   constant clock_interval_c  : time     := 20 ns;
17   constant clock_1us_ticks_c : positive := 50;
18   constant clock_1ms_ticks_c : positive := clock_1us_ticks_c * 1000;
19   
20   constant init_ticks_c : positive := clock_1ms_ticks_c;
21   
22   -- The maximum initial rate for the SD card is 400 kHz, which would
23   -- result in a clock divider of 125.  To be on the safe side, we'll
24   -- run at 390.625 kHz.
25   constant sd_clock_div_c : positive := 128; 
26   
27   -- 5208.33
28   constant ser_9600_c   : positive := 5208;
29   -- 2604.166
30   constant ser_19200_c  : positive := 2604;
31   -- 868.055
32   constant ser_57600_c  : positive := 868;
33   -- 434.0277
34   constant ser_115200_c : positive := 434;
35   -- Choose one.
36   constant ser_clock_div_c : positive := ser_9600_c;
37
38   constant ser_odd_parity_c  : std_logic := '0';
39   constant ser_even_parity_c : std_logic := '1';
40
41   constant ser_parity_enabled_c : std_logic := '1';
42   constant ser_parity_type_c    : std_logic := ser_even_parity_c;
43   
44   type ser_bus_t is record
45     rx : std_logic;
46         tx : std_logic;
47   end record;
48   
49   -- Pull in this type from fhw_sd.sd_globals_p; it is used to address
50   -- a 512 B block on the SD card.
51   subtype  std_logic_block_address_t is std_logic_block_address_t;
52   -- The first block.
53   constant zero_block_address_c : std_logic_block_address_t := (others => '0');
54   
55   -- There are 512 B per block, so we need a 9-bit address to access
56   -- the bytes.
57   constant byte_address_width_c : positive := 9;
58   subtype  std_logic_byte_address_t is std_logic_vector(byte_address_width_c - 1 downto 0);
59   -- The first byte.
60   constant zero_byte_address_c : std_logic_byte_address_t := (others => '0');
61
62 end bos2k9_globals;