OpenCores
URL https://opencores.org/ocsvn/uart8systemc/uart8systemc/trunk

Subversion Repositories uart8systemc

[/] [uart8systemc/] [trunk/] [vpi/] [execute_uart.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 redbear
static int execute_uart_calltf(char*user_data)
2
{
3
 
4
        vpiHandle RESET     = vpi_handle_by_name("module_tb.RESET", NULL);
5
        vpiHandle RX        = vpi_handle_by_name("module_tb.RX", NULL);
6
        vpiHandle START     = vpi_handle_by_name("module_tb.START", NULL);
7
        vpiHandle DATA_TX   = vpi_handle_by_name("module_tb.DATA_TX", NULL);
8
        vpiHandle WORK_FR   = vpi_handle_by_name("module_tb.WORK_FR", NULL);
9
        vpiHandle TX        = vpi_handle_by_name("module_tb.TX", NULL);
10
        vpiHandle DATA_RX   = vpi_handle_by_name("module_tb.DATA_RX", NULL);
11
        vpiHandle PARITY_RX = vpi_handle_by_name("module_tb.PARITY_RX", NULL);
12
        vpiHandle READY_TX  = vpi_handle_by_name("module_tb.READY_TX", NULL);
13
        vpiHandle READY     = vpi_handle_by_name("module_tb.READY", NULL);
14
 
15
 
16
        reset.format    = vpiIntVal;
17
        rx_value.format = vpiIntVal;
18
        tx_value.format = vpiIntVal;
19
        ready_rx.format = vpiIntVal;
20
        start_tx.format = vpiIntVal;
21
        ready_tx.format = vpiIntVal;
22
 
23
 
24
        vpi_get_value(RESET, &reset);
25
 
26
        if(reset.value.integer == 0)
27
        {
28
                tx_value.value.integer = SC_UART->read_tx();
29
                vpi_put_value(RX, &tx_value, NULL, vpiNoDelay);
30
 
31
                vpi_get_value(TX, &rx_value);
32
                SC_UART->write_rx(rx_value.value.integer);
33
 
34
                SC_UART->run_sim();
35
 
36
                vpi_get_value(READY, &ready_rx);
37
 
38
                if(ready_rx.value.integer == 1)
39
                {
40
                        vpi_get_value(READY_TX, &ready_tx);
41
 
42
                        if(ready_tx.value.integer == 1)
43
                        {
44
                                start_tx.value.integer = 1;
45
                                vpi_put_value(START, &start_tx, NULL, vpiNoDelay);
46
                        }
47
                }
48
                else
49
                {
50
                        vpi_get_value(READY_TX, &ready_tx);
51
 
52
                        if(ready_tx.value.integer == 0)
53
                        {
54
                                start_tx.value.integer = 0;
55
                                vpi_put_value(START, &start_tx, NULL, vpiNoDelay);
56
                        }
57
                }
58
 
59
        }else
60
        {
61
 
62
        }
63
 
64
 
65
 
66
        return 0;
67
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.