## 1 Introduction and Problem Formulation
### Modeling of the Petri Net-Based Concurrent Control System  
The first step in the presented design refers to the modeling of a system by an interpreted Petri net. Based on the informal description of the concurrent control system, a Petri net-based specification is created. In order to present the proposed Petri net-based modeling technique, let us firstly define the main notations related to the discussed topic [1; 12; 13; 27; 80; 81]. **Definition 1**. : _A Petri net is a 4-tuple \(N=(P,T,F,M_{0})\) with \(P=\{p_{1},\ldots,p_{n}\}\) as the finite set of places, \(T=\{t_{1},\ldots,t_{m}\}\) as the finite set of transitions, \(F\subseteq(P\times T)\cup(T\times P)\) as the finite set of arcs, and \(M_{0}\) is the initial marking._  
Figure 1: The proposed design method flowchart. **Definition 2**. : _A marking of a Petri net \(N=(P,T,F,M_{0})\) assigns to each place a nonnegative integer \(M:P\to\mathbb{N}\). A marking can be considered as a distribution of tokens in the Petri net places. A marked place contains at least one token._  
**Definition 3**. : _A transition \(t\in T\) is enabled in marking \(M\) if each of its input places contains at least one token. An enabled transition \(t\) is fired (with exception of Definition 7, which is valid for interpreted Petri nets). The firing of a transition \(t\) changes the marking from \(M\) to \(M^{\prime}\) by removing a token from each of the input places of \(t\), and it adds a token to each output place of \(t\). A marking \(M\) is reachable if it can be obtained from the initial marking \(M_{0}\) by a sequence of transition firings._  
**Definition 4**. : _A Petri net \(N\) is safe if for every reachable marking \(M\) and every place \(p\in P:M(p)\leq 1\)._  
**Definition 5**. : _A Petri net is live if from any marking of a Petri net it is possible to fire any transition in the net by a sequence of firings of other transitions._  
**Definition 6**. : _An interpreted Petri net is a live and safe Petri net \(\mathcal{N}=(P,T,F,M_{0},\ X,\ Y)\), where \(X=\{x_{1},\ldots,\ x_{o}\}\) is a finite set of input signals and \(Y=\{y_{1},\ldots,\ y_{p}\}\) is a finite set of output signals. Such a net is required to be safe and live to fulfil the implementation assumptions in FPGAs (see the next subsection for more details and examples)._  
**Definition 7**. : _A transition \(t\in T\) of interpreted Petri net \(\mathcal{N}=(P,T,F,M_{0},\ X,\ Y)\) is fired when and only when it is enabled, and all its input signals (from the set \(X\)) are fulfilled. The firing of a transition changes the marking in the same way as it is shown in Definition 3._  
The main benefit of Petri nets is the possibility of easy representation of concurrency, but sequential processes can be expressed naturally and intuitively. Let us explain it by an example. Consider a concurrent control system shown in Figure 2. There are \(|P|=10\) places and \(|T|=10\) transitions in the system specified by an interpreted Petri net \(\mathcal{N}_{1}\). Moreover, there are \(|X|=6\) input binary signals, \(X=\{s,e_{1},e_{2},\ x_{1},x_{2},x_{3}\}\), and \(|Y|=5\) output binary signals assigned to transitions and places, respectively. Let us briefly describe the behaviour of the system. At the beginning, three places are initially marked: \(p_{3},\ p_{5},p_{6}\). This means that three processes are performed concurrently. In particular, operations \(y_{2}\) and \(y_{3}\) are executed (related to places \(p_{5}\) and \(p_{6}\), respectively), while the third process waits until those operations are finished. The first one (\(y_{2}\)) is dependent on input signal \(e_{1}\). Once this signal becomes active, transition \(t_{2}\) is fired and the token is moved from \(p_{5}\) to \(p_{2}\). Similarly, input signal \(e_{2}\) allows for firing \(t_{4}\) and moving a token from \(p_{6}\) to \(p_{4}\). Note that both operations (\(y_{2},\ y_{3}\)) are typically concurrent, while they may (but not have to) occur at the same time.