<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurosci.</journal-id>
<journal-title>Frontiers in Neuroscience</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurosci.</abbrev-journal-title>
<issn pub-type="epub">1662-453X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fnins.2021.750458</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Mapping the BCPNN Learning Rule to a Memristor Model</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Wang</surname> <given-names>Deyu</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="author-notes" rid="fn002"><sup>&#x02020;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1421069/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Xu</surname> <given-names>Jiawei</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="author-notes" rid="fn002"><sup>&#x02020;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1495013/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Stathis</surname> <given-names>Dimitrios</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1063423/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Zhang</surname> <given-names>Lianhao</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1565133/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Li</surname> <given-names>Feng</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1496188/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Lansner</surname> <given-names>Anders</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/133/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Hemani</surname> <given-names>Ahmed</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="corresp" rid="c002"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1063578/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Yang</surname> <given-names>Yu</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1002182/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Herman</surname> <given-names>Pawel</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/39727/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Zou</surname> <given-names>Zhuo</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="c003"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1564756/overview"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>State Key Laboratory of ASIC and System, School of Information Science and Technology, Fudan University</institution>, <addr-line>Shanghai</addr-line>, <country>China</country></aff>
<aff id="aff2"><sup>2</sup><institution>School of Electrical Engineering and Computer Science, KTH Royal Institute of Technology</institution>, <addr-line>Stockholm</addr-line>, <country>Sweden</country></aff>
<aff id="aff3"><sup>3</sup><institution>Department of Electrical Engineering, Technical University of Denmark</institution>, <addr-line>Kongens Lyngby</addr-line>, <country>Denmark</country></aff>
<aff id="aff4"><sup>4</sup><institution>Department of Mathematics, Stockholm University</institution>, <addr-line>Stockholm</addr-line>, <country>Sweden</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Irem Boybat, IBM Research-Zurich, Switzerland</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Christopher Bennett, Sandia National Laboratories, United States; Wei Wang, Technion Israel Institute of Technology, Israel</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Anders Lansner <email>ala&#x00040;kth.se</email></corresp>
<corresp id="c002">Ahmed Hemani <email>hemani&#x00040;kth.se</email></corresp>
<corresp id="c003">Zhuo Zou <email>zhuo&#x00040;fudan.edu.cn</email></corresp>
<fn fn-type="other" id="fn001"><p>This article was submitted to Neuromorphic Engineering, a section of the journal Frontiers in Neuroscience</p></fn>
<fn fn-type="equal" id="fn002"><p>&#x02020;These authors have contributed equally to this work and share first authorship</p></fn></author-notes>
<pub-date pub-type="epub">
<day>09</day>
<month>12</month>
<year>2021</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>15</volume>
<elocation-id>750458</elocation-id>
<history>
<date date-type="received">
<day>30</day>
<month>07</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>11</day>
<month>11</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2021 Wang, Xu, Stathis, Zhang, Li, Lansner, Hemani, Yang, Herman and Zou.</copyright-statement>
<copyright-year>2021</copyright-year>
<copyright-holder>Wang, Xu, Stathis, Zhang, Li, Lansner, Hemani, Yang, Herman and Zou</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license> </permissions>
<abstract><p>The Bayesian Confidence Propagation Neural Network (BCPNN) has been implemented in a way that allows mapping to neural and synaptic processes in the human cortexandhas been used extensively in detailed spiking models of cortical associative memory function and recently also for machine learning applications. In conventional digital implementations of BCPNN, the von Neumann bottleneck is a major challenge with synaptic storage and access to it as the dominant cost. The memristor is a non-volatile device ideal for artificial synapses that fuses computation and storage and thus fundamentally overcomes the von Neumann bottleneck. While the implementation of other neural networks like Spiking Neural Network (SNN) and even Convolutional Neural Network (CNN) on memristor has been studied, the implementation of BCPNN has not. In this paper, the BCPNN learning rule is mapped to a memristor model and implemented with a memristor-based architecture. The implementation of the BCPNN learning rule is a mixed-signal design with the main computation and storage happening in the analog domain. In particular, the nonlinear dopant drift phenomenon of the memristor is exploited to simulate the exponential decay of the synaptic state variables in the BCPNN learning rule. The consistency between the memristor-based solution and the BCPNN learning rule is simulated and verified in Matlab, with a correlation coefficient as high as 0.99. The analog circuit is designed and implemented in the SPICE simulation environment, demonstrating a good emulation effect for the BCPNN learning rule with a correlation coefficient as high as 0.98. This work focuses on demonstrating the feasibility of mapping the BCPNN learning rule to in-circuit computation in memristor. The feasibility of the memristor-based implementation is evaluated and validated in the paper, to pave the way for a more efficient BCPNN implementation, toward a real-time brain emulation engine.</p></abstract>
<kwd-group>
<kwd>Bayesian Confidence Propagation Neural Network (BCPNN)</kwd>
<kwd>learning rule</kwd>
<kwd>memristor</kwd>
<kwd>nonlinear dopant drift phenomenon</kwd>
<kwd>synaptic state update</kwd>
<kwd>spiking neural networks</kwd>
<kwd>analog neuromorphic hardware</kwd>
</kwd-group>
<counts>
<fig-count count="11"/>
<table-count count="3"/>
<equation-count count="19"/>
<ref-count count="55"/>
<page-count count="16"/>
<word-count count="9619"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>In the last decade, Artificial Neural Networks (ANNs) have made rapid and significant progress in real-world applications, demonstrating outstanding performance in a wide range of pattern recognition problems such as speech recognition (Hinton et al., <xref ref-type="bibr" rid="B12">2012</xref>), image classification (Ciregan et al., <xref ref-type="bibr" rid="B5">2012</xref>), and natural language processing (Yin et al., <xref ref-type="bibr" rid="B52">2017</xref>). Despite the great success and popularity of ANNs in data-driven computational paradigms, they have some limitations. First of all, most of the existing ANNs adopt supervised learning, requiring a large amount of labeled training data, which is different from the unsupervised and reward modulated learning mechanisms attributed to biological brains. Secondly, the most prominent learning algorithm used by ANNs is error back-propagation, which requires a high level of accuracy and is neither robust nor biologically plausible. Thirdly, the current mainstream ANN models do not account for the functionality underlying human cognition and inspiring artificial intelligence, like e.g., associative memory, temporal association, and reward-based trial-and-error learning. Unlike classical ANNs with non-spiking units, Spiking Neural Networks (SNNs) use the same event-based communication mechanism as the human brain where neurons communicate with spikes.</p>
<p>The Bayesian Confidence Propagation Neural Network (BCPNN) was originally derived from principles of Bayesian inference (Lansner and Ekeberg, <xref ref-type="bibr" rid="B20">1989</xref>; Lansner and Holst, <xref ref-type="bibr" rid="B22">1996</xref>) and was further developed into an architecture inspired by the modularity of the mammalian cortex with hypercolumn units (HCUs) and minicolumn units (MCUs). Later implementation within the framework of SNNs allowed mapping to neural and synaptic processes in the human cortex (Tully et al., <xref ref-type="bibr" rid="B44">2014</xref>). Compared with other SNN models, BCPNN provides a compact and practical solution for the implementation of large-scale neural networks due to its modular, coarse-grained, and hierarchical architecture. Importantly, both reduced non-spiking and biologically detailed spiking realizations of BCPNN perform similar functions. They have been extensively used to model brain-like cognitive capabilities such as associative memory (Johansson and Lansner, <xref ref-type="bibr" rid="B16">2007</xref>; Lundqvist et al., <xref ref-type="bibr" rid="B29">2011</xref>), episodic memory (Chrysanthidis et al., <xref ref-type="bibr" rid="B3">2021</xref>), and working memory (Fiebig and Lansner, <xref ref-type="bibr" rid="B9">2017</xref>; Fiebig et al., <xref ref-type="bibr" rid="B8">2020</xref>), which play a key role in human intelligence. In a broader perspective, we suggest that these advancements in simulating different aspects of human cognitive function within a system framework of brain-like BCPNN constitute a promising direction in the development of artificial general intelligence (AGI).</p>
<p>Furthermore, the local associative nature of the Bayesian-Hebbian BCPNN learning rule has also been leveraged in cortex-inspired neural networks built for pattern recognition problems in the machine learning domain. In particular, these recent developments were facilitated by the addition of a novel brain-like structural plasticity algorithm to build a hidden layer using the original synaptic trace variables of BCPNN in an unsupervised manner (Ravichandran et al., <xref ref-type="bibr" rid="B37">2020</xref>, <xref ref-type="bibr" rid="B38">2021a</xref>). Classification performance on the MNIST and Fashion-MNIST benchmark problems&#x02014;98.6% and 88.9% on test sets, respectively (Ravichandran et al., <xref ref-type="bibr" rid="B38">2021a</xref>)&#x02014;is competitive with e.g., single-layer multi-layer perceptron (MLP) with backprop, restricted Boltzmann machine (RBM), and overcomplete autoencoder. The aforementioned unsupervised nature of the structural plasticity lends itself to the efficient use of unlabeled training examples, which has been exploited to perform semi-supervised learning with competitive results on MNIST for only 10&#x02013;1,000 labeled training samples (Ravichandran et al., <xref ref-type="bibr" rid="B39">2021b</xref>).</p>
<p>At present, BCPNN is usually implemented in high-performance computers, such as clusters (Johansson and Lansner, <xref ref-type="bibr" rid="B16">2007</xref>), GPUs (Yang et al., <xref ref-type="bibr" rid="B50">2020</xref>; Podobas et al., <xref ref-type="bibr" rid="B34">2021</xref>), and ASICs (Stathis et al., <xref ref-type="bibr" rid="B42">2020</xref>). However, these systems do not fully leverage the scalability of the modular BCPNN with its local learning since they are all based on the von Neumann architecture that separates computation and storage, which puts a high demand on computing and memory access. We observe that the ASIC implementation with its full customized architecture with the 3D-RAM, achieved three orders better efficiency compared to GPUs, but it is still many orders less efficient compared to a biological brain.</p>
<p>Besides overcoming the von Neumann bottleneck, the non-linearity of the memristor naturally mimics the behavior of synapses. This paper shows how these properties of memristors can be leveraged to implement the BCPNN learning rule. The long-term goal of this research is to realize a large-scale memristor-based BCPNN network that is 10&#x02013;100x more efficient than ASICs. However, the research presented in this paper focuses on demonstrating the feasibility of mapping the BCPNN learning rule to an in-circuit memristor-based computation. Follow-up work to this paper will focus on addressing the non-idealities of memristors and the energy efficiency analysis.</p>
<p>The contributions of this work are as follows:</p>
<list list-type="bullet">
<list-item><p>The non-linearity of the memristor is exploited to emulate the synaptic traces in the BCPNN learning rule. On this basis, a memristor-based architecture for the BCPNN learning rule is proposed.</p></list-item>
<list-item><p>The memristor-based design for the BCPNN learning rule is simulated and verified in Matlab. The consistency between the memristor-based solution and the reference model is validated, and the correlation coefficient is as high as 0.99.</p></list-item>
<list-item><p>The analog circuit for the BCPNN learning rule is designed and implemented in the SPICE simulation environment. The SPICE simulation results demonstrate a good emulation effect for the BCPNN learning rule, and the correlation coefficient is as high as 0.98.</p></list-item>
</list>
<p>The rest of this paper is organized as follows: Section 2 introduces the background knowledge and details about BCPNN and the memristor. Section 3 shows the similarity between the BCPNN traces and the memristor non-linearity and demonstrates how to map the BCPNN learning rule to in-circuit memristor-based computation. Section 4 proposes the memristor-based architecture for the BCPNN learning rule and explains the corresponding analog circuit design. Section 5 presents the results of Matlab and SPICE-level simulations. Section 6 summarizes the paper and further discusses several aspects of this work. Finally, section 7 presents the prospects for future work.</p></sec>
<sec id="s2">
<title>2. Preliminaries</title>
<sec>
<title>2.1. BCPNN</title>
<sec>
<title>2.1.1. BCPNN Overview</title>
<p>The BCPNN features a modular structure in terms of HCUs and MCUs, based on a generalization of the structure of the mammalian cortex, first described by Hubel and Wiesel (Hubel and Wiesel, <xref ref-type="bibr" rid="B14">1977</xref>). In models of the mammalian cortex, an HCU module has a diameter on the order of 500 &#x003BC;m and comprises about 100 MCUs with 50 &#x003BC;m diameter. Each MCU is composed of about 100 neurons, mainly excitatory pyramidal cells and one or two local inhibitory double bouquet cells (DeFelipe et al., <xref ref-type="bibr" rid="B6">2006</xref>). Activity within an HCU is regulated by lateral inhibition mediated via inhibitory basket cells. In the abstract models, it takes the form of softmax that normalizes the total HCU activity (sum of the corresponding MCU activities) to 1. The number of HCUs in the human cortex has been estimated at around two million.</p>
<p>The BCPNN network can be represented with a <italic>H</italic> &#x000D7; <italic>M</italic> configuration, which means it is composed of <italic>H</italic> HCUs, and each HCU contains <italic>M</italic> MCUs. Generally, <italic>H</italic> is much larger than <italic>M</italic>. The number of HCUs <italic>H</italic> can be increased without an upper limit, while the number of MCUs <italic>M</italic> has an upper limit of about 100 based on biological data. Therefore, when it comes to the configuration of large networks, the number of <italic>H</italic> tends to be quite high. In a small network, each MCU can be fully connected to its local HCU and other HCUs, as shown in <xref ref-type="fig" rid="F1">Figure 1A</xref>. Such full connectivity can not be employed in large networks due to the extreme cost of computation and storage. Instead, a cortex-inspired sparse patchy connection is adopted (Meli and Lansner, <xref ref-type="bibr" rid="B30">2013</xref>), which greatly reduces the number of connections and yet maintains proper function.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p><bold>(A)</bold> The fully connected HCUs. The number of HCUs is <italic>H</italic>, each HCU contains <italic>M</italic> MCUs. For each HCU, the number of input connections is <italic>H</italic> &#x000D7; <italic>M</italic>, and the number of output connections is <italic>M</italic>. <bold>(B)</bold> The structure of HCU. The upper limit of input connections and MCUs is 10,000 and 100, respectively.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0001.tif"/>
</fig>
<p><xref ref-type="fig" rid="F1">Figure 1B</xref> presents the structure of the HCU, which is composed of 4 parts: 1) the presynaptic vector, used to store presynaptic traces <italic>Z</italic><sub><italic>i</italic></sub>, <italic>E</italic><sub><italic>i</italic></sub> and <italic>P</italic><sub><italic>i</italic></sub>; 2) the postsynaptic vector, used to store postsynaptic traces <italic>Z</italic><sub><italic>j</italic></sub>, <italic>E</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub> and the bias &#x003B2;<sub><italic>j</italic></sub>; 3) the synaptic matrix, used to store synaptic traces <italic>E</italic><sub><italic>ij</italic></sub>, <italic>P</italic><sub><italic>ij</italic></sub> and the weight <italic>w</italic><sub><italic>ij</italic></sub>. 4) a certain number of MCUs, which integrate the incoming spiking activities and fire in a soft winner-take-all manner.</p>
<p>At a higher level, HCUs function like independent network modules between which spikes are transmitted. The HCU size depends on the number of incoming connections and MCUs. The biologically constrained maximum number of incoming connections and MCUs is 10,000 and 100, respectively. Consequently, in a max-size HCU, a synaptic matrix with a size of 10, 000 &#x000D7;100 is used, thus representing a million plastic synapses.</p></sec>
<sec>
<title>2.1.2. BCPNN Learning Rule</title>
<p>The BCPNN learning rule was derived from Bayes&#x00027; rule while making some independent assumptions between neural activities and by transformation to log-space to achieve a proper neural activation function (Lansner and Ekeberg, <xref ref-type="bibr" rid="B20">1989</xref>; Lansner and Holst, <xref ref-type="bibr" rid="B22">1996</xref>; Sandberg et al., <xref ref-type="bibr" rid="B40">2002</xref>). Thus, rather than being purely phenomenological as the commonly used Spike Timing Dependent Plasticity (STDP) learning rule, it was derived from the probabilistic inference. The BCPNN learning rule is in essence another kind of Hebbian learning rule in which synaptic updates are driven by co-activation between the pre- and post-synaptic neural units. It generates positive weights if the activity between neurons is positively correlated, zero weights if they are uncorrelated, and negative weights if they are anti-correlated. Besides, it has an intrinsic bias for each neural unit which reflects the prior activation and also is observed experimentally (Tully et al., <xref ref-type="bibr" rid="B44">2014</xref>). The BCPNN learning rule equations estimate the activation and co-activation of network units utilizing a cascade of three exponential running averages, as shown in <xref ref-type="fig" rid="F2">Figure 2A</xref>.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>(A)</bold> The original BCPNN learning rule (adapted after Tully et al., <xref ref-type="bibr" rid="B44">2014</xref>). <bold>(B)</bold> The simplified BCPNN learning rule without E trace.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0002.tif"/>
</fig>
<p>First, the incoming spikes drive pre- and post-synaptic Z-traces:</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mtext>&#x02003;</mml:mtext><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Here, <italic>i</italic> denotes pre- and <italic>j</italic> denotes post-synaptic variables and S represents incoming and generated spiking activity. These Z-traces in turn drive the E-traces and P-traces following the same kind of dynamics with different time constants:</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M2"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mtd><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mtext>&#x02003;</mml:mtext><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E3"><label>(3)</label><mml:math id="M3"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mi>&#x003BA;</mml:mi><mml:mtext>&#x02003;</mml:mtext><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mi>&#x003BA;</mml:mi></mml:mtd><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mi>&#x003BA;</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The learning rate &#x003BA; in the dynamics of P traces modulates the learning. The E-traces form a synaptic tag important for delayed reinforcement learning. In many cases, the E-traces can be omitted and the P-traces can be updated according to equation (4) with an added parameter &#x003BA;. The simplified BCPNN learning rule without E trace is shown in <xref ref-type="fig" rid="F2">Figure 2B</xref>.</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M4"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mi>&#x003BA;</mml:mi></mml:mtd><mml:mtd><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mi>&#x003BA;</mml:mi><mml:mtext>&#x02003;</mml:mtext><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mi>&#x003BA;</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Finally, as shown in equation (5), the P-traces are used to update network unit biases, and weights with an additional parameter &#x003B5;, which originates from a minimum spiking activity assumed for the pre- and postsynaptic units:</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M5"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mtext>&#x02003;</mml:mtext><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000B7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></sec>
<sec>
<title>2.1.3. BCPNN Application and Implementation</title>
<p>The BCPNN model has been used for neural computation and machine learning applications as well as to model the synaptic plasticity like long-term potentiation (LTP) and long-term depression (LTD) in SNN models of cortical associative memory. In the case of neural computation, BCPNN has been used to model scalable self-organizing associative memory (Johansson and Lansner, <xref ref-type="bibr" rid="B16">2007</xref>). As for the classification of the MNIST machine learning benchmarking, an accuracy of 98.6% can be achieved while maintaining a high neurobiological plausibility (Ravichandran et al., <xref ref-type="bibr" rid="B37">2020</xref>, <xref ref-type="bibr" rid="B38">2021a</xref>). In the latter case, the hidden layer had 200 HCUs, each with 100 MCUs. Recent cortical associative memory models have focused on synaptic working memory using BCPNN as a model for rapid cortical synaptic plasticity (Fiebig and Lansner, <xref ref-type="bibr" rid="B9">2017</xref>; Fiebig et al., <xref ref-type="bibr" rid="B8">2020</xref>). The positive BCPNN weights are used as excitatory connections between pyramidal cells, while the negative ones are disynaptically inhibiting pyramidal cells in distant HCUs via e.g., double bouquet cells. These SNN models are tiny compared to their biological counterparts, typically comprising up to a thousand MCUs partitioned into some 30 HCUs.</p>
<p>The BCPNN model has been implemented in software packages, GPU, and supercomputer clusters. It has also been implemented as custom hardware with 3D integration of DRAM for the synaptic weights (Farahini et al., <xref ref-type="bibr" rid="B7">2014</xref>; Lansner et al., <xref ref-type="bibr" rid="B21">2014</xref>; Stathis et al., <xref ref-type="bibr" rid="B42">2020</xref>; Yang et al., <xref ref-type="bibr" rid="B50">2020</xref>). The BCPNN learning rule is amenable to low-precision implementation (Vogginger et al., <xref ref-type="bibr" rid="B45">2015</xref>), and the cortical memory models have proven quite robust and tolerant to external as well as to intrinsic noise and imprecision in weights and unit biases. Therefore, it is a highly scalable, modular, and hardware-friendly neuromorphic architecture with the potential for compact and low-power digital or mixed-signal design.</p></sec></sec>
<sec>
<title>2.2. The Memristor</title>
<p>The memristor was predicted as a fourth fundamental circuit element following the resistor, capacitor, and inductor by Chua (<xref ref-type="bibr" rid="B4">1971</xref>). In 2008, HP Labs demonstrated and fabricated a memristor for the first time (Strukov et al., <xref ref-type="bibr" rid="B43">2008</xref>). The HP Memristor was based on a nanoscale TiO<sub>2</sub> thin film, with a doped region and an undoped region, as shown in <xref ref-type="fig" rid="F3">Figure 3A</xref>. The total resistance of the device is determined by the variable resistances of these two regions. When an external bias voltage is applied across the device, the charged dopants will drift, moving the boundary between the two regions. The HP memristor produces rich hysteretic current-voltage behavior, which can be observed in many nanoscale electronic devices. However, in nanoscale devices, a small voltage can yield enormous electric fields, secondarily producing significant non-linearities in ionic transport, which is called the non-linear dopant drift phenomenon. This phenomenon can be represented with a window function model, as shown in <xref ref-type="fig" rid="F3">Figure 3B</xref>.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p><bold>(A)</bold> The HP model. <bold>(B)</bold> The window function.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0003.tif"/>
</fig>
<p>The memristor has many characteristics that can be utilized in a variety of applications. To begin with, as suggested by its name, a memristive device remembers the charge that passes through it rather than storing the charge so that the memristor is nonvolatile. What is more, the memristor device can store multi-valued rather than binary values. The ability to represent multi-bit values stems from the memristor&#x00027;s ability to have multiple intermediate points in its transfer curve. The transfer curve, with its hysteretic behavior and ability to represent multiple values, resembles biological synapses. This is the reason for memristors attracting attention as ideal building blocks for neuromorphic structures. The ability to remember multi-valued quantities in response to voltages applied to its terminals mimics analog computation. This <italic>in-situ</italic> computation has also been exploited to build general-purpose computers (Zidan et al., <xref ref-type="bibr" rid="B55">2018</xref>), content addressable memory (Li et al., <xref ref-type="bibr" rid="B25">2020a</xref>), and to implement neural networks, both spiking and non-spiking, as discussed next.</p>
<p>For both non-spiking artificial neural networks and spiking neural networks, the core operation is to reinforce or weaken the synaptic weights. The algorithms used for deciding the time, magnitude, and sign of reinforcement vary from one algorithm to another. The commonality is in applying appropriate voltages for an appropriate duration to the two terminals of the memristors.</p>
<p>In the ANN space, several memristor-based ANNs have been studied and implemented. A single-layer perceptron (Prezioso et al., <xref ref-type="bibr" rid="B35">2015</xref>) was constructed based on transistor-free metal-oxide memristor crossbars, performing the perfect classification of images. The feasibility of a three-layer fully connected neural network on MNIST and a 13-layer Convolutional Neural Network (CNN) on CIFAR-10 using the flexible memristor are studied and evaluated (Xu et al., <xref ref-type="bibr" rid="B47">2018</xref>). A five-layer memristor-based CNN (Yao et al., <xref ref-type="bibr" rid="B51">2020</xref>) was demonstrated to perform image recognition on MNIST, achieving an accuracy of over 96%. It is worth noting that it is challenging to take <italic>in-situ</italic> training on memristor-based ANNs due to non-ideal device characteristics. Prezioso&#x00027;s work takes <italic>in-situ</italic> learning with a simple learning rule called the Manhattan update rule. In Yao&#x00027;s work, a hybrid-training method is taken to compensate for existing device imperfections.</p>
<p><italic>In-situ</italic> computation in memristors has also been widely studied for spiking neural networks. A supervised learning model (Nishitani et al., <xref ref-type="bibr" rid="B31">2015</xref>) that enables error backpropagation for spiking neural network hardware was proposed, and the memristor was employed as an electric synapse to store the analog synaptic weight in the circuit. An all-memristor stochastic SNN architecture (Wijesinghe et al., <xref ref-type="bibr" rid="B46">2018</xref>) was proposed in which the inherent stochasticity of nanoscale devices is utilized to emulate the functionality of a spiking neuron. An area-efficient memristor SNN for hardware implementation (Zhou et al., <xref ref-type="bibr" rid="B54">2019</xref>) was presented based on the modified SpikeProp-like supervised learning algorithm. An STDP-based SNN (Zhao et al., <xref ref-type="bibr" rid="B53">2020</xref>) was proposed to achieve the mechanism of lateral inhibition and homeostasis by memristor-based inhibitory synapses. A novel memristive synapse model based on the HP memristor was proposed, and a spiking neural network hardware fragment was constructed (Huang et al., <xref ref-type="bibr" rid="B13">2021</xref>).</p>
<p>However, the majority of the state-of-the-art memristor-based SNNs are limited in scale and employ simple learning rules such as STDP. Compared with small-scale SNNs using STDP, the BCPNN learning rule is more complex, and its computational structure is modular and cascaded. This paper exploits the non-linearity of the memristor and elaborates how <italic>in-situ</italic> analog computation in the memristor has been utilized to implement the BCPNN learning rule.</p></sec></sec>
<sec id="s3">
<title>3. A Memristor-Based BCPNN Learning Rule</title>
<sec>
<title>3.1. BCPNN Model</title>
<p>The BCPNN learning rule has been depicted with ordinary differential equations, representing the update process of Z, E, P traces. To facilitate the hardware implementation, the ordinary differential equations (1,2,3) are further transformed to equations (6,7,8), respectively, with Euler&#x00027;s method, as shown below:</p>
<disp-formula id="E6"><label>(6)</label><mml:math id="M6"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E7"><label>(7)</label><mml:math id="M7"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>e</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>e</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>e</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>e</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>e</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>e</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E8"><label>(8)</label><mml:math id="M8"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where,</p>
<disp-formula id="E9"><label>(9)</label><mml:math id="M9"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>k</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mtext>&#x02003;</mml:mtext><mml:mi>k</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mtext>&#x02003;</mml:mtext><mml:mi>k</mml:mi><mml:mi>e</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>e</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mtext>&#x02003;</mml:mtext><mml:mi>k</mml:mi><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x000B7;</mml:mo><mml:mi>&#x003BA;</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The current values of Z, E, and P traces are all calculated from their previous values. The <italic>kz</italic><sub><italic>i</italic></sub>, <italic>kz</italic><sub><italic>j</italic></sub>, <italic>ke</italic> and <italic>kp</italic> are all constants. The simplified equation (4) can be transformed to equation (10) in the same manner, as follows:</p>
<disp-formula id="E10"><label>(10)</label><mml:math id="M10"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:msub><mml:mrow><mml:mi>Z</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi><mml:mi>p</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>It should be noted that we do not consider the E trace in this work to facilitate hardware implementation. Therefore, we adopt simplified equation (10), whose update process and curve of traces can be seen in <xref ref-type="fig" rid="F2">Figure 2B</xref>.</p></sec>
<sec>
<title>3.2. The Memristor Model</title>
<p>In 2008, HP Labs proposed the linear model of a memristor (Strukov et al., <xref ref-type="bibr" rid="B43">2008</xref>). Following the HP model, a variety of memristor models have been devised, such as the non-linear ion drift model (Yang et al., <xref ref-type="bibr" rid="B49">2008</xref>), Simmons Tunnel Barrier Model (Pickett et al., <xref ref-type="bibr" rid="B33">2009</xref>), the TEAM model (Kvatinsky et al., <xref ref-type="bibr" rid="B18">2013</xref>) and the VTEAM model (Kvatinsky et al., <xref ref-type="bibr" rid="B19">2015</xref>). To emulate the non-linear dopant drift phenomenon, the window function is introduced as an essential part of a memristor model, and dozens of window functions have been proposed so far. However, most window functions are facing one or more of the following problems: the boundary effect, the boundary lock, and inflexibility (Xu et al., <xref ref-type="bibr" rid="B48">2021</xref>). Joglekar&#x00027;s window function (Joglekar and Wolf, <xref ref-type="bibr" rid="B15">2009</xref>) considers the boundary effect but suffers from the boundary lock problem. Biolek&#x00027;s window function (Biolek et al., <xref ref-type="bibr" rid="B1">2009</xref>) takes the current direction into account to solve the boundary lock issue, but its parameter setting is not flexible enough. Recently, Li&#x00027;s window function (Li et al., <xref ref-type="bibr" rid="B26">2020b</xref>) is proposed to consider all three issues. However, Li&#x00027;s window function is complex, and its expression is associated with six controlling parameters, which may increase the effort required for simulation. The window function that we proposed in Xu et al. (<xref ref-type="bibr" rid="B48">2021</xref>) is introduced to address this problem, which is both flexible and concise.</p>
<p>The VTEAM model is adopted for this work because of the following advantages: 1) the VTEAM model has a good fitting effect for the nonlinear bipolar physical memristor devices that we are concerned with (Johnson et al., <xref ref-type="bibr" rid="B17">2010</xref>; Chanthbouala et al., <xref ref-type="bibr" rid="B2">2012</xref>; Li et al., <xref ref-type="bibr" rid="B27">2018</xref>); 2) this memristor model is voltage-controlled, and the threshold voltage phenomenon has been observed in many physical devices; 3) the VTEAM model is compatible with many window functions, which demonstrates great flexibility to simulate the non-linear dopant drift phenomenon. Besides, the window function that we proposed in Xu et al. (<xref ref-type="bibr" rid="B48">2021</xref>) is used in this work due to its flexibility and simplicity.</p>
<p>The VTEAM model is shown as follows:</p>
<disp-formula id="E11"><label>(11)</label><mml:math id="M11"><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>w</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mfrac><mml:mrow><mml:mi>v</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003B1;</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:msup><mml:mo>&#x000B7;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>&#x0003C;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x0003C;</mml:mo><mml:mi>v</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x0003C;</mml:mo><mml:mi>v</mml:mi><mml:mo>&#x0003C;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub><mml:mtext>&#x000A0;</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mfrac><mml:mrow><mml:mi>v</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003B1;</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:msup><mml:mo>&#x000B7;</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo><mml:mi>v</mml:mi><mml:mo>&#x0003C;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x0003C;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>
<disp-formula id="E12"><label>(12)</label><mml:math id="M12"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>x</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>w</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>W</mml:mi></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E13"><label>(13)</label><mml:math id="M13"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>R</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">on</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">off</mml:mtext></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">on</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000B7;</mml:mo><mml:mi>x</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E14"><label>(14)</label><mml:math id="M14"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>R</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000B7;</mml:mo><mml:mi>i</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>w</italic>(<italic>t</italic>) is an internal state variable in [0, <italic>W</italic>], <italic>W</italic> is the maximum value of <italic>w</italic>(<italic>t</italic>), <italic>x</italic>(<italic>t</italic>) is an internal state variable in [0, 1], <italic>f</italic>(<italic>x</italic>) is the proposed window function, <italic>v</italic>(<italic>t</italic>) is the voltage across the memristor, <italic>i</italic>(<italic>t</italic>) is the current passing through the memristor, <italic>R</italic>(<italic>t</italic>) is the resistance of the memristor, and <italic>t</italic> is the time. The parameters <italic>v</italic><sub>on</sub> and <italic>v</italic><sub>off</sub> are threshold voltages, <italic>R</italic><sub>on</sub> and <italic>R</italic><sub>off</sub> are the corresponding resistances of the memristor when <italic>w</italic>(<italic>t</italic>) is 0 and <italic>W</italic>, respectively. The parameters <italic>k</italic><sub>on</sub>, <italic>k</italic><sub>off</sub>, &#x003B1;<sub>on</sub> and &#x003B1;<sub>off</sub> are constants.</p>
<p>The proposed window function is provided as below:</p>
<disp-formula id="E15"><label>(15)</label><mml:math id="M15"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mi>j</mml:mi><mml:msup><mml:mrow><mml:mo stretchy='false'>[</mml:mo><mml:mtext>sgn</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x000B7;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:mo>+</mml:mo><mml:mtext>stp</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>]</mml:mo></mml:mrow><mml:mi>p</mml:mi></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>sgn</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mo>&#x02265;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x02212;</mml:mo><mml:mtext>1,&#x000A0;&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mtext>&#x000A0;&#x0003C;&#x000A0;0</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mtext>&#x000A0;&#x000A0;&#x000A0;stp</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mo>&#x02265;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mtext>&#x000A0;&#x0003C;&#x000A0;0</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>i</italic> is the memristor current, and <italic>j</italic> and <italic>p</italic> are two tuning parameters. The memristor current <italic>i</italic> is positive when the internal state <italic>x</italic> is moving toward 1. The parameter <italic>j</italic> determines the magnitude, and the parameter <italic>p</italic> controls the decrease rate of the window function when approaching the boundaries. When <italic>p</italic> approaches 0, the non-linearity is weakened.</p></sec>
<sec>
<title>3.3. Similarity Between BCPNN Synaptic Traces and the Memristor Non-linearity</title>
<p>To explore the similarity of the BCPNN traces and the memristor non-linearity, the curve of the BCPNN trace (take Z trace as an example) and the curves of the resistances of two physical memristor devices are depicted in <xref ref-type="fig" rid="F4">Figure 4</xref>. As shown in <xref ref-type="fig" rid="F4">Figure 4A</xref>, the Z trace of BCPNN increases when there is a spike and decreases when there is no spike. While <xref ref-type="fig" rid="F4">Figures 4B,C</xref> show that the resistances of the ferroelectric memristor (Chanthbouala et al., <xref ref-type="bibr" rid="B2">2012</xref>) and the NiO-based memristor (Li et al., <xref ref-type="bibr" rid="B27">2018</xref>) both increase when a positive voltage is applied and decrease when a negative voltage is applied. Therefore, a similarity can be found from <xref ref-type="fig" rid="F4">Figure 4</xref> that both the BCPNN trace and the resistance of memristor change in a similar non-linear manner.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>Similarity between the BCPNN trace and the memristor nonlinearity: <bold>(A)</bold> The curve of Z trace. <bold>(B)</bold> The curve of resistance of the Ferroelectrc memristor. <bold>(C)</bold> The curve of resistance of the NiO-based memristor.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0004.tif"/>
</fig>
<p>To further analyze the similarity between the BCPNN traces and the memristor non-linearity, their respective formulas are listed and compared. Take the Z trace of BCPNN as an example, when there is a spike or not, the formula of the Z trace is as follows:</p>
<disp-formula id="E16"><label>(16)</label><mml:math id="M16"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>:</mml:mo><mml:mtext>&#x02003;</mml:mtext><mml:mi>Z</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>A</mml:mi><mml:mo>&#x000B7;</mml:mo><mml:mi>Z</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>B</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>:</mml:mo><mml:mtext>&#x02003;</mml:mtext><mml:mi>Z</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>A</mml:mi><mml:mo>&#x000B7;</mml:mo><mml:mi>Z</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Correspondingly, when the voltage is positive or negative, the formula for the internal state variable of the memristor is as follows:</p>
<disp-formula id="E17"><label>(17)</label><mml:math id="M17"><mml:mtable class="eqnarray" columnalign="right center left"><mml:mtr><mml:mtd><mml:mi>v</mml:mi><mml:mtext class="textrm" mathvariant="normal">positive:&#x02003;</mml:mtext><mml:mi>w</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:mo>&#x000B7;</mml:mo><mml:mi>w</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>D</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>v</mml:mi><mml:mtext class="textrm" mathvariant="normal">negative:&#x02003;</mml:mtext><mml:mi>w</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>E</mml:mi><mml:mo>&#x000B7;</mml:mo><mml:mi>w</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>A</italic>, <italic>B</italic>, <italic>C</italic>, <italic>D</italic> and <italic>E</italic> are all constants expressed as:</p>
<disp-formula id="E18"><label>(18)</label><mml:math id="M18"><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mtext>A&#x000A0;=&#x000A0;1&#x000A0;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x000A0;kz</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>B&#x000A0;=&#x000A0;kz</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mi>C</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x02212;</mml:mo><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>&#x000B7;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mi>W</mml:mi></mml:mfrac><mml:mo>&#x000B7;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mfrac><mml:mrow><mml:mi>v</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003B1;</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;D</mml:mtext><mml:mo>=</mml:mo><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>&#x000B7;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mfrac><mml:mrow><mml:mi>v</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003B1;</mml:mi><mml:mrow><mml:mtext>off</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>E</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>.</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mi>W</mml:mi></mml:mfrac><mml:mo>&#x000B7;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mfrac><mml:mrow><mml:mi>v</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>&#x003B1;</mml:mi><mml:mrow><mml:mtext>on</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:msup></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<p>Comparing formulas (16) and (17), a significant similarity can be observed, which also demonstrates the similarity between BCPNN traces and memristor non-linearity. Consequently, it is inspired that the non-linearity dopant drift phenomenon found in the memristor can be utilized to simulate the traces in the BCPNN learning rule.</p></sec></sec>
<sec id="s4">
<title>4. Memristor-Based Architecture and Implementation</title>
<sec>
<title>4.1. Memristor-Based Architecture</title>
<p>The BCPNN learning rule involves the update of synaptic traces, the bias, and the weight. <xref ref-type="fig" rid="F5">Figure 5</xref> presents the basic memristor-based architecture for the BCPNN learning rule. In the basic structure, five memristors are used to mimic the traces <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub>, and <italic>P</italic><sub><italic>ij</italic></sub> respectively, and a multiplication circuit is used to calculate the product of <italic>Z</italic><sub><italic>i</italic></sub> and <italic>Z</italic><sub><italic>j</italic></sub>. Besides, five sample-and-hold circuits are used to provide the converted voltage input for the memristors, and three logarithmic circuits are used to calculate the weight <italic>w</italic><sub><italic>ij</italic></sub> and the bias &#x003B2;<sub><italic>j</italic></sub>. The circuit design of the sample-and-hold circuit, logarithmic circuit, and the multiplication circuit will be explained in section 4.2.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>The basic memristor-based architecture for the BCPNN learning rule.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0005.tif"/>
</fig>
<p>As illustrated in <xref ref-type="fig" rid="F5">Figure 5</xref>, the incoming presynaptic spike <italic>S</italic><sub><italic>i</italic></sub> is filtered into the <italic>Z</italic><sub><italic>i</italic></sub> trace through a sample-and-hold circuit. Then the <italic>Z</italic><sub><italic>i</italic></sub> trace is further filtered into the <italic>P</italic><sub><italic>i</italic></sub> trace with the same sample-and-hold circuit. Similarly, the postsynaptic spike <italic>S</italic><sub><italic>j</italic></sub> is first filtered into the <italic>Z</italic><sub><italic>j</italic></sub> trace, and then the <italic>Z</italic><sub><italic>j</italic></sub> trace is filtered into the <italic>P</italic><sub><italic>j</italic></sub> trace, both via a sample-and-hold circuit. Besides, the <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub> traces are multiplied with each other, and then the obtained <italic>Z</italic><sub><italic>i</italic></sub> &#x000D7; <italic>Z</italic><sub><italic>j</italic></sub> is filtered into the <italic>P</italic><sub><italic>ij</italic></sub> through a sample-and-hold circuit. Last but not least, the <italic>P</italic><sub><italic>ij</italic></sub>, together with the <italic>P</italic><sub><italic>i</italic></sub> and <italic>P</italic><sub><italic>j</italic></sub> is used to calculate the weight <italic>W</italic><sub><italic>ij</italic></sub> through a logarithmic circuit. The <italic>P</italic><sub><italic>j</italic></sub> trace is calculated through a logarithmic circuit to obtain the value of bias &#x003B2;<sub><italic>j</italic></sub>. It should be noted that although the E trace is removed in this work, it could be added without any issue by adding another level in the cascade if the E trace is needed.</p>
<p>What&#x00027;s more, the basic memristor-based architecture described above can be reused and scaled to build a memristor-based HCU that includes more synaptic traces. As a typical case for demonstration, <xref ref-type="fig" rid="F6">Figure 6</xref> presents the memristor-based architecture for an HCU with a 6 &#x000D7; 6 configuration. The HCU contains a presynaptic vector of length 6, a postsynaptic vector of length 6, and a synaptic matrix of size 6 &#x000D7;6.</p>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>The memristor-based architecture for an HCU with a configuration of 6 &#x000D7; 6.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0006.tif"/>
</fig>
<p>It should be noted that the intention of <xref ref-type="fig" rid="F6">Figure 6</xref> is to illustrate the scalability of the basic architecture in <xref ref-type="fig" rid="F5">Figure 5</xref>. In this work, we focus on simulating and implementing the basic memristor-based architecture for the BCPNN learning rule in <xref ref-type="fig" rid="F5">Figure 5</xref>.</p></sec>
<sec>
<title>4.2. Analog Circuit Implementation</title>
<sec>
<title>4.2.1. Pre- and Post-synaptic Trace</title>
<p>The spike-based BCPNN is implemented with local synaptic state variables <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub> and <italic>P</italic><sub><italic>ij</italic></sub>, which keep track of presynaptic, postsynaptic and synaptic activities. The implementation of pre- and post-synaptic trace <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub> can be divided into two cascaded processing stages. In the first stage, the incoming pre- and post-synaptic spike trains <italic>S</italic><sub><italic>i</italic></sub>, <italic>S</italic><sub><italic>j</italic></sub> are low pass filtered into the <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub> traces, with time constants &#x003C4;<sub><italic>zi</italic></sub> and &#x003C4;<sub><italic>zj</italic></sub>. In the second stage, the <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub> traces are low pass filtered into the <italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub> traces with time constant &#x003C4;<sub><italic>p</italic></sub>. To implement the above two cascaded processing stages, two sample-and-hold circuits are cascaded in the analog circuit implementation. <xref ref-type="fig" rid="F7">Figure 7A</xref> presents the diagram of the sample-and-hold circuit. The voltage input is used to represent the incoming spike trains <italic>S</italic><sub><italic>i</italic></sub>, <italic>S</italic><sub><italic>j</italic></sub>. The input spike is either 0 or 1, while the voltage input is either excitatory 193.2 mV or inhibitory &#x02013;149.9 mV. The input of the current source is constant, which is used to transform the resistance of the memristor into a voltage value. Switches S1, S2, S3 are used to control the switch between the sampling state and the holding state. Three capacitors C1, C2, C3, are used to store voltage. Besides, an operational amplifier is utilized to amplify the voltage value.</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p><bold>(A)</bold> The diagram of the sample-and-hold circuit. <bold>(B)</bold> The switch between the sampling state and the holding state, controlled by switches S1, S2, and S3.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0007.tif"/>
</fig>
<p><xref ref-type="fig" rid="F7">Figure 7B</xref> illustrates the switch between the sampling state and the holding state. When switches S1, S3 are on and switch S2 is off, the circuit is in the sampling state. The constant current of the current source passes through the memristor to obtain the voltage, which is stored in capacitor C1. Since switch S3 is on, the voltage stored in capacitor C2 is equal to the voltage stored in capacitor C1. Therefore, the resistance of the memristor is converted into the corresponding voltage value, and the voltage value is stored in the capacitor C2, thus completing a sampling process. When switch S2 is on and switches S1, S3 are off, the left part of the circuit is responsible for the update of synaptic traces, and the right part of the circuit is in the holding state. The voltage source is the input excitation of the memristor, thereby changing the resistance of the memristor. At the same time, the sampled voltage stored in the capacitor C2 is amplified by the operational amplifier, and the obtained voltage is stored in the capacitor C3 as the input voltage of the next-stage circuit. Similarly, the second stage adopts the same circuit, and the only difference is that the voltage input of the second circuit is the output of the first circuit rather than a voltage source.</p></sec>
<sec>
<title>4.2.2. Synaptic Trace Pij</title>
<p>The pre- and postsynaptic traces <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub> can be obtained with the mentioned sample-and-hold circuit. However, to get the value of synaptic trace <italic>P</italic><sub><italic>ij</italic></sub>, an extra multiplier is required to calculate the product of <italic>Z</italic><sub><italic>i</italic></sub> and <italic>Z</italic><sub><italic>j</italic></sub>, as illustrated in formula (10).</p>
<p>As shown in <xref ref-type="fig" rid="F8">Figure 8A</xref>, the multiplication circuit is based on the classic Gilbert cell. The resistance of the two resistors are both 10k&#x003A9;. The aspect ratios <italic>W</italic>/<italic>L</italic> for <italic>M</italic>1, <italic>M</italic>2, <italic>M</italic>3, <italic>M</italic>4 are 1&#x003BC;m/0.18&#x003BC;m, while the aspect ratios <italic>W</italic>/<italic>L</italic> for <italic>M</italic>5, <italic>M</italic>6 are 2&#x003BC;m/0.18&#x003BC;m. Besides, the bias voltage Vdc for <italic>Z</italic><sub><italic>i</italic></sub> and <italic>Z</italic><sub><italic>j</italic></sub> are 1.5 v and 1.3 v respectively.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p><bold>(A)</bold> The diagram of the multiplication circuit. <bold>(B)</bold> The diagram of the logarithmic circuit.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0008.tif"/>
</fig></sec>
<sec>
<title>4.2.3. Weight and Bias Computation</title>
<p>The three P traces <italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>ij</italic></sub> represent the exponentially weighted moving averages of firing probability for presynaptic spikes, postsynaptic spikes, and spike co-activation respectively, which are used to compute the weight <italic>w</italic><sub><italic>ij</italic></sub> and the bias &#x003B2;<sub><italic>j</italic></sub>. The calculation formula (5) for <italic>w</italic><sub><italic>ij</italic></sub> and &#x003B2;<sub><italic>j</italic></sub> can be further rewritten as:</p>
<disp-formula id="E19"><label>(19)</label><mml:math id="M19"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo class="qopname">log</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The key to the calculation of <italic>w</italic><sub><italic>ij</italic></sub> and &#x003B2;<sub><italic>j</italic></sub> lies in the logarithmic calculation of the sum of P trace and the constant &#x003B5;, as shown in formula (19). Therefore, a logarithmic calculation circuit is required. As shown in <xref ref-type="fig" rid="F8">Figure 8B</xref>, the sampling voltage of P trace (<italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>ij</italic></sub>) is added with the constant parameter &#x003B5;, then the sum is logarithmically calculated through a triode and an operational amplifier. Using such a circuit, the bias &#x003B2;<sub><italic>j</italic></sub> can be obtained with an input pair of <italic>P</italic><sub><italic>i</italic></sub> and &#x003B5;. Similarly, using three such circuits, whose input pairs are <italic>P</italic><sub><italic>ij</italic></sub> and &#x003B5;<sup>2</sup>, <italic>P</italic><sub><italic>i</italic></sub> and &#x003B5;, <italic>P</italic><sub><italic>j</italic></sub> and &#x003B5; respectively, the results of the three circuits can be used to get the value of weight <italic>w</italic><sub><italic>ij</italic></sub>.</p></sec></sec></sec>
<sec id="s5">
<title>5. Experimental Results</title>
<p>In this section, we conduct simulations to verify the feasibility of the memristor-based implementation for the BCPNN learning rule at both the algorithm level and the circuit level. From the algorithmic perspective, we conducted simulations in Matlab. From the circuit-level perspective, we conducted SPICE-level simulations. The typical values of the parameters used in the simulations are shown in <xref ref-type="table" rid="T1">Table 1</xref>, including the parameters of the BCPNN model and the memristor model.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>Parameters for the Simulations.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Parameters</bold></th>
<th valign="top" align="left"><bold>Value</bold></th>
<th valign="top" align="left"><bold>Parameters</bold></th>
<th valign="top" align="left"><bold>Value</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left" colspan="4"><bold>BCPNN Model</bold></td>
</tr>
<tr>
<td valign="top" align="left"><italic>kz</italic><sub><italic>i</italic></sub></td>
<td valign="top" align="left">1/11</td>
<td valign="top" align="left"><italic>kz</italic><sub><italic>j</italic></sub></td>
<td valign="top" align="left">1/11</td>
</tr>
<tr>
<td valign="top" align="left"><italic>kp</italic></td>
<td valign="top" align="left">1/500</td>
<td valign="top" align="left">&#x003B5;</td>
<td valign="top" align="left">0.01</td>
</tr>
<tr>
<td valign="top" align="left" colspan="4"><bold>Memristor Model</bold></td>
</tr>
<tr>
<td valign="top" align="left"><italic>p</italic></td>
<td valign="top" align="left">1</td>
<td valign="top" align="left"><italic>j</italic></td>
<td valign="top" align="left">1</td>
</tr>
<tr>
<td valign="top" align="left">&#x003B1;<sub>off</sub></td>
<td valign="top" align="left">1</td>
<td valign="top" align="left">&#x003B1;<sub>on</sub></td>
<td valign="top" align="left">1</td>
</tr>
<tr>
<td valign="top" align="left"><italic>v</italic><sub>off</sub></td>
<td valign="top" align="left">0.02 V</td>
<td valign="top" align="left"><italic>v</italic><sub>on</sub></td>
<td valign="top" align="left">&#x02013;0.02 V</td>
</tr>
<tr>
<td valign="top" align="left"><italic>R</italic><sub>off</sub></td>
<td valign="top" align="left">200 k&#x003A9;</td>
<td valign="top" align="left"><italic>R</italic><sub>on</sub></td>
<td valign="top" align="left">2 k&#x003A9;</td>
</tr>
<tr>
<td valign="top" align="left"><italic>k</italic><sub>off</sub></td>
<td valign="top" align="left">21 nm/s</td>
<td valign="top" align="left"><italic>k</italic><sub>on</sub></td>
<td valign="top" align="left">&#x02013;28 nm/s</td>
</tr>
<tr>
<td valign="top" align="left"><italic>W</italic></td>
<td valign="top" align="left">1 nm</td>
<td valign="top" align="left"><italic>w</italic><sub>init</sub></td>
<td valign="top" align="left">0 nm</td>
</tr>
<tr>
<td valign="top" align="left"><italic>dt</italic></td>
<td valign="top" align="left">1 ms</td>
<td/>
<td/>
</tr>
</tbody>
</table>
</table-wrap>
<sec>
<title>5.1. Matlab Simulation Results</title>
<p>To verify the effectiveness of the memristor-based solution for the BCPNN learning rule from an algorithmic perspective, a simulation of the Z traces, P traces, the weight <italic>w</italic><sub><italic>ij</italic></sub>, and the bias &#x003B2;<sub><italic>j</italic></sub> is conducted using a model of the memristor device in Matlab. In the simulation, the results of the memristor-based solution are compared with those of the BCPNN reference model. The simulation lasts for 5 s with a simulation step of 1 ms, which is the simulation step in BCPNN.</p>
<p>In <xref ref-type="fig" rid="F9">Figure 9</xref> and <xref ref-type="table" rid="T2">Table 2</xref>, the simulation results are visualized and analyzed. <xref ref-type="fig" rid="F9">Figure 9A</xref> presents the memristor-based 5-s Matlab simulation results with dense incoming spikes. To take a closer look at the difference between the memristor-based results and the reference model of BCPNN, the period from 0 to 1 s in <xref ref-type="fig" rid="F9">Figure 9A</xref> has been enlarged, as shown in <xref ref-type="fig" rid="F9">Figure 9B</xref>. With the same incoming pre- and post-synaptic spikes, the Z traces (<italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub>) of the memristor-based solution are the same as those of the BCPNN model. Therefore, in the Z traces part, the <italic>Z</italic><sub><italic>i</italic></sub>, <italic>Z</italic><sub><italic>j</italic></sub> curves of the two models completely coincide. As for the P traces (<italic>P</italic><sub><italic>i</italic></sub>, <italic>P</italic><sub><italic>j</italic></sub>, <italic>P</italic><sub><italic>ij</italic></sub>), the weight <italic>w</italic><sub><italic>ij</italic></sub> and the bias &#x003B2;<sub><italic>j</italic></sub>, the curves of the two models are not the same but very close. In particular, simulations with sparse spikes are carried out to observe the change of the weight in the long-lasting silent state. When the presynaptic spike train <italic>S</italic><sub><italic>i</italic></sub> overlaps with the postsynaptic spike train <italic>S</italic><sub><italic>j</italic></sub>, the weight rises and finally decays to 0 in the long-lasting silent state, as shown in <xref ref-type="fig" rid="F9">Figure 9C</xref>. Similarly, when the presynaptic spike train <italic>S</italic><sub><italic>i</italic></sub> is separated from the postsynaptic spike train <italic>S</italic><sub><italic>j</italic></sub>, the weight drops and gradually returns to 0 in a long-lasting silent state, as shown in <xref ref-type="fig" rid="F9">Figure 9D</xref>. In the analysis of the simulation results, the average error, maximum error, Root Mean Square Error (RMSE), and correlation coefficient are used as the main evaluation metrics, as shown in <xref ref-type="table" rid="T2">Table 2</xref>. Due to the nonlinearity of the memristor, the memristor-based emulation of the BCPNN learning rule is accurate with a correlation coefficient of over 0.99.</p>
<fig id="F9" position="float">
<label>Figure 9</label>
<caption><p>Matlab simulation results with dense or sparse incoming spikes. <bold>(A)</bold> Dense Spikes: 5-s simulation. <bold>(B)</bold> Dense Spikes: 1-s simulation. <bold>(C)</bold> Sparse Spikes: presynaptic spike train <italic>S</italic><sub><italic>i</italic></sub> overlaps with postsynaptic spike train <italic>S</italic><sub><italic>j</italic></sub>. <bold>(D)</bold> Sparse Spikes: presynaptic spike train <italic>S</italic><sub><italic>i</italic></sub> is seperated with postsynaptic spike train <italic>S</italic><sub><italic>j</italic></sub>.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0009.tif"/>
</fig>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>Five-second simulation results with dense spikes in matlab.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Trace</bold></th>
<th valign="top" align="center"><bold>Mean error</bold></th>
<th valign="top" align="center"><bold>Max error</bold></th>
<th valign="top" align="center"><bold>RMSE</bold></th>
<th valign="top" align="center"><bold>Correlation coefficient</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>Z</italic><sub><italic>i</italic></sub></td>
<td valign="top" align="center">0.0000</td>
<td valign="top" align="center">0.0000</td>
<td valign="top" align="center">0.0000</td>
<td valign="top" align="center">1.0000</td>
</tr>
<tr>
<td valign="top" align="left"><italic>Z</italic><sub><italic>j</italic></sub></td>
<td valign="top" align="center">0.0000</td>
<td valign="top" align="center">0.0000</td>
<td valign="top" align="center">0.0000</td>
<td valign="top" align="center">1.0000</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>i</italic></sub></td>
<td valign="top" align="center">0.0015</td>
<td valign="top" align="center">0.0064</td>
<td valign="top" align="center">0.0019</td>
<td valign="top" align="center">0.9961</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>j</italic></sub></td>
<td valign="top" align="center">0.0013</td>
<td valign="top" align="center">0.0045</td>
<td valign="top" align="center">0.0015</td>
<td valign="top" align="center">0.9973</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>ij</italic></sub></td>
<td valign="top" align="center">0.0001</td>
<td valign="top" align="center">0.0008</td>
<td valign="top" align="center">0.0002</td>
<td valign="top" align="center">0.9984</td>
</tr>
<tr>
<td valign="top" align="left"><italic>w</italic><sub><italic>ij</italic></sub></td>
<td valign="top" align="center">0.0418</td>
<td valign="top" align="center">1.4643</td>
<td valign="top" align="center">0.0862</td>
<td valign="top" align="center">0.9972</td>
</tr>
<tr>
<td valign="top" align="left">&#x003B2;<sub><italic>j</italic></sub></td>
<td valign="top" align="center">0.0408</td>
<td valign="top" align="center">0.2795</td>
<td valign="top" align="center">0.0489</td>
<td valign="top" align="center">0.9979</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>5.2. SPICE Simulation Results</title>
<p>To further validate the feasibility of the memristor-based design from a circuit-level perspective, a SPICE-level simulation is conducted for the analog circuit implementation. In the SPICE simulation, the cascade circuit in <xref ref-type="fig" rid="F5">Figure 5</xref> is implemented, where 5 sample-and-hold circuit modules, 3 logarithmic circuit modules, and 1 multiplication circuit module described in section 4.2 are used. The parameters for the BCPNN model and the memristor model used in the SPICE simulation are the same as those used in the Matlab simulation, as shown in <xref ref-type="table" rid="T1">Table 1</xref>. It is worth noting that the timestep in the Matlab simulation is 1 ms, while the timestep in the SPICE simulation is 100 ns because of the limitation of the timestep for transistors in the simulation environment.</p>
<p>With the same input of pre- and post-synaptic spikes, the results of the SPICE-level simulation are compared with those of the reference model and the error is analyzed. <xref ref-type="fig" rid="F10">Figure 10A</xref> presents the SPICE simulation results with the same dense incoming spikes as in the Matlab simulation. Similarly, the period from 0 to 1 s of the simulation results is magnified to show more details of the curves, as shown in <xref ref-type="fig" rid="F10">Figure 10B</xref>. Besides, <xref ref-type="fig" rid="F10">Figures 10C,D</xref> also demonstrates that the weight increases with a pair of correlated <italic>S</italic><sub><italic>i</italic></sub> and <italic>S</italic><sub><italic>j</italic></sub> and decreases with a pair of uncorrelated <italic>S</italic><sub><italic>i</italic></sub> and <italic>S</italic><sub><italic>j</italic></sub>. In a long-lasting silent state, the weight returns to 0 eventually. As shown in <xref ref-type="table" rid="T3">Table 3</xref>, the SPICE simulation results of memristor-based solution demonstrate a fairly high degree of fit with the reference model of BCPNN, and a correlation coefficient of over 0.98 is achieved. All in all, it is validated that the memristor-based solution for BCPNN can achieve a high degree of fit with the reference BCPNN model in the analog circuit implementation.</p>
<fig id="F10" position="float">
<label>Figure 10</label>
<caption><p>Analog circuit implementation results with dense or sparse incoming spikes. <bold>(A)</bold> Dense Spikes: 5-s simulation. <bold>(B)</bold> Dense Spikes: 1-s simulation. <bold>(C)</bold> Sparse Spikes: presynaptic spike train <italic>S</italic><sub><italic>i</italic></sub> overlaps with postsynaptic spike train <italic>S</italic><sub><italic>j</italic></sub>. <bold>(D)</bold> Sparse Spikes: presynaptic spike train <italic>S</italic><sub><italic>i</italic></sub> is seperated with postsynaptic spike train <italic>S</italic><sub><italic>j</italic></sub>.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0010.tif"/>
</fig>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p>Analog circuit implementation results of 5-s simulation with dense spikes.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="left"><bold>Trace</bold></th>
<th valign="top" align="center"><bold>Mean error</bold></th>
<th valign="top" align="center"><bold>Max error</bold></th>
<th valign="top" align="center"><bold>RMSE</bold></th>
<th valign="top" align="center"><bold>Correlation coefficient</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left"><italic>Z</italic><sub><italic>i</italic></sub></td>
<td valign="top" align="center">0.0046</td>
<td valign="top" align="center">0.0909</td>
<td valign="top" align="center">0.0147</td>
<td valign="top" align="center">0.9830</td>
</tr>
<tr>
<td valign="top" align="left"><italic>Z</italic><sub><italic>j</italic></sub></td>
<td valign="top" align="center">0.0041</td>
<td valign="top" align="center">0.0909</td>
<td valign="top" align="center">0.0138</td>
<td valign="top" align="center">0.9830</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>i</italic></sub></td>
<td valign="top" align="center">0.0014</td>
<td valign="top" align="center">0.0067</td>
<td valign="top" align="center">0.0018</td>
<td valign="top" align="center">0.9965</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>j</italic></sub></td>
<td valign="top" align="center">0.0012</td>
<td valign="top" align="center">0.0056</td>
<td valign="top" align="center">0.0015</td>
<td valign="top" align="center">0.9974</td>
</tr>
<tr>
<td valign="top" align="left"><italic>P</italic><sub><italic>ij</italic></sub></td>
<td valign="top" align="center">0.0001</td>
<td valign="top" align="center">0.0011</td>
<td valign="top" align="center">0.0002</td>
<td valign="top" align="center">0.9981</td>
</tr>
<tr>
<td valign="top" align="left"><italic>w</italic><sub><italic>ij</italic></sub></td>
<td valign="top" align="center">0.0432</td>
<td valign="top" align="center">1.5765</td>
<td valign="top" align="center">0.1003</td>
<td valign="top" align="center">0.9957</td>
</tr>
<tr>
<td valign="top" align="left">&#x003B2;<sub><italic>j</italic></sub></td>
<td valign="top" align="center">0.0483</td>
<td valign="top" align="center">0.3733</td>
<td valign="top" align="center">0.0631</td>
<td valign="top" align="center">0.9971</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec></sec>
<sec sec-type="discussion" id="s6">
<title>6. Discussion</title>
<p>In this paper, the BCPNN learning rule is mapped to a memristor model and implemented with a memristor-based architecture. The similarity between the nonlinearity of the memristor and the trace update rule of BCPNN is explored and analyzed. The strong correlation between the simulated memristor-based BCPNN traces and the reference BCPNN traces has been validated in the Matlab simulation with a correlation coefficient over 0.99. Moreover, the analog circuit design of the memristor-based architecture is implemented, and the SPICE-level implementation for the BCPNN learning rule can achieve a decent emulation effect with a correlation coefficient of over 0.98.</p>
<sec>
<title>6.1. Cumulative Error Analysis</title>
<p>The cumulative error of the memristor-based implementation can be analyzed from three aspects: the BCPNN algorithm, the memristor-based solution for BCPNN, and the analog circuit implementation. Firstly, as described before, BCPNN employs a correlation-based learning rule, which is robust and tolerant to the intrinsic noise and imprecision. BCPNN has proven to be able to function using lower precision (Vogginger et al., <xref ref-type="bibr" rid="B45">2015</xref>). Secondly, as shown in <xref ref-type="table" rid="T2">Table 2</xref>, the memristor-based solution for the BCPNN learning rule presents a good simulation effect with the reference model. Moreover, it can be seen from <xref ref-type="fig" rid="F9">Figure 9</xref> that the simulation effect does not deteriorate with the increasing simulation time, which means that there is no significant increase of cumulative error. Thirdly, the same is true for the analog circuit implementation, as can be seen in <xref ref-type="fig" rid="F10">Figure 10</xref> and <xref ref-type="table" rid="T3">Table 3</xref>. Therefore, the cumulative error will not affect the stability of the memristor-based implementation for the BCPNN learning rule.</p></sec>
<sec>
<title>6.2. Setting of the Parameter &#x003B5;</title>
<p>In the BCPNN model, the setting of the parameter &#x003B5; has an impact on the performance of BCPNN-based tasks, as shown in <xref ref-type="fig" rid="F11">Figure 11</xref>. With &#x003B5; less than 0.001, good performance was achieved in an associative memory task and a standard machine learning classification benchmark (MNIST, LeCun et al., <xref ref-type="bibr" rid="B24">1998</xref>). With &#x003B5; equal to 0.01, the associative memory task still maintained good performance, but the performance in the MNIST task dropped a lot. For the experiments in section 5, the parameter &#x003B5; was set to be 0.01, due to the limitation of the resolution of the logarithmic circuit. Later work will seek a higher-precision analog logarithmic circuit design or adopt digital methods to implement the logarithmic calculation of weight. In this way, the value of &#x003B5; can be set to be less than 0.001, which can likely meet the requirement of most BCPNN-based tasks.</p>
<fig id="F11" position="float">
<label>Figure 11</label>
<caption><p>Software simulation of the impact of &#x003B5; on BCPNN performance in associative memory (AM) storage capacity and handwritten digit recognition (MNIST). For AM, a network configuration of <italic>H</italic> &#x000D7; <italic>M</italic> = 20 &#x000D7; 20 was tested for storage of 400 patterns. For MNIST, all 10,000 test patterns were used.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnins-15-750458-g0011.tif"/>
</fig>
<p>It should be noted that the intention of <xref ref-type="fig" rid="F11">Figure 11</xref> is to analyze the impact of the value of &#x003B5; (a parameter in the BCPNN learning rule) on the BCPNN performance from the perspective of software simulation. For the details about the working mechanism of the whole BCPNN network and how it implements associative memory tasks and practical recognition functions like MNIST classification, these works can be referred to (Johansson and Lansner, <xref ref-type="bibr" rid="B16">2007</xref>; Meli and Lansner, <xref ref-type="bibr" rid="B30">2013</xref>; Ravichandran et al., <xref ref-type="bibr" rid="B37">2020</xref>, <xref ref-type="bibr" rid="B38">2021a</xref>). The realization of the whole memristor-based BCPNN network and the algorithmic benchmarking is outside the scope of this paper and is what we plan to do in follow-up work.</p></sec>
<sec>
<title>6.3. Consideration of Device Variation</title>
<p>In this paper, we focus on mapping the BCPNN learning rule to a memristor model and validating the feasibility of the memristor-based implementation at the algorithm and circuit level. However, in reality, memristor-based structures suffer from device variations due to process variation and age degradation. These two factors lead to two different types of variations in the memristors devices (Park et al., <xref ref-type="bibr" rid="B32">2013</xref>; Le et al., <xref ref-type="bibr" rid="B23">2018</xref>). The first is spatial variations, where different devices in the crossbar react differently to the applied voltage, i.e., identical voltage pulse can drive different devices to different resistances. The second is temporal variations, where the behavior of the same device will change over time. Neural networks can adapt to such variations by taking them into account during the training of the network. This method has been used in deep neural networks (Long et al., <xref ref-type="bibr" rid="B28">2019</xref>) and spiking neural networks (Querlioz et al., <xref ref-type="bibr" rid="B36">2013</xref>). The authors in Querlioz et al. (<xref ref-type="bibr" rid="B36">2013</xref>) identify non-supervised learning as one of the fundamental benefits of the STDP learning rule that helps when dealing with device variations. Previous work indicates that the BCPNN learning rule is amenable to low-precision implementation (Vogginger et al., <xref ref-type="bibr" rid="B45">2015</xref>), and the cortical memory models have proven quite robust and tolerant to external as well as to intrinsic noise and imprecision in weights and unit biases. In the follow-up work, we will focus on the non-idealities of memristors and study to what extent BCPNN&#x00027;s robustness can absorb the non-idealities and what other measures could be needed to cope with the non-idealities.</p></sec></sec>
<sec id="s7">
<title>7. Future Work</title>
<p>As a follow-up to this paper, we plan to rigorously address the issue of nonidealities in memristors. Specifically, its variance in both space and time. We plan to quantify the extent to which BCPNN&#x00027;s robustness can cope with the variances and if that is not sufficient, we will study how the behavior diverges and use these experiments to devise techniques to counter the nonidealities.</p>
<p>Next to addressing nonidealities, the aspect on our priority list is to make the implementation more complete. This would involve implementing the control logic in CMOS, data converters, drive circuits, etc. It is also obvious, a large stack of memristor devices cannot be driven by single drivers. For this reason, we plan to experiment with and find out fragments of memristor fabrics that can be stacked with scalable drive circuits. Besides the above, we might also need to implement compensation logic to deal with nonidealities in the spirit of pre-distortion.</p>
<p>Having a good grip on nonidealities and more complete implementation, we will then be in a position to have a fair comparison of performance and energy efficiency between a memristor-based implementation of BCPNN and pure digital implementations that we have been experimenting with (Stathis et al., <xref ref-type="bibr" rid="B42">2020</xref>; Yang et al., <xref ref-type="bibr" rid="B50">2020</xref>). Besides providing realistic comparison, such an experiment will also provide us with inputs to create a more optimized implementation.</p>
<p>Designing memristor-based systems, at present, is a circuit-level effort. This is cumbersome and not accessible to everyone. We plan to develop, a Lego-inspired design flow called SiLago (Hemani et al., <xref ref-type="bibr" rid="B11">2017</xref>), to enable automation of memristor-based designs from higher abstractions. Some work toward building such infrastructure has happened for CMOS-based conventional digital designs (Gonzalez et al., <xref ref-type="bibr" rid="B10">2021</xref>; Hemani et al., <xref ref-type="bibr" rid="B41">2021</xref>). We plan to enhance this for the memristors.</p></sec>
<sec sec-type="data-availability" id="s8">
<title>Data Availability Statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p></sec>
<sec id="s9">
<title>Author Contributions</title>
<p>The initial idea proposed in the manuscript came from DS, AL, and AH. DW performed experiments and was responsible for the manuscript writing. JX proposed the methodology and guided the overall experimental design. LZ and FL contributed in the SPICE and Matlab simulations. ZZ provided supervision on DW, JX, and FL&#x00027;s work. AL, AH, DS, YY, PH, and ZZ helped with the refinement of this work and the revision of the manuscript. All authors contributed to the article and approved the submitted version.</p></sec>
<sec sec-type="funding-information" id="s10">
<title>Funding</title>
<p>This work was supported in part by the National Natural Science Foundation of China under Grant 61876039 and 62011530132 (NSFC-STINT project), and Shanghai Municipal Science and Technology Major Project No. 2021SHZDZX0103 and No. 2018SHZDZX01, and in part by the Shanghai Platform for Neuromorphic and AI Chip under Grant 17DZ2260900. In part, this work was financed by the mobility grant from STINT Sweden Dnr: CH2019-8357.</p></sec>
<sec sec-type="COI-statement" id="conf1">
<title>Conflict of Interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p></sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x00027;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p></sec> </body>
<back>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Biolek</surname> <given-names>Z.</given-names></name> <name><surname>Biolek</surname> <given-names>D.</given-names></name> <name><surname>Biolkova</surname> <given-names>V.</given-names></name></person-group> (<year>2009</year>). <article-title>SPICE model of memristor with nonlinear dopant drift</article-title>. <source>Radioengineering</source> <volume>18</volume>, <fpage>201</fpage>&#x02013;<lpage>214</lpage>. <pub-id pub-id-type="doi">10.1049/el.2010.0358</pub-id></citation>
</ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chanthbouala</surname> <given-names>A.</given-names></name> <name><surname>Garcia</surname> <given-names>V.</given-names></name> <name><surname>Cherifi</surname> <given-names>R. O.</given-names></name> <name><surname>Bouzehouane</surname> <given-names>K.</given-names></name> <name><surname>Fusil</surname> <given-names>S.</given-names></name> <name><surname>Moya</surname> <given-names>X.</given-names></name> <etal/></person-group>. (<year>2012</year>). <article-title>A ferroelectric memristor</article-title>. <source>Nat. Mater</source>. <volume>11</volume>, <fpage>860</fpage>&#x02013;<lpage>864</lpage>. <pub-id pub-id-type="doi">10.1038/nmat3415</pub-id><pub-id pub-id-type="pmid">22983431</pub-id></citation></ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chrysanthidis</surname> <given-names>N.</given-names></name> <name><surname>Fiebig</surname> <given-names>F.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Herman</surname> <given-names>P.</given-names></name></person-group> (<year>2021</year>). <article-title>Traces of semantization-from episodic to semantic memory in a spiking cortical network model</article-title>. <source>bioRxiv</source>. <pub-id pub-id-type="doi">10.1101/2021.07.18.452769</pub-id></citation>
</ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chua</surname> <given-names>L..</given-names></name></person-group> (<year>1971</year>). <article-title>Memristor-The missing circuit element</article-title>. <source>IEEE Trans. Circ. Theory</source> <volume>18</volume>, <fpage>507</fpage>&#x02013;<lpage>519</lpage>. <pub-id pub-id-type="doi">10.1109/TCT.1971.1083337</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B5">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ciregan</surname> <given-names>D.</given-names></name> <name><surname>Meier</surname> <given-names>U.</given-names></name> <name><surname>Schmidhuber</surname> <given-names>J.</given-names></name></person-group> (<year>2012</year>). <article-title>&#x0201C;Multi-column deep neural networks for image classification,&#x0201D;</article-title> in <source>2012 IEEE Conference on Computer Vision and Pattern Recognition</source> (<publisher-loc>Providence, RI</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>3642</fpage>&#x02013;<lpage>3649</lpage>.</citation>
</ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>DeFelipe</surname> <given-names>J.</given-names></name> <name><surname>Ballesteros-Y&#x000E1; nez</surname> <given-names>I.</given-names></name> <name><surname>Inda</surname> <given-names>M. C.</given-names></name> <name><surname>Mu noz</surname> <given-names>A.</given-names></name></person-group> (<year>2006</year>). <article-title>Double-bouquet cells in the monkey and human cerebral cortex with special reference to areas 17 and 18</article-title>. <source>Prog. Brain Res</source>. <volume>154</volume>, <fpage>15</fpage>&#x02013;<lpage>32</lpage>. <pub-id pub-id-type="doi">10.1016/S0079-6123(06)54002-6</pub-id><pub-id pub-id-type="pmid">17010701</pub-id></citation></ref>
<ref id="B7">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Farahini</surname> <given-names>N.</given-names></name> <name><surname>Hemani</surname> <given-names>A.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Clermidy</surname> <given-names>F.</given-names></name> <name><surname>Svensson</surname> <given-names>C.</given-names></name></person-group> (<year>2014</year>). <article-title>&#x0201C;A scalable custom simulation machine for the Bayesian confidence propagation neural network model of the brain,&#x0201D;</article-title> in <source>2014 19th Asia and South Pacific Design Automation Conference (ASP-DAC)</source> (<publisher-loc>Singapore</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>578</fpage>&#x02013;<lpage>585</lpage>.</citation>
</ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fiebig</surname> <given-names>F.</given-names></name> <name><surname>Herman</surname> <given-names>P.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2020</year>). <article-title>An indexing theory for working memory based on fast hebbian plasticity</article-title>. <source>eNeuro</source> <volume>7</volume>, <fpage>1</fpage>&#x02013;<lpage>22</lpage>. <pub-id pub-id-type="doi">10.1523/ENEURO.0374-19.2020</pub-id><pub-id pub-id-type="pmid">32127347</pub-id></citation></ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fiebig</surname> <given-names>F.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2017</year>). <article-title>A spiking working memory model based on Hebbian short-term potentiation</article-title>. <source>J. Neurosci</source>. <volume>37</volume>, <fpage>83</fpage>&#x02013;<lpage>96</lpage>. <pub-id pub-id-type="doi">10.1523/JNEUROSCI.1989-16.2016</pub-id><pub-id pub-id-type="pmid">28053032</pub-id></citation></ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gonzalez</surname> <given-names>J. A.</given-names></name> <name><surname>Hemani</surname> <given-names>A.</given-names></name> <name><surname>Stathis</surname> <given-names>D.</given-names></name></person-group> (<year>2021</year>). <article-title>&#x0201C;Synthesis of predictable global NoC by abutment in synchoros VLSI design,&#x0201D;</article-title> in <source>Proceedings 15th IEEE/ACM International Symposium on Networks-on-Chip &#x02013; NOCS 2021 (Virtual Conference)</source>.</citation>
</ref>
<ref id="B11">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hemani</surname> <given-names>A.</given-names></name> <name><surname>Jafri</surname> <given-names>S. M. A. H.</given-names></name> <name><surname>Masoumian</surname> <given-names>S.</given-names></name></person-group> (<year>2017</year>). <article-title>&#x0201C;Synchoricity and NOCs could make billion gate custom hardware centric SOCs affordable,&#x0201D;</article-title> in <source>Proceedings2017 Eleventh IEEE/ACM International Symposium on Networks-on-Chip (NOCS)</source> (<publisher-loc>Seoul</publisher-loc>), <fpage>1</fpage>&#x02013;<lpage>10</lpage>.</citation>
</ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hinton</surname> <given-names>G.</given-names></name> <name><surname>Deng</surname> <given-names>L.</given-names></name> <name><surname>Yu</surname> <given-names>D.</given-names></name> <name><surname>Dahl</surname> <given-names>G. E.</given-names></name> <name><surname>Mohamed</surname> <given-names>A.-,r.</given-names></name> <name><surname>Jaitly</surname> <given-names>N.</given-names></name> <etal/></person-group>. (<year>2012</year>). <article-title>Deep neural networks for acoustic modeling in speech recognition: the shared views of four research groups</article-title>. <source>IEEE Signal Process Mag</source>. <volume>29</volume>, <fpage>82</fpage>&#x02013;<lpage>97</lpage>. <pub-id pub-id-type="doi">10.1109/MSP.2012.2205597</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Huang</surname> <given-names>Y.</given-names></name> <name><surname>Liu</surname> <given-names>J.</given-names></name> <name><surname>Harkin</surname> <given-names>J.</given-names></name> <name><surname>McDaid</surname> <given-names>L.</given-names></name> <name><surname>Luo</surname> <given-names>Y.</given-names></name></person-group> (<year>2021</year>). <article-title>An memristor-based synapse implementation using BCM learning rule</article-title>. <source>Neurocomputing</source> <volume>423</volume>, <fpage>336</fpage>&#x02013;<lpage>342</lpage>. <pub-id pub-id-type="doi">10.1016/j.neucom.2020.10.106</pub-id></citation>
</ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hubel</surname> <given-names>D. H.</given-names></name> <name><surname>Wiesel</surname> <given-names>T. N.</given-names></name></person-group> (<year>1977</year>). <article-title>The functional architecture of the macaque visual cortex</article-title>. <source>Ferrier Lect</source>. <volume>198</volume>, <fpage>1</fpage>&#x02013;<lpage>59</lpage>. <pub-id pub-id-type="doi">10.1098/rspb.1977.0085</pub-id><pub-id pub-id-type="pmid">25926470</pub-id></citation></ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Joglekar</surname> <given-names>Y. N.</given-names></name> <name><surname>Wolf</surname> <given-names>S. J.</given-names></name></person-group> (<year>2009</year>). <article-title>The elusive memristor: properties of basic electrical circuits</article-title>. <source>Eur. J. Phys</source>. <volume>30</volume>, <fpage>661</fpage>&#x02013;<lpage>675</lpage>. <pub-id pub-id-type="doi">10.1088/0143-0807/30/4/001</pub-id></citation>
</ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Johansson</surname> <given-names>C.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2007</year>). <article-title>Towards cortex sized artificial neural systems</article-title>. <source>Neural Netw</source>. <volume>20</volume>, <fpage>48</fpage>&#x02013;<lpage>61</lpage>. <pub-id pub-id-type="doi">10.1016/j.neunet.2006.05.029</pub-id><pub-id pub-id-type="pmid">16860539</pub-id></citation></ref>
<ref id="B17">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Johnson</surname> <given-names>S.</given-names></name> <name><surname>Sundararajan</surname> <given-names>A.</given-names></name> <name><surname>Hunley</surname> <given-names>D.</given-names></name> <name><surname>Strachan</surname> <given-names>D.</given-names></name></person-group> (<year>2010</year>). <article-title>Memristive switching of single-component metallic nanowires</article-title>. <source>Nanotechnology</source> <volume>21</volume>, <fpage>125204</fpage>. <pub-id pub-id-type="doi">10.1088/0957-4484/21/12/125204</pub-id><pub-id pub-id-type="pmid">20203360</pub-id></citation></ref>
<ref id="B18">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kvatinsky</surname> <given-names>S.</given-names></name> <name><surname>Friedman</surname> <given-names>E. G.</given-names></name> <name><surname>Kolodny</surname> <given-names>A.</given-names></name> <name><surname>Weiser</surname> <given-names>U. C.</given-names></name></person-group> (<year>2013</year>). <article-title>TEAM: ThrEshold adaptive memristor model</article-title>. <source>IEEE Trans. Circ. Syst. I Regul. Pap</source>. <volume>60</volume>, <fpage>211</fpage>&#x02013;<lpage>221</lpage>. <pub-id pub-id-type="doi">10.1109/TCSI.2012.2215714</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B19">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kvatinsky</surname> <given-names>S.</given-names></name> <name><surname>Ramadan</surname> <given-names>M.</given-names></name> <name><surname>Friedman</surname> <given-names>E. G.</given-names></name> <name><surname>Kolodny</surname> <given-names>A.</given-names></name></person-group> (<year>2015</year>). <article-title>VTEAM: a general model for voltage-controlled memristors</article-title>. <source>IEEE Trans. Circ. Syst. II Express Briefs</source> <volume>62</volume>, <fpage>786</fpage>&#x02013;<lpage>790</lpage>. <pub-id pub-id-type="doi">10.1109/TCSII.2015.2433536</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Ekeberg</surname> <given-names>&#x000D6;.</given-names></name></person-group> (<year>1989</year>). <article-title>A one-layer feedback artificial neural network with a Bayesian learning rule</article-title>. <source>Int. J. Neural Syst</source>. <volume>1</volume>, <fpage>77</fpage>&#x02013;<lpage>87</lpage>. <pub-id pub-id-type="doi">10.1142/S0129065789000499</pub-id></citation>
</ref>
<ref id="B21">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Hemani</surname> <given-names>A.</given-names></name> <name><surname>Farahini</surname> <given-names>N.</given-names></name></person-group> (<year>2014</year>). <article-title>&#x0201C;Spiking brain models: computation, memory and communication constraints for custom hardware implementation,&#x0201D;</article-title> in <source>2014 19th Asia and South Pacific Design Automation Conference (ASP-DAC)</source> (<publisher-loc>Singapore</publisher-loc>), <fpage>556</fpage>&#x02013;<lpage>562</lpage>.</citation>
</ref>
<ref id="B22">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Holst</surname> <given-names>A.</given-names></name></person-group> (<year>1996</year>). <article-title>A higher order Bayesian neural network with spiking units</article-title>. <source>Int. J. Neural Syst</source>. <volume>7</volume>, <fpage>115</fpage>&#x02013;<lpage>128</lpage>. <pub-id pub-id-type="doi">10.1142/S0129065796000816</pub-id><pub-id pub-id-type="pmid">8823623</pub-id></citation></ref>
<ref id="B23">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Le</surname> <given-names>B. Q.</given-names></name> <name><surname>Grossi</surname> <given-names>A.</given-names></name> <name><surname>Vianello</surname> <given-names>E.</given-names></name> <name><surname>Wu</surname> <given-names>T.</given-names></name> <name><surname>Lama</surname> <given-names>G.</given-names></name> <name><surname>Beigne</surname> <given-names>E.</given-names></name> <etal/></person-group>. (<year>2018</year>). <article-title>Resistive RAM with multiple bits per cell: array-level demonstration of 3 bits per cell</article-title>. <source>IEEE Trans. Electron. Devices</source> <volume>66</volume>, <fpage>641</fpage>&#x02013;<lpage>646</lpage>. <pub-id pub-id-type="doi">10.1109/TED.2018.2879788</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B24">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>LeCun</surname> <given-names>Y.</given-names></name> <name><surname>Bottou</surname> <given-names>L.</given-names></name> <name><surname>Bengio</surname> <given-names>Y.</given-names></name> <name><surname>Haffner</surname> <given-names>P.</given-names></name></person-group> (<year>1998</year>). <article-title>Gradient-based learning applied to document recognition</article-title>. <source>Proc. IEEE</source> <volume>86</volume>, <fpage>2278</fpage>&#x02013;<lpage>2324</lpage>. <pub-id pub-id-type="doi">10.1109/5.726791</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B25">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>C.</given-names></name> <name><surname>Graves</surname> <given-names>C. E.</given-names></name> <name><surname>Sheng</surname> <given-names>X.</given-names></name> <name><surname>Miller</surname> <given-names>D.</given-names></name> <name><surname>Foltin</surname> <given-names>M.</given-names></name> <name><surname>Pedretti</surname> <given-names>G.</given-names></name> <etal/></person-group>. (<year>2020a</year>). <article-title>Analog content-addressable memories with memristors</article-title>. <source>Nat. Commun</source>. <volume>11</volume>, <fpage>1</fpage>&#x02013;<lpage>8</lpage>. <pub-id pub-id-type="doi">10.1038/s41467-020-15254-4</pub-id><pub-id pub-id-type="pmid">32242006</pub-id></citation></ref>
<ref id="B26">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>J.</given-names></name> <name><surname>Dong</surname> <given-names>Z.</given-names></name> <name><surname>Luo</surname> <given-names>L.</given-names></name> <name><surname>Duan</surname> <given-names>S.</given-names></name> <name><surname>Wang</surname> <given-names>L.</given-names></name></person-group> (<year>2020b</year>). <article-title>A novel versatile window function for memristor model with application in spiking neural network</article-title>. <source>Neurocomputing</source> <volume>405</volume>, <fpage>239</fpage>&#x02013;<lpage>246</lpage>. <pub-id pub-id-type="doi">10.1016/j.neucom.2020.04.111</pub-id></citation>
</ref>
<ref id="B27">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>Y.</given-names></name> <name><surname>Chu</surname> <given-names>J.</given-names></name> <name><surname>Duan</surname> <given-names>W.</given-names></name> <name><surname>Cai</surname> <given-names>G.</given-names></name> <name><surname>Fan</surname> <given-names>X.</given-names></name> <name><surname>Wang</surname> <given-names>X.</given-names></name> <etal/></person-group>. (<year>2018</year>). <article-title>Analog and digital bipolar resistive switching in solution-combustion-processed nio memristor</article-title>. <source>ACS Appl. Mater. Interfaces</source> <volume>10</volume>, <fpage>24598</fpage>&#x02013;<lpage>24606</lpage>. <pub-id pub-id-type="doi">10.1021/acsami.8b05749</pub-id><pub-id pub-id-type="pmid">29995376</pub-id></citation></ref>
<ref id="B28">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Long</surname> <given-names>Y.</given-names></name> <name><surname>She</surname> <given-names>X.</given-names></name> <name><surname>Mukhopadhyay</surname> <given-names>S.</given-names></name></person-group> (<year>2019</year>). <article-title>&#x0201C;Design of reliable DNN accelerator with un-reliable ReRAM,&#x0201D;</article-title> in <source>2019 Design, Automation &#x00026;Test in Europe Conference &#x00026;Exhibition (DATE)</source> (<publisher-loc>Florence</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1769</fpage>&#x02013;<lpage>1774</lpage>.</citation>
</ref>
<ref id="B29">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lundqvist</surname> <given-names>M.</given-names></name> <name><surname>Herman</surname> <given-names>P.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2011</year>). <article-title>Theta and gamma power increases and alpha/beta power decreases with memory load in an attractor network model</article-title>. <source>J. Cogn. Neurosci</source>. <volume>23</volume>, <fpage>3008</fpage>&#x02013;<lpage>3020</lpage>. <pub-id pub-id-type="doi">10.1162/jocn_a_00029</pub-id><pub-id pub-id-type="pmid">21452933</pub-id></citation></ref>
<ref id="B30">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Meli</surname> <given-names>C.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2013</year>). <article-title>A modular attractor associative memory with patchy connectivity and weight pruning</article-title>. <source>Network</source> <volume>24</volume>, <fpage>129</fpage>&#x02013;<lpage>150</lpage>. <pub-id pub-id-type="doi">10.3109/0954898X.2013.859323</pub-id><pub-id pub-id-type="pmid">24251411</pub-id></citation></ref>
<ref id="B31">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nishitani</surname> <given-names>Y.</given-names></name> <name><surname>Kaneko</surname> <given-names>Y.</given-names></name> <name><surname>Ueda</surname> <given-names>M.</given-names></name></person-group> (<year>2015</year>). <article-title>Supervised learning using spike-timing-dependent plasticity of memristive synapses</article-title>. <source>IEEE Trans. Neural Netw. Learn. Syst</source>. <volume>26</volume>, <fpage>2999</fpage>&#x02013;<lpage>3008</lpage>. <pub-id pub-id-type="doi">10.1109/TNNLS.2015.2399491</pub-id><pub-id pub-id-type="pmid">26595417</pub-id></citation></ref>
<ref id="B32">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Park</surname> <given-names>J.-K.</given-names></name> <name><surname>Kim</surname> <given-names>S.-Y.</given-names></name> <name><surname>Baek</surname> <given-names>J.-M.</given-names></name> <name><surname>Seo</surname> <given-names>D.-J.</given-names></name> <name><surname>Chun</surname> <given-names>J.-H.</given-names></name> <name><surname>Kwon</surname> <given-names>K.-W.</given-names></name></person-group> (<year>2013</year>). <article-title>&#x0201C;Analysis of resistance variations and variance-aware read circuit for cross-point ReRAM,&#x0201D;</article-title> in <source>2013 5th IEEE International Memory Workshop</source> (<publisher-loc>Monterey, CA</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>112</fpage>&#x02013;<lpage>115</lpage>.</citation>
</ref>
<ref id="B33">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Pickett</surname> <given-names>M. D.</given-names></name> <name><surname>Strukov</surname> <given-names>D. B.</given-names></name> <name><surname>Borghetti</surname> <given-names>J. L.</given-names></name> <name><surname>Yang</surname> <given-names>J. J.</given-names></name> <name><surname>Snider</surname> <given-names>G. S.</given-names></name> <name><surname>Stewart</surname> <given-names>D. R.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>Switching dynamics in titanium dioxide memristive devices</article-title>. <source>J. Appl. Phys</source>. <volume>106</volume>, <fpage>074508</fpage>. <pub-id pub-id-type="doi">10.1063/1.3236506</pub-id><pub-id pub-id-type="pmid">24313031</pub-id></citation></ref>
<ref id="B34">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Podobas</surname> <given-names>A.</given-names></name> <name><surname>Svedin</surname> <given-names>M.</given-names></name> <name><surname>Chien</surname> <given-names>S. W.</given-names></name> <name><surname>Peng</surname> <given-names>I. B.</given-names></name> <name><surname>Ravichandran</surname> <given-names>N. B.</given-names></name> <name><surname>Herman</surname> <given-names>P.</given-names></name> <etal/></person-group>. (<year>2021</year>). <article-title>&#x0201C;Streambrain: an hpc framework for brain-like neural networks on cpus, gpus and fpgas,&#x0201D;</article-title> in <source>Proceedings of the 11th International Symposium on Highly Efficient Accelerators and Reconfigurable Technologies</source>, <fpage>1</fpage>&#x02013;<lpage>6</lpage>.</citation>
</ref>
<ref id="B35">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Prezioso</surname> <given-names>M.</given-names></name> <name><surname>Merrikh-Bayat</surname> <given-names>F.</given-names></name> <name><surname>Hoskins</surname> <given-names>B.</given-names></name> <name><surname>Adam</surname> <given-names>G. C.</given-names></name> <name><surname>Likharev</surname> <given-names>K. K.</given-names></name> <name><surname>Strukov</surname> <given-names>D. B.</given-names></name></person-group> (<year>2015</year>). <article-title>Training and operation of an integrated neuromorphic network based on metal-oxide memristors</article-title>. <source>Nature</source> <volume>521</volume>, <fpage>61</fpage>&#x02013;<lpage>64</lpage>. <pub-id pub-id-type="doi">10.1038/nature14441</pub-id><pub-id pub-id-type="pmid">25951284</pub-id></citation></ref>
<ref id="B36">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Querlioz</surname> <given-names>D.</given-names></name> <name><surname>Bichler</surname> <given-names>O.</given-names></name> <name><surname>Dollfus</surname> <given-names>P.</given-names></name> <name><surname>Gamrat</surname> <given-names>C.</given-names></name></person-group> (<year>2013</year>). <article-title>Immunity to device variations in a spiking neural network with memristive nanodevices</article-title>. <source>IEEE Trans. Nanotechnol</source>. <volume>12</volume>, <fpage>288</fpage>&#x02013;<lpage>295</lpage>. <pub-id pub-id-type="doi">10.1109/TNANO.2013.2250995</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B37">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ravichandran</surname> <given-names>N. B.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Herman</surname> <given-names>P.</given-names></name></person-group> (<year>2020</year>). <article-title>&#x0201C;Learning representations in bayesian confidence propagation neural networks,&#x0201D;</article-title> in <source>2020 International Joint Conference on Neural Networks (IJCNN)</source> (<publisher-loc>Glasgow</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x02013;<lpage>7</lpage>.</citation>
</ref>
<ref id="B38">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ravichandran</surname> <given-names>N. B.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Herman</surname> <given-names>P.</given-names></name></person-group> (<year>2021a</year>). <article-title>&#x0201C;Brain-like approaches to unsupervised learning of hidden representations-a comparative study,&#x0201D;</article-title> in <source>International Conference on Artificial Neural Networks</source> (<publisher-loc>Bratislava</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>162</fpage>&#x02013;<lpage>173</lpage>.</citation>
</ref>
<ref id="B39">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ravichandran</surname> <given-names>N. B.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Herman</surname> <given-names>P.</given-names></name></person-group> (<year>2021b</year>). <article-title>Semi-supervised learning with bayesian confidence propagation neural network</article-title>. <source>arXiv [Preprint] arXiv:2106.15546</source>. <pub-id pub-id-type="doi">10.14428/esann/2021.ES2021-156</pub-id></citation>
</ref>
<ref id="B40">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sandberg</surname> <given-names>A.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Petersson</surname> <given-names>K.</given-names></name> <name><surname>Ekeberg</surname></name></person-group>. (<year>2002</year>). <article-title>A Bayesian attractor network with incremental learning</article-title>. <source>Network</source> <volume>13</volume>, <fpage>179</fpage>&#x02013;<lpage>194</lpage>. <pub-id pub-id-type="doi">10.1080/net.13.2.179.194</pub-id><pub-id pub-id-type="pmid">12061419</pub-id></citation></ref>
<ref id="B41">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Stathis</surname> <given-names>D.</given-names></name> <name><surname>Chaourani</surname> <given-names>P.</given-names></name> <name><surname>Jafri</surname> <given-names>S. M. A. H</given-names></name> <name><surname>Hemani</surname> <given-names>A.</given-names></name></person-group> (<year>2021</year>). <article-title>&#x0201C;Clock tree generation by abutment in synchoros VLSI design,&#x0201D;</article-title> in <source>Proceedings 2021 Nordic Circuits and Systems Conference (NorCAS)</source> (<publisher-loc>Oslo</publisher-loc>).</citation>
</ref>
<ref id="B42">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Stathis</surname> <given-names>D.</given-names></name> <name><surname>Sudarshan</surname> <given-names>C.</given-names></name> <name><surname>Yang</surname> <given-names>Y.</given-names></name> <name><surname>Jung</surname> <given-names>M.</given-names></name> <name><surname>Weis</surname> <given-names>C.</given-names></name> <name><surname>Hemani</surname> <given-names>A.</given-names></name> <etal/></person-group>. (<year>2020</year>). <article-title>eBrainII: a 3 kW realtime custom 3D DRAM integrated ASIC implementation of a biologically plausible model of a human scale cortex</article-title>. <source>J. Signal Process Syst</source>. <volume>92</volume>, <fpage>1323</fpage>&#x02013;<lpage>1343</lpage>. <pub-id pub-id-type="doi">10.1007/s11265-020-01562-x</pub-id></citation>
</ref>
<ref id="B43">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Strukov</surname> <given-names>D. B.</given-names></name> <name><surname>Snider</surname> <given-names>G. S.</given-names></name> <name><surname>Stewart</surname> <given-names>D. R.</given-names></name> <name><surname>Williams</surname> <given-names>R. S.</given-names></name></person-group> (<year>2008</year>). <article-title>The missing memristor found</article-title>. <source>Nature</source> <volume>453</volume>, <fpage>80</fpage>&#x02013;<lpage>83</lpage>. <pub-id pub-id-type="doi">10.1038/nature06932</pub-id><pub-id pub-id-type="pmid">18451858</pub-id></citation></ref>
<ref id="B44">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tully</surname> <given-names>P. J.</given-names></name> <name><surname>Hennig</surname> <given-names>M. H.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2014</year>). <article-title>Synaptic and nonsynaptic plasticity approximating probabilistic inference</article-title>. <source>Front. Synaptic. Neurosci</source>. <volume>6</volume>:<fpage>8</fpage>. <pub-id pub-id-type="doi">10.3389/fnsyn.2014.00008</pub-id><pub-id pub-id-type="pmid">24782758</pub-id></citation></ref>
<ref id="B45">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Vogginger</surname> <given-names>B.</given-names></name> <name><surname>Sch&#x000FC;ffny</surname> <given-names>R.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name> <name><surname>Cederstr&#x000F6;m</surname> <given-names>L.</given-names></name> <name><surname>Partzsch</surname> <given-names>J.</given-names></name> <name><surname>H&#x000F6;ppner</surname> <given-names>S.</given-names></name></person-group> (<year>2015</year>). <article-title>Reducing the computational footprint for real-time BCPNN learning</article-title>. <source>Front. Neurosci</source>. <volume>9</volume>:<fpage>2</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2015.00002</pub-id><pub-id pub-id-type="pmid">25657618</pub-id></citation></ref>
<ref id="B46">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wijesinghe</surname> <given-names>P.</given-names></name> <name><surname>Ankit</surname> <given-names>A.</given-names></name> <name><surname>Sengupta</surname> <given-names>A.</given-names></name> <name><surname>Roy</surname> <given-names>K.</given-names></name></person-group> (<year>2018</year>). <article-title>An all-memristor deep spiking neural computing system: a step toward realizing the low-power stochastic brain</article-title>. <source>IEEE Trans. Emerg. Top. Comput. Intell</source>. <volume>2</volume>, <fpage>345</fpage>&#x02013;<lpage>358</lpage>. <pub-id pub-id-type="doi">10.1109/TETCI.2018.2829924</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B47">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xu</surname> <given-names>J.</given-names></name> <name><surname>Huan</surname> <given-names>Y.</given-names></name> <name><surname>Yang</surname> <given-names>K.</given-names></name> <name><surname>Zhan</surname> <given-names>Y.</given-names></name> <name><surname>Zou</surname> <given-names>Z.</given-names></name> <name><surname>Zheng</surname> <given-names>L.-R.</given-names></name></person-group> (<year>2018</year>). <article-title>Optimized near-zero quantization method for flexible memristor based neural network</article-title>. <source>IEEE Access</source> <volume>6</volume>:<fpage>29320</fpage>&#x02013;<lpage>29331</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2018.2839106</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B48">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Xu</surname> <given-names>J.</given-names></name> <name><surname>Wang</surname> <given-names>D.</given-names></name> <name><surname>Li</surname> <given-names>F.</given-names></name> <name><surname>Zhang</surname> <given-names>L.</given-names></name> <name><surname>Stathis</surname> <given-names>D.</given-names></name> <name><surname>Yang</surname> <given-names>Y.</given-names></name> <etal/></person-group>. (<year>2021</year>). <article-title>&#x0201C;A memristor model with concise window function for spiking brain-inspired computation,&#x0201D;</article-title> in <source>2021 IEEE 3rd International Conference on Artificial Intelligence Circuits and Systems (AICAS)</source> (<publisher-loc>Washington DC</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x02013;<lpage>4</lpage>.</citation>
</ref>
<ref id="B49">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yang</surname> <given-names>J. J.</given-names></name> <name><surname>Pickett</surname> <given-names>M. D.</given-names></name> <name><surname>Li</surname> <given-names>X.</given-names></name> <name><surname>Ohlberg</surname> <given-names>D. A.</given-names></name> <name><surname>Stewart</surname> <given-names>D. R.</given-names></name> <name><surname>Williams</surname> <given-names>R. S.</given-names></name></person-group> (<year>2008</year>). <article-title>Memristive switching mechanism for metal/oxide/metal nanodevices</article-title>. <source>Nat. Nanotechnol</source>. <volume>3</volume>, <fpage>429</fpage>&#x02013;<lpage>433</lpage>. <pub-id pub-id-type="doi">10.1038/nnano.2008.160</pub-id><pub-id pub-id-type="pmid">18654568</pub-id></citation></ref>
<ref id="B50">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yang</surname> <given-names>Y.</given-names></name> <name><surname>Stathis</surname> <given-names>D.</given-names></name> <name><surname>Jord ao</surname> <given-names>R.</given-names></name> <name><surname>Hemani</surname> <given-names>A.</given-names></name> <name><surname>Lansner</surname> <given-names>A.</given-names></name></person-group> (<year>2020</year>). <article-title>Optimizing BCPNN learning rule for memory access</article-title>. <source>Front. Neurosci</source>. <volume>14</volume>:<fpage>878</fpage>. <pub-id pub-id-type="doi">10.3389/fnins.2020.00878</pub-id><pub-id pub-id-type="pmid">32982673</pub-id></citation></ref>
<ref id="B51">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yao</surname> <given-names>P.</given-names></name> <name><surname>Wu</surname> <given-names>H.</given-names></name> <name><surname>Gao</surname> <given-names>B.</given-names></name> <name><surname>Tang</surname> <given-names>J.</given-names></name> <name><surname>Zhang</surname> <given-names>Q.</given-names></name> <name><surname>Zhang</surname> <given-names>W.</given-names></name> <etal/></person-group>. (<year>2020</year>). <article-title>Fully hardware-implemented memristor convolutional neural network</article-title>. <source>Nature</source> <volume>577</volume>, <fpage>641</fpage>&#x02013;<lpage>646</lpage>. <pub-id pub-id-type="doi">10.1038/s41586-020-1942-4</pub-id><pub-id pub-id-type="pmid">31996818</pub-id></citation></ref>
<ref id="B52">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yin</surname> <given-names>W.</given-names></name> <name><surname>Kann</surname> <given-names>K.</given-names></name> <name><surname>Yu</surname> <given-names>M.</given-names></name> <name><surname>Sch&#x000FC;tze</surname> <given-names>H.</given-names></name></person-group> (<year>2017</year>). <article-title>Comparative study of CNN and RNN for natural language processing</article-title>. <source>arXiv [Preprint] arXiv:1702.01923</source>.<pub-id pub-id-type="pmid">29854252</pub-id></citation></ref>
<ref id="B53">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhao</surname> <given-names>Z.</given-names></name> <name><surname>Qu</surname> <given-names>L.</given-names></name> <name><surname>Wang</surname> <given-names>L.</given-names></name> <name><surname>Deng</surname> <given-names>Q.</given-names></name> <name><surname>Li</surname> <given-names>N.</given-names></name> <name><surname>Kang</surname> <given-names>Z.</given-names></name> <etal/></person-group>. (<year>2020</year>). <article-title>A memristor-based spiking neural network with high scalability and learning efficiency</article-title>. <source>IEEE Trans. Circ. Syst. II Express Briefs</source> <volume>67</volume>, <fpage>931</fpage>&#x02013;<lpage>935</lpage>. <pub-id pub-id-type="doi">10.1109/TCSII.2020.2980054</pub-id><pub-id pub-id-type="pmid">27295638</pub-id></citation></ref>
<ref id="B54">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhou</surname> <given-names>E.</given-names></name> <name><surname>Fang</surname> <given-names>L.</given-names></name> <name><surname>Liu</surname> <given-names>R.</given-names></name> <name><surname>Tang</surname> <given-names>Z.</given-names></name></person-group> (<year>2019</year>). <article-title>Area-efficient memristor spiking neural networks and supervised learning method</article-title>. <source>Sci. China Inf. Sci</source>. <volume>62</volume>, <fpage>1</fpage>&#x02013;<lpage>3</lpage>. <pub-id pub-id-type="doi">10.1007/s11432-018-9607-8</pub-id></citation>
</ref>
<ref id="B55">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zidan</surname> <given-names>M. A.</given-names></name> <name><surname>Jeong</surname> <given-names>Y.</given-names></name> <name><surname>Lee</surname> <given-names>J.</given-names></name> <name><surname>Chen</surname> <given-names>B.</given-names></name> <name><surname>Huang</surname> <given-names>S.</given-names></name> <name><surname>Kushner</surname> <given-names>M. J.</given-names></name> <etal/></person-group>. (<year>2018</year>). <article-title>A general memristor-based partial differential equation solver</article-title>. <source>Nat. Electron</source>. <volume>1</volume>, <fpage>411</fpage>&#x02013;<lpage>420</lpage>. <pub-id pub-id-type="doi">10.1038/s41928-018-0100-6</pub-id></citation>
</ref>
</ref-list> 
</back>
</article> 