61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
| library vunit_lib;
 | |
| context vunit_lib.vunit_context;
 | |
| context vunit_lib.com_context;
 | |
| use vunit_lib.sync_pkg.all;
 | |
| 
 | |
| package uart_rx_pkg is
 | |
|   constant check_uart_msg : msg_type_t := new_msg_type("check_uart");
 | |
| 
 | |
|   type uart_rx_t is record
 | |
|     p_baud_val : real;
 | |
|     p_logger : logger_t;
 | |
|     p_actor : actor_t;
 | |
|   end record;
 | |
| 
 | |
|   impure function new_uart_rx(
 | |
|     baud_val : real;
 | |
|     logger : logger_t := null_logger;
 | |
|     actor : actor_t := null_actor) return uart_rx_t;
 | |
| 
 | |
|   function as_sync(handle : uart_rx_t) return sync_handle_t;
 | |
| 
 | |
|   procedure check_uart(
 | |
|     signal net : inout network_t;
 | |
|     constant handle : in uart_rx_t;
 | |
|     constant data : in string);
 | |
| end package uart_rx_pkg;
 | |
| 
 | |
| package body uart_rx_pkg is
 | |
|   constant uart_rx_logger  : logger_t  := get_logger("neorv32_lib:uart_rx_pkg");
 | |
| 
 | |
|   impure function new_uart_rx(
 | |
|     baud_val : real;
 | |
|     logger : logger_t := null_logger;
 | |
|     actor : actor_t := null_actor) return uart_rx_t is
 | |
|     variable result : uart_rx_t;
 | |
|   begin
 | |
|     result.p_baud_val := baud_val;
 | |
|     result.p_logger := logger when logger /= null_logger else uart_rx_logger;
 | |
|     result.p_actor := actor when actor /= null_actor else new_actor;
 | |
| 
 | |
|     return result;
 | |
|   end;
 | |
| 
 | |
|   function as_sync(handle : uart_rx_t) return sync_handle_t is
 | |
|   begin
 | |
|     return handle.p_actor;
 | |
|   end;
 | |
| 
 | |
|   procedure check_uart(
 | |
|     signal net : inout network_t;
 | |
|     constant handle : in uart_rx_t;
 | |
|     constant data : in string) is
 | |
|     variable msg : msg_t;
 | |
|   begin
 | |
|     msg := new_msg(check_uart_msg);
 | |
|     push(msg, data);
 | |
|     send(net, handle.p_actor, msg);
 | |
|   end;
 | |
| 
 | |
| end package body uart_rx_pkg;
 |