<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Journal of Low Power Electronics and Applications</journal-id>
<journal-title>Journal of Low Power Electronics and Applications</journal-title>
<issn pub-type="epub">2079-9268</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/jlpea1010045</article-id>
<article-id pub-id-type="publisher-id">jlpea-01-00045</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>A Low-Power Hardware-Friendly Binary Decision Tree Classifier for Gas Identification</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Li</surname><given-names>Qingzheng</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Bermak</surname><given-names>Amine</given-names></name><xref ref-type="corresp" rid="c1-jlpea-01-00045"><sup>*</sup></xref></contrib>
<aff id="af1-jlpea-01-00045">Department of Electronic and Computer Engineering, Hong Kong University of Science and Technology (HKUST), Clear Water Bay, Kowloon, Hong Kong, China; E-Mail: <email>liqingzh@ust.hk</email></aff></contrib-group>
<author-notes>
<corresp id="c1-jlpea-01-00045">
<label>*</label> Author to whom correspondence should be addressed; E-Mail: <email>eebermak@ust.hk</email>; Tel.: +852-2358-8992.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2011</year></pub-date>
<pub-date pub-type="epub">
<day>09</day>
<month>03</month>
<year>2011</year></pub-date>
<volume>1</volume>
<issue>1</issue>
<fpage>45</fpage>
<lpage>58</lpage>
<history>
<date date-type="received">
<day>13</day>
<month>12</month>
<year>2010</year></date>
<date date-type="rev-recd">
<day>01</day>
<month>03</month>
<year>2011</year></date>
<date date-type="accepted">
<day>02</day>
<month>03</month>
<year>2011</year></date></history>
<permissions>
<copyright-statement>©2011 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2011</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>In this paper, we present a hardware friendly binary decision tree (DT) classifier for gas identification. The DT classifier is based on an axis-parallel decision tree implemented as threshold networks—one layer of threshold logic units (TLUs) followed by a programmable binary tree implemented using combinational logic circuits. The proposed DT classifier circuit removes the need for multiplication operation enabling up to 80% savings in terms of silicon area and power compared to oblique based-DT while achieving 91.36% classification accuracy without throughput degradation. The circuit was designed in 0.18 <italic>μm</italic> Charter CMOS process and tested using a data set acquired with in-house fabricated tin-oxide gas sensors.</p></abstract>
<kwd-group>
<kwd>binary decision tree</kwd>
<kwd>classifier</kwd>
<kwd>gas identification</kwd>
<kwd>hardware implementation</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>The last decade has witnessed an increasing interest in gas identification based on gas sensor arrays and pattern analysis for machine olfaction applications [<xref ref-type="bibr" rid="b1-jlpea-01-00045">1</xref>]. The multivariate response of an integrated gas sensor array can be used as a signature to detect and identify a wide range of odors. Conventional gas identification processing would typically involve signal pre-processing, feature extraction (dimensionality reduction) and classification [<xref ref-type="bibr" rid="b1-jlpea-01-00045">1</xref>]. Such processing is not well geared towards low cost compact hardware implementation because of the relative complexity involved in feature extraction methods such as principal component analysis (PCA) and linear discriminate analysis (LDA) and pattern recognition algorithms such as artificial neural networks (ANN), K nearest neighbor (KNN) and support vector machines (SVM) [<xref ref-type="bibr" rid="b2-jlpea-01-00045">2</xref>]. Furthermore, various classification algorithms such as ANN and SVM require large amounts of memory to store various coefficients and complex non-linear computations. Efficient hardware realization of gas identification algorithms would enable the integration of processing circuitry together with the sensor array. The fully integrated electronic-nose-on-chip has the potential to offer significant advantages in terms of reduced power consumption, lower manufacturing cost and increased portability for hand-held applications. A decision tree (DT) [<xref ref-type="bibr" rid="b3-jlpea-01-00045">3</xref>] based classifier offers a number of advantages such as smaller number of coefficients for storage and linear computation, making it a viable candidate for on-chip integration. Previously reported hardware implementations of DTs include: not only FPGA implementations [<xref ref-type="bibr" rid="b4-jlpea-01-00045">4</xref>] but also silicon integrations [<xref ref-type="bibr" rid="b5-jlpea-01-00045">5</xref>,<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>]. Only the two latter works target gas identification. Both implemented binary oblique DTs using a combination of custom VLSI chip and complex programmable logic device (CPLD) chip. This paper presents a compact single-chip DT classifier based on an axis-parallel DT architecture, which completely removes the need for multiplication operations. To achieve high throughput, the DT classifier is implemented as a layer of threshold logic units followed by a layer of combinational logic units [<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>]. Compared with prior works including non-DT hardware implementations [<xref ref-type="bibr" rid="b7-jlpea-01-00045">7</xref>,<xref ref-type="bibr" rid="b8-jlpea-01-00045">8</xref>], this approach provides a good trade-off between implementation complexity and classification accuracy.</p>
<p>The paper is organized as follows. Section 2 introduces binary decision tree classifiers and examines prior hardware implementations. Section 3 describes the proposed axis-parallel DT architecture and silicon implementation. Experimental results and performance evaluation are discussed in Section 4. Finally, a conclusion is given in Section 5.</p></sec>
<sec>
<label>2.</label>
<title>Binary Decision Tree Classifiers</title>
<sec>
<label>2.1.</label>
<title>Overview</title>
<p>Decision tree is a classification model where the target function is represented by a sequence of queries based on the attributes of input test patterns. The sequence of queries is reflected in a tree structure with finite depth. The classification of a particular pattern begins at the root decision node and terminates in the leaf node where a single class label is specified as the classification result. Each decision node contains different tests involving one or more attributes of the test patterns. Depending on the output of the decision node, only one branch of the decision node is selected and the child (descendent) node is visited. This process is repeated until a leaf is reached.</p>
<p><xref ref-type="fig" rid="f1-jlpea-01-00045">Figure 1(a)</xref> depicts a binary decision tree diagram with 4 decision nodes <italic>A</italic>, <italic>B</italic>, <italic>C</italic>, <italic>D</italic> and three classes <italic>F</italic>1, <italic>F</italic>2, <italic>F</italic>3. In a given node, a function can be represented in the following general format:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:semantics id="sm1">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>n</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>f</italic> is a function of <italic>n</italic> attributes (<italic>A</italic><sub>1</sub>, <italic>A</italic><sub>2</sub>, <italic>A</italic><sub>3</sub>,…,<italic>A<sub>n</sub></italic>). Depending on the value of function <italic>f</italic>, either the left or right branch of the node is activated. If only one attribute <italic>A<sub>i</sub></italic> is considered in one node, we can simplify the function as
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2" display="block">
<mml:semantics id="sm2">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>w<sub>i</sub></italic> is the threshold value of the attribute <italic>A<sub>i</sub></italic>. This function corresponds to the case of axis-parallel DTs (see e.g., ID3 [<xref ref-type="bibr" rid="b9-jlpea-01-00045">9</xref>] and C4.5 [<xref ref-type="bibr" rid="b10-jlpea-01-00045">10</xref>] or J48 in Weka [<xref ref-type="bibr" rid="b11-jlpea-01-00045">11</xref>]). On the other hand, oblique DTs (OC1 [<xref ref-type="bibr" rid="b12-jlpea-01-00045">12</xref>]) are represented by the following function
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm3" display="block">
<mml:semantics id="sm3">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula>where <italic>w<sub>i</sub></italic> represents the weight value of the attribute of <italic>A<sub>i</sub></italic> and <italic>w<sub>n</sub></italic><sub>+1</sub> is the threshold value of the function <italic>f</italic>.</p>
<p>While quadratic polynomial nonlinear DTs correspond to the function
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm4" display="block">
<mml:semantics id="sm4">
<mml:mtable>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>×</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mtext>∑</mml:mtext>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>i</mml:mi></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mrow>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mi>W</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:semantics></mml:math></disp-formula>where either <italic>A<sub>i</sub></italic> or <italic>A<sub>j</sub></italic> refers to a single attribute and the new weight 
<inline-formula>
<mml:math id="mm5" display="inline">
<mml:semantics id="sm5">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>×</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mo>;</mml:mo>
<mml:mspace width="0.2em"/>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup>
<mml:mo>×</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> and the new threshold 
<inline-formula>
<mml:math id="mm6" display="inline">
<mml:semantics id="sm6">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>×</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula>.</p>
<p><xref ref-type="fig" rid="f1-jlpea-01-00045">Figure 1</xref> depicts the three commonly used decision tree classification methods for the three-category problem. The two coordinate axes represent the two attributes <italic>A</italic><sub>1</sub> and <italic>A</italic><sub>2</sub> of test patterns. The decision boundaries of different decision tree methods have their own properties. For axis-parallel DTs, partition lines are parallel with the attribute axes. For oblique DTs, partition lines are oblique straight lines and the decision boundaries are curves for nonlinear DTs.</p>
<p>The three aforementioned DT classifiers are actually intimately related. For example, <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> can be embedded into <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> by introducing a new set of attributes corresponding to the products 
<inline-formula>
<mml:math id="mm7" display="inline">
<mml:semantics id="sm7">
<mml:mrow>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msubsup>
<mml:mo>×</mml:mo>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> with <italic>m<sub>i</sub></italic> &lt; 2 and <italic>m<sub>j</sub></italic> &lt; 2. Nonlinear DTs with polynomial hypersurfaces can be regarded as oblique DTs in the higher-dimension attribute space. In addition, axis-parallel DT can be treated as a special oblique tree where the weights for all attributes are zeros except for a single attribute whose weight is 1.</p>
<p>Nonlinear DTs are more complex than the other two types of DTs. Oblique DTs are normally much smaller than axis-parallel DTs due to their flexibility at each decision node. However, finding the best oblique DT is an NP-complete problem [<xref ref-type="bibr" rid="b12-jlpea-01-00045">12</xref>].</p></sec>
<sec>
<label>2.2.</label>
<title>Hardware Considerations</title>
<p><italic>A</italic> straightforward approach to the hardware implementation of DTs would be to implement every DT node as a separate module as proposed in [<xref ref-type="bibr" rid="b13-jlpea-01-00045">13</xref>]. The idea is illustrated [<xref ref-type="fig" rid="f2-jlpea-01-00045">Figure 2(a)</xref>] for the case of the DT diagram of <xref ref-type="fig" rid="f1-jlpea-01-00045">Figure 1(a)</xref>. The disadvantage of this approach is large latency, due to the fact that a new test pattern cannot be fed into the module before the classification output has propagated. To overcome the large latency problem, a universal node DT architecture [<xref ref-type="fig" rid="f2-jlpea-01-00045">Figure 2(b)</xref>], using registers to pipeline each stage, was proposed in [<xref ref-type="bibr" rid="b14-jlpea-01-00045">14</xref>]. Although it reduces hardware cost by folding each level, it exhibits a relatively low throughput as a result of serial processing [<xref ref-type="bibr" rid="b13-jlpea-01-00045">13</xref>,<xref ref-type="bibr" rid="b14-jlpea-01-00045">14</xref>].</p>
<p>A second approach [<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>] to the hardware implementation of DTs is based on the equivalence between DTs and threshold networks [<xref ref-type="bibr" rid="b15-jlpea-01-00045">15</xref>]. It exhibits a relatively high throughput since the signals need only to propagate through the threshold unit and the combinational logic layers. In the threshold network architecture [<xref ref-type="fig" rid="f2-jlpea-01-00045">Figure 2(d)</xref>], each decision node is implemented as a processing element in the threshold unit layer. Each element of the output layer is adopted to obtain the class-belonging according to the Boolean function. Obviously, this architecture requires more hardware resources to process the decision node, in parallel, and achieves higher classification speed.</p>
<p>In this paper, we propose to explore axis-parallel DT based classifiers, to remove the need for multiplication operations and enable a low cost compact implementation with a classification accuracy comparable to prior works [<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>]. OC1 tool is used to find the possibly optimal weight values by using a randomized algorithm with simulated annealing or heuristics methods [<xref ref-type="bibr" rid="b12-jlpea-01-00045">12</xref>].</p></sec></sec>
<sec>
<label>3.</label>
<title>Proposed DT Classifier Implementation</title>
<p>The proposed DT classifier illustrated in <xref ref-type="fig" rid="f3-jlpea-01-00045">Figure 3</xref> comprises two types of building blocks—threshold logic units and programmable logic units. In <xref ref-type="fig" rid="f3-jlpea-01-00045">Figure 3</xref>, each of the processing elements (PE) represents a threshold logic unit (TLU). The programmable logic unit (PLU) is implemented using a compact tree-based logic circuit. The control unit generates the synchronous control signals for both processing elements and programmable logic units.</p>
<p>There are 9 processing elements in the TLU layer and 3 programmable logic blocks using the tree structure. Each processing element is here a pipelined digital comparator (subtracter). Each programmable logic is configured for a given gas identification task. To minimize the area cost and avoid input and output port limitation, we chose a bit-serial architecture to process elements. The digital weight precision is important for classification performance. Research works in [<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>] suggests that 10 bit precision achieves the required accuracy for data quantization. In our design, the control block generates the data control signals and synchronizes the two layer building blocks. For one operation, 10-bit data are serially fed into the first layer and the valid signals are transported to the following layer once every 11 clock cycles.</p>
<sec>
<label>3.1.</label>
<title>Threshold Logic Unit</title>
<p>For an oblique DT architecture, each node requires to realize the function given by <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref>. The sum of the weighted feature is compared with a stored threshold value <italic>w<sub>n</sub></italic><sub>+1</sub> to make the decision on the node. With the increase of the number of attributes <italic>n</italic>, hardware resources increase linearly. By using pipelining and folding techniques, hardware resources can be minimized but throughput decreases linearly.</p>
<p>In the proposed axis-parallel DT architecture (<xref ref-type="fig" rid="f4-jlpea-01-00045">Figure 4</xref>), each node generates the function given by <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref>. The latter only requires a single digital comparator in place of the multiplication and accumulation (MAC) circuits. The processing element associated to each DT node is thus simplified significantly.</p>
<p>However due to the same classification problem, the built tree's node number and tree's depth are typically much larger than that of the oblique DT structure.</p></sec>
<sec>
<label>3.2.</label>
<title>Programmable Logic Unit</title>
<p>In prior works [<xref ref-type="bibr" rid="b5-jlpea-01-00045">5</xref>], a full custom chip was designed to implement the TLU layer for the oblique decision tree algorithm while AND-OR array-based combinational logic in CPLD was used to implement the output layer of the classifier. In this paper, we propose to design a tree-structure combinational logic circuit to replace the AND-OR array-based combinational logic circuit.</p>
<p>As shown in <xref ref-type="fig" rid="f5-jlpea-01-00045">Figure 5</xref>, our proposed circuit for tree-based programmable logic circuit includes four parts: (i) a dynamic current mode tree-based decoder, (ii) two lines of transistor switches to enable programmability, (iii) a differential dynamic comparator to amplify the low-swing signal and (iv) latches in the input and output stages to synchronize the data with the TLU layer.</p>
<p><xref ref-type="fig" rid="f6-jlpea-01-00045">Figure 6</xref> shows the stacked transistor tree circuit. This tree-based structure is the same as the DT diagram whereby only one branch will be turned on from the root to the leaf. There are two lines of switches that group all the stacked paths to differential outputs similarly to current based logic circuits [<xref ref-type="bibr" rid="b16-jlpea-01-00045">16</xref>]. To avoid static current consumption, the current source is controlled and the resistive load [<xref ref-type="bibr" rid="b16-jlpea-01-00045">16</xref>] is replaced by the parasitic capacitance. The operational principle is as follows. Firstly, the two lines of switches are configured according to the values stored in the registers. The stable input data come from the input latches. When <italic>reset</italic> is high, the differential outputs of the stacked transistor are pulled down to 0 (low). When <italic>reset</italic> is low and <italic>tree_enable</italic> is high, one of the differential outputs is conditionally charged.</p>
<p>The comparator used in our proposed circuit is illustrated in <xref ref-type="fig" rid="f7-jlpea-01-00045">Figure 7</xref>. Because the accuracy of the comparator plays a critical role in the proposed circuit, transistors <italic>M<sub>s</sub></italic><sub>1</sub> and <italic>M<sub>s</sub></italic><sub>2</sub> are included to avoid hysteresis or delayed response in the resetting phase. The operational principle is as follows. When the clock is high, the comparator is operated in the resetting mode and both outputs (<italic>out</italic> and <italic>ōut</italic>) are pulled to 0 (low) and the bias transistor <italic>M<sub>b</sub></italic> is turned off to avoid the static current. On the other hand, when the clock is low, the circuit will execute the comparison of differential inputs. The outputs of the comparator will be buffered and latched to the next stage.</p>
<p><xref ref-type="fig" rid="f8-jlpea-01-00045">Figure 8</xref> shows the timing waveform of our proposed circuit. The circuit is synchronous with the front-end TLU, whose data is serially processed and the valid signals appearing once every 11 clock cycles. The latches are used between the TLU and the programmable circuit to maintain the signals. There are four control signals in our circuit, which are generated by a synchronous control block. <italic>Latch_en</italic> signal is used to activate the latches when the output signals from TLU are valid. Next, the <italic>reset</italic> signal turns on the two reset transistors to discharge both differential buses of stacked tree and make them equal. After that, the root transistor turns on when <italic>Tree_enable</italic> = 1, the current flows from one specified path and charges one bus. Next, <italic>S A_enable</italic> activates the sense amplifier to amplify the low-swing signal. The latches in the output stage store the correct data for the next stage.</p></sec></sec>
<sec sec-type="results">
<label>4.</label>
<title>Results</title>
<sec>
<label>4.1.</label>
<title>Experiment Setup</title>
<p><xref ref-type="fig" rid="f9-jlpea-01-00045">Figure 9</xref> shows the experimental equipment used to acquire the data from our in-house fabricated tin-oxide gas sensor array. The gas delivery system includes four mass flow controllers (MFC), three of which are for the target gases and one for dry air. The gas sensor array was placed into a gas chamber, in which the gas concentration is adjusted by selecting the correct flow rate. Voltages across the sensors are measured and stored in the data acquisition board. This data was used to evaluate the performance of the proposed VLSI friendly DT classifier.</p>
<p><xref ref-type="fig" rid="f10-jlpea-01-00045">Figure 10</xref> shows an example of measured voltage response across a gas sensor. A test gas with a fixed concentration is injected periodically and the injection phase is followed by a cleaning phase by injecting fresh dry air. After the cleaning phase, the signal will settle down at the baseline value which is the reference value before gas injection. When the test gas is injected into the chamber, the voltage across the sensor changes as a result of variations in its conductivity. After several minutes of gas injection, the sensor output is sampled for concentrations ranging from 20 ppm to 200 ppm. <italic>CO</italic>, <italic>H<sub>2</sub></italic> and <italic>Ethanol</italic> are chosen as the test gases. <xref ref-type="fig" rid="f10-jlpea-01-00045">Figure 10</xref> shows the response of a gas sensor array comprising 12 individual tin oxide gas sensors fabricated in our design house. The overlapping curves of different gas sensors illustrate the low selectivity and non-linearity of the gas sensor array response, which adds to the complexity of the gas classification problem.</p></sec>
<sec>
<label>4.2.</label>
<title>Classification Performance</title>
<p>Principal component analysis (PCA) is often used to pre-process the initial data and decrease the dimensions of the feature vector [<xref ref-type="bibr" rid="b8-jlpea-01-00045">8</xref>]. <xref ref-type="fig" rid="f11-jlpea-01-00045">Figure 11</xref> shows the PCA pre-processing of the gas sensor array multivariate response for the case with two principal components—<italic>PC</italic><sub>1</sub> and <italic>PC</italic><sub>2</sub>. In this section, we compare the performance of the proposed binary decision tree classifier with and without PCA pre-processing. 12 gas sensors are selected to build the sensor test vector. The dimensions of test vectors are reduced to 2, 3 and 4 by using PCA program implemented in MATLAB. Both original and PCA pre-processed data were fed into the OC1 software tool to build the axis-parallel decision tree and the oblique decision tree for gas classification. <xref ref-type="table" rid="t1-jlpea-01-00045">Table 1</xref> shows classification performance and hardware complexity using the axis-parallel decision tree and the oblique decision tree classifiers with different number of principal components (PC) and without PCA, respectively.</p>
<p>According to our simulation results, both decision tree based classifiers benefit from the PCA algorithm. In particular, oblique decision tree hardware complexity can be significantly decreased by reducing the number of attributes in the test vector by using the PCA. However, PCA requires more hardware resources such as matrix multiplications. For example, if we want to select <italic>m</italic> principal components from <italic>n</italic> attributes, the PCA computation includes <italic>m</italic> × <italic>n</italic> multiplications and <italic>m</italic> × (<italic>n</italic> – 1) additions. From <xref ref-type="table" rid="t1-jlpea-01-00045">Table 1</xref>, one can note that with the increase of the number of principal components, the accuracy of the classifier increases. However, the requirements for hardware resources also increase. The axis-parallel decision tree classifier requires less computational units and memory bits compared to the oblique decision tree classifier. The trade-off between computational units and memory bits suggests that axis-parallel decision tree is a better choice for gas identification applications.</p></sec>
<sec>
<label>4.3.</label>
<title>VLSI Implementation</title>
<p>The proposed classifier was designed using Charter 0.18 <italic>μm</italic> CMOS process. The TLUs and the control unit were modeled using verilog HDL and synthesized using Design Compiler. The generated netlist was fed into SOC Encounter and the layout was generated through auto placement and routing using the standard digital cell library. The tree-structure programmable unit was designed in full-custom using Cadence tools. <xref ref-type="fig" rid="f12-jlpea-01-00045">Figure 12</xref> shows the layout of the complete classifier.</p>
<p><xref ref-type="table" rid="t2-jlpea-01-00045">Table 2</xref> compares the synthesized performance of oblique DT's Front-end TLU blocks together with our designed TLU blocks. Compared with prior art, this work significantly improves the hardware implementation cost in terms of power consumption, delay and silicon area as illustrated in <xref ref-type="table" rid="t2-jlpea-01-00045">Table 2</xref>.</p>
<p><xref ref-type="table" rid="t3-jlpea-01-00045">Table 3</xref> summarizes the overall performance in terms of hardware implementation cost and detection rate. To compare with previously reported FPGA implementation of gas classifiers [<xref ref-type="bibr" rid="b8-jlpea-01-00045">8</xref>], we also synthesized our classifier model using the same Xilinx Virtex II FPGA chip. According to our simulation results, our proposed axis-parallel DT classifier saves more than 90% FPGA resources compared with the committee machine method reported in [<xref ref-type="bibr" rid="b8-jlpea-01-00045">8</xref>]. It also saves up to almost 80% resources compared with the oblique DT classifier. Our proposed classifier only consumes 3.1 mW at a clock frequency of 100 MHz.</p></sec></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>In this paper, a low-power single-chip binary decision tree based classifier is proposed for gas identification applications. The classifier circuit uses an axis-parallel architecture to remove the need for multiplication operations and enables a low cost compact implementation with a classification accuracy comparable to prior art. Without PCA pre-processing, the proposed classifier can still achieve 91.36% classification accuracy without throughput degradation while saving up to 80% silicon area and power consumption. The performance of the circuit can easily be enhanced by using Boosting or Bagging techniques [<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>], but this would result in larger silicon area since a larger number of processing nodes will be required. The classifier circuit was successfully validated using 0.18 <italic>μm</italic> Charter CMOS process and in-house fabricated tin-oxide gas sensor array.</p></sec></body>
<back>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-jlpea-01-00045" position="float">
<label>Figure 1.</label>
<caption>
<p>(<bold>a</bold>) DT diagram of depth 3; (<bold>b</bold>) Axis-parallel DT classification method; (<bold>c</bold>) Oblique DT classification method; (<bold>d</bold>) Nonlinear DT classification method.</p></caption>
<graphic xlink:href="jlpea-01-00045f1.gif"/></fig>
<fig id="f2-jlpea-01-00045" position="float">
<label>Figure 2.</label>
<caption>
<p>Reported DT hardware implementations with: (<bold>a</bold>) representing a decision tree implemented on FPGA; (<bold>b</bold>) and (<bold>c</bold>) representing a decision tree implemented on an IP core; (<bold>d</bold>) representing a network ensemble of decision trees implemented using a 3D chip.</p></caption>
<graphic xlink:href="jlpea-01-00045f2.gif"/></fig>
<fig id="f3-jlpea-01-00045" position="float">
<label>Figure 3.</label>
<caption>
<p>Two layer neural network architecture to implement the axis-parallel DT classifier. The first layer is the TLU layer to implement the decision node function. The second layer is the PLU layer to implement the logic function for each class.</p></caption>
<graphic xlink:href="jlpea-01-00045f3.gif"/></fig>
<fig id="f4-jlpea-01-00045" position="float">
<label>Figure 4.</label>
<caption>
<p>The processing element of the axis-parallel decision tree. The processing element includes 10-bit register to store the coefficients, 3 1-bit registers for pipelining, one 1-bit adder with an invertor for the substraction operation and one tri-state buffer for controlling the output data. <italic>S<sub>in</sub></italic> and <italic>S<sub>out</sub></italic> represent the input and output ports of the serial 10-bit shift register.</p></caption>
<graphic xlink:href="jlpea-01-00045f4.gif"/></fig>
<fig id="f5-jlpea-01-00045" position="float">
<label>Figure 5.</label>
<caption>
<p>Overview of the proposed tree-based programmable logic circuit.</p></caption>
<graphic xlink:href="jlpea-01-00045f5.gif"/></fig>
<fig id="f6-jlpea-01-00045" position="float">
<label>Figure 6.</label>
<caption>
<p>The stacked transistor tree circuit. The FF line represents a line of registers to control the <italic>P</italic><sub>0</sub>, <italic>P</italic><sub>1</sub>, <italic>P</italic><sub>2</sub>, <italic>P</italic><sub>3</sub> values and determine the differential outputs (<italic>out</italic> and <italic>oūt</italic>) values.</p></caption>
<graphic xlink:href="jlpea-01-00045f6.gif"/></fig>
<fig id="f7-jlpea-01-00045" position="float">
<label>Figure 7.</label>
<caption>
<p>The dynamic comparator circuit with no static current consumption. Two operation phases: (i) the reset phase; (ii) the comparison phase.</p></caption>
<graphic xlink:href="jlpea-01-00045f7.gif"/></fig>
<fig id="f8-jlpea-01-00045" position="float">
<label>Figure 8.</label>
<caption>
<p>Timing diagram of the proposed programmable circuit with the four control signals <italic>Latch_enable</italic>, <italic>reset</italic>, <italic>tree_enable</italic> and <italic>S A_enable</italic>.</p></caption>
<graphic xlink:href="jlpea-01-00045f8.gif"/></fig>
<fig id="f9-jlpea-01-00045" position="float">
<label>Figure 9.</label>
<caption>
<p>Experiment setup for gas identification.</p></caption>
<graphic xlink:href="jlpea-01-00045f9.gif"/></fig>
<fig id="f10-jlpea-01-00045" position="float">
<label>Figure 10.</label>
<caption>
<p>Example of response of the gas sensor array.</p></caption>
<graphic xlink:href="jlpea-01-00045f10.gif"/></fig>
<fig id="f11-jlpea-01-00045" position="float">
<label>Figure 11.</label>
<caption>
<p>PCA pre-processing of the gas sensor array multivariate response.</p></caption>
<graphic xlink:href="jlpea-01-00045f11.gif"/></fig>
<fig id="f12-jlpea-01-00045" position="float">
<label>Figure 12.</label>
<caption>
<p>Layout of the classifier and interface circuits. Note that the PLUs are full-custom designs whereas the TLUs are designed using standard cells.</p></caption>
<graphic xlink:href="jlpea-01-00045f12.gif"/></fig>
<table-wrap id="t1-jlpea-01-00045" position="float">
<label>Table 1.</label>
<caption>
<p>Hardware cost and classification accuracy comparison for 3 gases (<italic>CO</italic>, <italic>H</italic><sub>2</sub> and <italic>Ethanol</italic>) with a total of 600 data-sets for 10 different concentrations ranging from 20 ppm to 200 ppm.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="top"><bold>PC No.</bold></th>
<th align="center" valign="top"><bold>DT Type</bold></th>
<th align="center" valign="top"><bold>Accuracy</bold></th>
<th align="center" valign="top"><bold>Leaves</bold></th>
<th align="center" valign="top"><bold>Node</bold></th>
<th align="center" valign="top"><bold>Mul</bold></th>
<th align="center" valign="top"><bold>Add/Sub</bold></th>
<th align="center" valign="top"><bold>Memory (No. of Coefficients)</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">2</td>
<td align="center" valign="top">axis-parallel</td>
<td align="center" valign="top">88.33%</td>
<td align="center" valign="top">13</td>
<td align="center" valign="top">12</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">12</td>
<td align="center" valign="top">12</td></tr>
<tr>
<td align="center" valign="top">2</td>
<td align="center" valign="top">oblique</td>
<td align="center" valign="top">89.24%</td>
<td align="center" valign="top">9</td>
<td align="center" valign="top">8</td>
<td align="center" valign="top">16</td>
<td align="center" valign="top">16</td>
<td align="center" valign="top">24</td></tr>
<tr>
<td valign="bottom" colspan="8">
<hr/></td></tr>
<tr>
<td align="center" valign="top">3</td>
<td align="center" valign="top">axis-parallel</td>
<td align="center" valign="top">92.73%</td>
<td align="center" valign="top">10</td>
<td align="center" valign="top">9</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">9</td>
<td align="center" valign="top">9</td></tr>
<tr>
<td align="center" valign="top">3</td>
<td align="center" valign="top">oblique</td>
<td align="center" valign="top">90.30%</td>
<td align="center" valign="top">5</td>
<td align="center" valign="top">4</td>
<td align="center" valign="top">12</td>
<td align="center" valign="top">12</td>
<td align="center" valign="top">16</td></tr>
<tr>
<td valign="bottom" colspan="8">
<hr/></td></tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">axis-parallel</td>
<td align="center" valign="top">99.55%</td>
<td align="center" valign="top">7</td>
<td align="center" valign="top">6</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">6</td>
<td align="center" valign="top">6</td></tr>
<tr>
<td align="center" valign="top">4</td>
<td align="center" valign="top">oblique</td>
<td align="center" valign="top">94.55%</td>
<td align="center" valign="top">3</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">8</td>
<td align="center" valign="top">8</td>
<td align="center" valign="top">10</td></tr>
<tr>
<td valign="bottom" colspan="8">
<hr/></td></tr>
<tr>
<td align="center" valign="top">no PCA</td>
<td align="center" valign="top">axis-parallel</td>
<td align="center" valign="top">91.36%</td>
<td align="center" valign="top">10</td>
<td align="center" valign="top">9</td>
<td align="center" valign="top"><bold>0</bold></td>
<td align="center" valign="top"><bold>9</bold></td>
<td align="center" valign="top"><bold>9</bold></td></tr>
<tr>
<td align="center" valign="top">no PCA</td>
<td align="center" valign="top">oblique</td>
<td align="center" valign="top">92.58%</td>
<td align="center" valign="top">6</td>
<td align="center" valign="top">5</td>
<td align="center" valign="top">60</td>
<td align="center" valign="top">60</td>
<td align="center" valign="top">65</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-jlpea-01-00045" position="float">
<label>Table 2.</label>
<caption>
<p>Performance of Front-end TLU blocks using Design Compiler(DC).</p></caption>
<table frame="hsides" rules="rows">
<thead>
<tr>
<th align="center" valign="top"/>
<th align="center" valign="top"><bold>DT Type</bold></th>
<th align="center" valign="top"><bold>Process</bold></th>
<th align="center" valign="top"><bold>clk (ns)</bold></th>
<th align="center" valign="top"><bold>Delay (ns)</bold></th>
<th align="center" valign="top"><bold>Power (mW)</bold></th>
<th align="center" valign="top"><bold>Area (10<sup>3</sup> <italic>μm</italic><sup>2</sup>)</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">Reference [<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>]</td>
<td align="center" valign="top">oblique</td>
<td align="center" valign="top">0.18 <italic>μm</italic></td>
<td align="center" valign="top">5</td>
<td align="center" valign="top">1.61</td>
<td align="center" valign="top">25</td>
<td align="center" valign="top">100</td></tr>
<tr>
<td align="center" valign="top">This work</td>
<td align="center" valign="top">axis-parallel</td>
<td align="center" valign="top">0.18 <italic>μm</italic></td>
<td align="center" valign="top">5</td>
<td align="center" valign="top"><bold>0.9</bold></td>
<td align="center" valign="top"><bold>3.1</bold></td>
<td align="center" valign="top"><bold>8.9</bold></td></tr></tbody></table></table-wrap>
<table-wrap id="t3-jlpea-01-00045" position="float">
<label>Table 3.</label>
<caption>
<p>Gas classification performance comparison.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="top"><bold>Classification Method</bold></th>
<th align="center" valign="top"><bold>GMM [<xref ref-type="bibr" rid="b7-jlpea-01-00045">7</xref>]</bold></th>
<th align="center" valign="top"><bold>Committee Machine [<xref ref-type="bibr" rid="b8-jlpea-01-00045">8</xref>]</bold></th>
<th align="center" valign="top"><bold>Oblique DT [<xref ref-type="bibr" rid="b6-jlpea-01-00045">6</xref>]</bold></th>
<th align="center" valign="top"><bold>This Work (Axis-Parallel DT)</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">Sensor type</td>
<td align="center" valign="top">2×2<break/><italic>SnO</italic><sub>2</sub> array</td>
<td align="center" valign="top">2×2<break/><italic>SnO</italic><sub>2</sub> array</td>
<td align="center" valign="top">4×4<break/><italic>SnO</italic><sub>2</sub> array</td>
<td align="center" valign="top">4 × 4<break/><italic>SnO</italic><sub>2</sub> array</td></tr>
<tr>
<td valign="bottom" colspan="5">
<hr/></td></tr>
<tr>
<td align="center" valign="top">Target gas species</td>
<td align="center" valign="top"><italic>CH</italic><sub>4</sub>,<italic>CO</italic>,<italic>H</italic><sub>2</sub>,<break/><italic>CO</italic>–<italic>CH</italic><sub>4</sub>,<break/><italic>CO</italic>–<italic>H</italic><sub>2</sub></td>
<td align="center" valign="top"><italic>CH</italic><sub>4</sub>,<italic>CO</italic>,<italic>H</italic><sub>2</sub>,<break/><italic>CO</italic>–<italic>CH</italic><sub>4</sub>,<break/><italic>CO</italic>–<italic>H</italic><sub>2</sub></td>
<td align="center" valign="top"><italic>Ethanol</italic>,<break/><italic>CO</italic>,<break/><italic>H</italic><sub>2</sub></td>
<td align="center" valign="top"><italic>Ethanol</italic>,<break/><italic>CO</italic>,<break/><italic>H</italic><sub>2</sub></td></tr>
<tr>
<td valign="bottom" colspan="5">
<hr/></td></tr>
<tr>
<td align="center" valign="top">Detection rate</td>
<td align="center" valign="top">92%</td>
<td align="center" valign="top">94%</td>
<td align="center" valign="top">92.58%</td>
<td align="center" valign="top">91.36%</td></tr>
<tr>
<td valign="bottom" colspan="5">
<hr/></td></tr>
<tr>
<td colspan="5" align="left" valign="top">FPGA Implementation</td></tr>
<tr>
<td align="center" valign="top">No. of Slice FF</td>
<td align="center" valign="top">N/A</td>
<td align="center" valign="top">12146</td>
<td align="center" valign="top">1176</td>
<td align="center" valign="top"><bold>233</bold></td></tr>
<tr>
<td align="center" valign="top">No. of 4-LUT</td>
<td align="center" valign="top">N/A</td>
<td align="center" valign="top">20115</td>
<td align="center" valign="top">1269</td>
<td align="center" valign="top"><bold>160</bold></td></tr>
<tr>
<td valign="bottom" colspan="5">
<hr/></td></tr>
<tr>
<td colspan="5" align="left" valign="top">ASIC Implementation</td></tr>
<tr>
<td align="center" valign="top">process</td>
<td align="center" valign="top">0.25 <italic>μm</italic></td>
<td align="center" valign="top">N/A</td>
<td align="center" valign="top">0.18 <italic>μm</italic></td>
<td align="center" valign="top">0.18 <italic>μm</italic></td></tr>
<tr>
<td align="center" valign="top">Area</td>
<td align="center" valign="top">1.69 <italic>mm</italic><sup>2</sup></td>
<td align="center" valign="top">N/A</td>
<td align="center" valign="top">0.1 <italic>mm</italic><sup>2</sup></td>
<td align="center" valign="top"><bold>0.028</bold> <italic>mm</italic><sup>2</sup></td></tr>
<tr>
<td align="center" valign="top">Power</td>
<td align="center" valign="top">N/A</td>
<td align="center" valign="top">500 <italic>mW</italic></td>
<td align="center" valign="top">25 <italic>mW</italic></td>
<td align="center" valign="top"><bold>3.1</bold> <italic>mW</italic></td></tr></tbody></table></table-wrap></sec>
<ack>
<p>This work was supported by a Research Grant from Hong Kong University of Science and Technology (Research Project Competition grant reference: RPC 10EG20).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-jlpea-01-00045"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gutierrez-Osuna</surname><given-names>R.</given-names></name></person-group><article-title>Pattern analysis for machine olfaction: A review</article-title><source>IEEE Sens. J.</source><year>2002</year><volume>2</volume><fpage>189</fpage><lpage>202</lpage><pub-id pub-id-type="doi">10.1109/JSEN.2002.800688</pub-id></citation></ref>
<ref id="b2-jlpea-01-00045"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Belhouari</surname><given-names>S.B.</given-names></name><name><surname>Bermak</surname><given-names>A.</given-names></name></person-group><article-title>Gas Identification using density models</article-title><source>Pattern Recognit. Lett.</source><year>2005</year><volume>26</volume><fpage>699</fpage><lpage>706</lpage><pub-id pub-id-type="doi">10.1016/j.patrec.2004.09.020</pub-id></citation></ref>
<ref id="b3-jlpea-01-00045"><label>3.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Beriman</surname><given-names>L.</given-names></name><name><surname>Freidman</surname><given-names>J.H.</given-names></name><name><surname>Olshen</surname><given-names>R.A.</given-names></name></person-group><source>Classification and Regression Trees.</source><publisher-name>Wadsworth International Group</publisher-name><publisher-loc>Belmont, CA, USA</publisher-loc><year>1984</year><fpage>203</fpage><lpage>215</lpage></citation></ref>
<ref id="b4-jlpea-01-00045"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Struharik</surname><given-names>R.J.R.</given-names></name><name><surname>Novak</surname><given-names>L.A.</given-names></name></person-group><article-title>Evolving decision trees in hardware</article-title><source>J. Circuits Syst. Comput.</source><year>2009</year><volume>18</volume><fpage>1033</fpage><lpage>1060</lpage><pub-id pub-id-type="doi">10.1142/S0218126609005526</pub-id></citation></ref>
<ref id="b5-jlpea-01-00045"><label>5.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bermak</surname><given-names>A.</given-names></name><name><surname>Martinez</surname><given-names>D.</given-names></name></person-group><article-title>A reconfigurable hardware implementation of tree classifier based on a custom chip and CPLD for gas sensors applications</article-title><conf-name>Proceedings of the IEEE TENCON</conf-name><conf-loc>Chiang Mai, Thailand</conf-loc><conf-date>October 2004</conf-date><volume>1</volume><fpage>32</fpage><lpage>35</lpage></citation></ref>
<ref id="b6-jlpea-01-00045"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bermak</surname><given-names>A.</given-names></name><name><surname>Martinez</surname><given-names>D.</given-names></name></person-group><article-title>A Compact 3D VLSI Classifier using Threshold Network Ensembles</article-title><source>IEEE Trans. Neural Networks</source><year>2003</year><volume>14</volume><fpage>1097</fpage><lpage>1109</lpage><pub-id pub-id-type="doi">10.1109/TNN.2003.816362</pub-id></citation></ref>
<ref id="b7-jlpea-01-00045"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shi</surname><given-names>M.</given-names></name><name><surname>Bermak</surname><given-names>A.</given-names></name></person-group><article-title>An Efficient Digital VLSI Implementation of Gaussian Mixture Models-based classifier</article-title><source>IEEE Trans. Very Large Scale Integr. Syst.</source><year>2006</year><volume>14</volume><fpage>962</fpage><lpage>974</lpage><pub-id pub-id-type="doi">10.1109/TVLSI.2006.884048</pub-id></citation></ref>
<ref id="b8-jlpea-01-00045"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shi</surname><given-names>M.</given-names></name><name><surname>Bermak</surname><given-names>A.</given-names></name><name><surname>Belhouari</surname><given-names>S.B.</given-names></name><name><surname>Chan</surname><given-names>P.C.H.</given-names></name></person-group><article-title>Gas Identification based on a committee machine for Microelectronics gas sensors</article-title><source>IEEE Trans. Instrum. Meas.</source><year>2006</year><volume>55</volume><fpage>1786</fpage><lpage>1793</lpage><pub-id pub-id-type="doi">10.1109/TIM.2006.880956</pub-id></citation></ref>
<ref id="b9-jlpea-01-00045"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Quinlan</surname><given-names>J.R.</given-names></name></person-group><article-title>Induction of Decision Trees</article-title><source>Mach. Learn.</source><year>1986</year><volume>1</volume><fpage>81</fpage><lpage>106</lpage></citation></ref>
<ref id="b10-jlpea-01-00045"><label>10.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Quinlan</surname><given-names>J.R.</given-names></name></person-group><source>C4.5: Programs for Machine Learning</source><publisher-name>Morgan Kaufmann Publishers</publisher-name><publisher-loc>San Francisco, CA, USA</publisher-loc><year>1993</year></citation></ref>
<ref id="b11-jlpea-01-00045"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hall</surname><given-names>M.</given-names></name><name><surname>Frank</surname><given-names>E.</given-names></name><name><surname>Holmes</surname><given-names>G.</given-names></name><name><surname>Pfahringer</surname><given-names>B.</given-names></name><name><surname>Reutemann</surname><given-names>P.</given-names></name><name><surname>Witten</surname><given-names>I.H.</given-names></name></person-group><article-title>The WEKA Data Mining Software: An Update</article-title><source>SIGKDD Explor.</source><year>2009</year><volume>11</volume><fpage>10</fpage><lpage>18</lpage><pub-id pub-id-type="doi">10.1145/1656274.1656278</pub-id></citation></ref>
<ref id="b12-jlpea-01-00045"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Murthy</surname><given-names>S.K.</given-names></name><name><surname>Kasif</surname><given-names>S.</given-names></name><name><surname>Azlzberg</surname><given-names>S.</given-names></name></person-group><article-title>Asystem for induction of oblique decision trees</article-title><source>J. Artif. Intell. Res.</source><year>1994</year><volume>2</volume><fpage>1</fpage><lpage>33</lpage></citation></ref>
<ref id="b13-jlpea-01-00045"><label>13.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Lopez-estrada</surname><given-names>S.</given-names></name><name><surname>Cumplido</surname><given-names>R.</given-names></name></person-group><article-title>Decision tree based FPGA architecture for texture sea state classification</article-title><conf-name>Proceedings of IEEE Conference on Reconfigurable Computing and FPGAs</conf-name><conf-loc>San Luis Potosi, Mexico</conf-loc><conf-date>September 2006</conf-date><fpage>1</fpage><lpage>7</lpage></citation></ref>
<ref id="b14-jlpea-01-00045"><label>14.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Struharik</surname><given-names>R.J.R.</given-names></name><name><surname>Novak</surname><given-names>L.A.</given-names></name></person-group><article-title>Intellectual property core implementation of decision trees</article-title><source>IET Comput. Digit. Tech.</source><year>2009</year><volume>3</volume><fpage>259</fpage><lpage>269</lpage><pub-id pub-id-type="doi">10.1049/iet-cdt.2008.0055</pub-id></citation></ref>
<ref id="b15-jlpea-01-00045"><label>15.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sethi</surname><given-names>I.K.</given-names></name></person-group><article-title>Entropy net: from decision trees to neural nets</article-title><source>Proc. IEEE</source><year>1990</year><volume>78</volume><fpage>1605</fpage><lpage>1613</lpage><pub-id pub-id-type="doi">10.1109/5.58346</pub-id></citation></ref>
<ref id="b16-jlpea-01-00045"><label>16.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Alioto</surname><given-names>M.</given-names></name><name><surname>Palumbo</surname><given-names>G.</given-names></name></person-group><source>Model and Design of Bipolar and MOS Current-Mode Logic: CML, ECL and SCL Digital Circuits</source><publisher-name>Kluwer Academic Publishers</publisher-name><publisher-loc>Norwell, MA, USA</publisher-loc><year>2005</year></citation></ref></ref-list></back></article>
