@@ -18,14 +18,14 @@ package uart_pkg is
1818 type uart_master_t is record
1919 p_actor : actor_t;
2020 p_baud_rate : natural ;
21- p_parity : natural ;
21+ p_parity : parity_t ;
2222 p_idle_state : std_logic ;
2323 end record uart_master_t;
2424
2525 type uart_slave_t is record
2626 p_actor : actor_t;
2727 p_baud_rate : natural ;
28- p_parity : natural ;
28+ p_parity : parity_t ;
2929 p_idle_state : std_logic ;
3030 p_data_length : positive ;
3131 end record ;
@@ -42,22 +42,22 @@ package uart_pkg is
4242 -- 0 = no parity, 1 = odd parity, 2 = even parity
4343 procedure set_parity(signal net : inout network_t;
4444 uart_master : uart_master_t;
45- parity : natural );
45+ parity : parity_t );
4646
4747 procedure set_parity(signal net : inout network_t;
4848 uart_slave : uart_slave_t;
49- parity : natural );
49+ parity : parity_t );
5050
5151 constant default_baud_rate : natural := 115200 ;
5252 constant default_idle_state : std_logic := '1' ;
5353 constant default_data_length : positive := 8 ;
54- constant default_parity : natural := 0 ;
54+ constant default_parity : parity_t := PARITY_NONE ;
5555
5656 impure function new_uart_master(initial_baud_rate : natural := default_baud_rate;
57- initial_parity : natural := default_parity;
57+ initial_parity : parity_t := default_parity;
5858 idle_state : std_logic := default_idle_state) return uart_master_t;
5959 impure function new_uart_slave(initial_baud_rate : natural := default_baud_rate;
60- initial_parity : natural := default_parity;
60+ initial_parity : parity_t := default_parity;
6161 idle_state : std_logic := default_idle_state;
6262 data_length : positive := default_data_length) return uart_slave_t;
6363
@@ -68,7 +68,7 @@ package uart_pkg is
6868
6969 constant uart_set_baud_rate_msg : msg_type_t := new_msg_type(" uart set baud rate" );
7070
71- constant uart_set_parity_msg : msg_type_t := new_msg_type(" uart set parity rate " );
71+ constant uart_set_parity_msg : msg_type_t := new_msg_type(" uart set parity" );
7272
7373 function even_parity(data : std_logic_vector ) return std_logic ;
7474 function odd_parity (data : std_logic_vector ) return std_logic ;
@@ -78,7 +78,7 @@ end package;
7878package body uart_pkg is
7979
8080 impure function new_uart_master(initial_baud_rate : natural := default_baud_rate;
81- initial_parity : natural := default_parity;
81+ initial_parity : parity_t := default_parity;
8282 idle_state : std_logic := default_idle_state) return uart_master_t is
8383 begin
8484 return (p_actor => new_actor,
@@ -89,7 +89,7 @@ package body uart_pkg is
8989
9090 impure function new_uart_slave(
9191 initial_baud_rate : natural := default_baud_rate;
92- initial_parity : natural := default_parity;
92+ initial_parity : parity_t := default_parity;
9393 idle_state : std_logic := default_idle_state;
9494 data_length : positive := default_data_length
9595 ) return uart_slave_t is
@@ -147,28 +147,24 @@ package body uart_pkg is
147147
148148 procedure set_parity(signal net : inout network_t;
149149 actor : actor_t;
150- parity : natural ) is
150+ parity : parity_t ) is
151151 variable msg : msg_t := new_msg(uart_set_parity_msg);
152152 begin
153- if parity > 2 then
154- report " Invalid parity value: " & to_string(parity)
155- severity error ;
156- end if ;
157153
158- push(msg, parity);
154+ push(msg, parity_t 'pos ( parity) );
159155 send(net, actor, msg);
160156 end ;
161157
162158 procedure set_parity(signal net : inout network_t;
163159 uart_master : uart_master_t;
164- parity : natural ) is
160+ parity : parity_t ) is
165161 begin
166162 set_parity(net, uart_master.p_actor, parity);
167163 end ;
168164
169165 procedure set_parity(signal net : inout network_t;
170166 uart_slave : uart_slave_t;
171- parity : natural ) is
167+ parity : parity_t ) is
172168 begin
173169 set_parity(net, uart_slave.p_actor, parity);
174170 end ;
0 commit comments