Use constant for init delay to ease testing.
[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   type ser_bus_t is record
39     rx : std_logic;
40         tx : std_logic;
41   end record;
42   
43   -- Pull in this type from fhw_sd.sd_globals_p; it is used to address
44   -- a 512 B block on the SD card.
45   subtype  std_logic_block_address_t is std_logic_block_address_t;
46   -- The first block.
47   constant zero_block_address_c : std_logic_block_address_t := (others => '0');
48   
49   -- There are 512 B per block, so we need a 9-bit address to access
50   -- the bytes.
51   constant byte_address_width_c : positive := 9;
52   subtype  std_logic_byte_address_t is std_logic_vector(byte_address_width_c - 1 downto 0);
53   -- The first byte.
54   constant zero_byte_address_c : std_logic_byte_address_t := (others => '0');
55
56 end bos2k9_globals;