# A VLSI Architecture for the V-BLAST Algorithm in Spatial-Multiplexing MIMO Systems

Authors: Pedro Cervantes-Lozano; Luis F. González-Pérez; Andrés D. García-García
Journal: Journal of Engineering
 (2013)

---

## Abstract

This paper presents a VLSI architecture for the suboptimal hard-output Vertical-Bell Laboratories Layered Space-Time (V-BLAST) algorithm in the context of Spatial Multiplexing Multiple-Input Multiple-Output (SM-MIMO) systems immersed in Rayleigh fading channels. The design and implementation of its corresponding data-path and control-path components over FPGA devices are considered. Results on synthesis, bit error rate performance, and data throughput are reported.


---

## Body

## 1. Introduction

Multiple-Input Multiple-Output (MIMO) communication systems enhance spectral efficiency and bit error rate (BER) performance over wireless communication links [1–3]. MIMO is already considered as the transmission scheme for emerging wireless communication standards such as 802.11 n (WiFi), 802.16 d/e (WiMAX), and 802.11 ac (multi-user MIMO WLAN) [4]. Digital signal processing (DSP) algorithms for symbol decoding in these systems immersed in Rayleigh fading channels require trade-off design challenges regarding BER performance, data throughput, and complexity. Sub-optimal hard-output Spatial-Multiplexing MIMO (SM-MIMO) demodulation techniques [1, 2] offer low complexity aspects with a very high data throughput, but at a penalty in BER performance degradation as compared to Maximum-Likelihood (ML) performance. The V-BLAST (Vertical-Bell Laboratories Layered Space-Time) algorithm [5, 6] is an adequate sub-optimal hard-output SM-MIMO demodulation technique due to the previous mentioned properties. To the best of the authors’ knowledge, previous attempts on state-of-the-art VLSI implementations for hard-output V-BLAST-based sub-optimal SM-MIMO demodulation architectures are reported in literature [7, 8]. Seeking for low-power consumption and cost-effectiveness, these ASIC-based (Application-Specific Integrated Circuit) approaches permit no flexibility in meeting these attributes towards prototyping this kind of DSP solutions. In this work, a VLSI architecture for the sub-optimal hard-output detection V-BLAST algorithm is presented. The contribution of this paper is to present a novel VLSI architecture of the V-BLAST algorithm implemented on FPGA devices that perfectly suits SM-MIMO demodulation requirements regarding BER performance, hardware complexity, and data throughput while operating in Rayleigh fading channels, behaving competitively against other earlier approaches. The organization of this paper is as follows: Section 2 presents the MIMO communication model. The V-BLAST algorithm is presented in Section 3. Section 4 highlights the architecture proposal for the V-BLAST algorithm. Implementation results and comparison analysis are exposed in Section 5. Conclusions are covered in Section 6.


## 2. MIMO Communication Model

The MIMO communication model consists of an antenna array ofnT elements at the transmitter end and nR elements at the receiver in the presence of an ccs-iid AWGN (circularly-complex symmetric, identically-distributed Additive White Gaussian Noise) Rayleigh fading channel [1–3]. Information signal vector x=[x1⋯xnT]T, whose nT entries are symbols drawn from a q-QAM (q-ary Quadrature Amplitude Modulation) constellation (known also in this context as a Gaussian finite-integer lattice), is transmitted throughout these nT antennas. The received signal vector y=[y1⋯ynR]T of dimension nR can be mathematically described as
(1)y=Hx+η,
where x and y were defined above, η=[η1⋯ηnR]T is a nR AWGN vector, and H=[h11⋯h1nT⋮⋮hnR1⋯hnRnT] is the nR×nT MIMO channel matrix (entries ij from H correspond to the fading between the ith receiver and the jth transmitter antennas). System statistics are assumed to be invariant during a MIMO channel realization [1]. Without loss of generality, nR=nT=n will be considered in the sequel. Applying QR decomposition [9, 10] to H in (1), that is, H=QR, yields
(2)y~=Rx+η-,
where
(3)Q=[q11⋯q1n⋮⋮qn1⋯qnn],R=[r11⋯⋯r1n0⋱⋮⋮⋱⋱⋮0⋯0rnn]
are n×n complex orthogonal and upper-triangular matrices, respectively; moreover, y~=QHy and η-=QHη, where [·]H is the conjugate-transpose operator. Obviously speaking, QHH=R which reveals that QH is equivalent to inverse of Q, that is, Q-1. The problem to solve in this MIMO communication scenario is to find the transmitted vector x among qn possible candidates given that vector y was received and matrix H has been accurately estimated. As can be seen, an exhaustive search is prohibitively complex. A fast decoding procedure alleviates this complexity constraint by taking advantage of matrix structure of R presented in (2) under a successive interference cancellation (SIC) strategy [5, 6], thus yielding high data throughputs for symbol-decoding purposes. That is why sub-optimal decoding algorithms are preferred. One of the best sub-optimal hard-output decoding algorithms is the V-BLAST which is explained next.


## 3. The V-BLAST Algorithm

The main idea behind the V-BLAST algorithm, as a sub-optimal hard-output SM-MIMO demodulation technique, is that instead of performing an exhaustive search, symbol decoding ofx is performed under an ordered-iterative and back-propagation way (identified also as OSIC: Ordered Successive Interference Cancellation), in which noise (associated with η-=[η-1⋯η-n]T) and cochannel interference (related to elements in R) are treated through a SNR (Signal-to-Noise Ratio) optimization criterion that determines the order in which symbol entries of x will be decoded [5, 6]. At each iteration, an entry of vector x is sliced into a q-QAM value at the receiver end assuming that only one transmitter end element possesses the highest SNR (choice based on an optimization criterion), and thus the remaining transmitter elements are considered as interference (besides the presence of AWGN). With these ideas exposed, the V-BLAST algorithm is defined into the following steps (Steps 1–8).Step 1 (initial conditions).
Perform the assignments:(4)H1=R=[h111⋯h1n1⋮⋮hn11⋯hnn1],G1=R-1=[g11⋯g1n⋮⋮gn1⋯gnn],X1=y~=[y~1⋯y~n]T.
Let i=1 and κ1=[1⋯n] be an index vector.Step 2 (pre/post-detection).
Whilei≤n, and for 1≤j≤(n-i+1), a SNR optimization criterion dictates the order in which symbol entries of x will be decoded according to index ki, and is stated as
(5)ki=argminj∥[gj1i⋯gjni]∥22=argminj(∑m=1n|gjmi|2),
where elements gj1i,…,gjni are obtained form the Generalized-Inverse Gi (or Left-Pseudoinverse) [11] of the MIMO channel matrix deflated versions Hi, that is,
(6)Hi=[h11i⋯h1,(n-i+1)i⋮⋮hn1i⋯hn,(n-i+1)i],(7)Gi=Hi†=[g11i⋯g1ni⋮⋮g(n-i+1),1i⋯g(n-i+1),ni],
with Hi†=(HiHHi)-1HiH. Make k~i be the ki-th element of κi.Step 3 (nulling).
Co-channel interference is mitigated by the use of a nulling vectorgk~ii, that is, obtained from rows of (7), through operation
(8)y^k~i=gk~ii·Xi=∑m=1ngkimi·xmi,
with Xi=[x1i⋯xni]T,  gk~ii=[gki1i⋯gkini], and  y^k~i is the signal to be sliced.Step 4 (quantization).
A slicing operatorQ[·]:ℂ↦ℤ[j](q)⊂(ℤ++jℤ+) (which maps the signal
(9)y^k~i=xk~i︷symbol+∑τ=1i-1[(∑m=1ngkimi·hmkττ)·(xk~τ-c^k~τ)]︷co-channelinterference+∑m=1ngkimi·η-m︷noise
into a constellation point of the q-QAM modulation lattice) is applied to (8), yielding
(10)c^k~i=Q[y^k~i].
This outcome will be the k~ith entry of signal vector x^V, that is, x^V[k~i]=c^k~i. If i=n, go to Step 8; otherwise, go to Step 5.Step 5 (cancellation).
The treatment for co-channel interference and AWGN mitigation after (8)–(10) at iteration i is cancelled out according to
(11)Xi+1=Xi-hk~i·c^k~i,
where hk~i=[h1,k~i⋯hn,k~i]T is the k~ith column of H1.Step 6 (updating).
By, respectively, removing thek~ith element of κi and the kith column of Hi, deflated versions for the MIMO channel matrix are created, as well as reshaping index vector κi, such as:
(12)Hi+1=(⋯(H1)k~-1⋯)k~-i,(13)κi+1=(⋯(κ1)k-1⋯)k-i.Step 7.
Incrementi and go to Step 2.Step 8.
x
^
V
=
[
c
^
1
⋯
c
^
n
]
T is the transmitted vector.


## 4. Architecture Proposal

The block diagram of the proposed architecture for the sub-optimal hard-output V-BLAST-based SM-MIMO algorithm is shown in Figure1. The overall architecture for the V-BLAST algorithm consists of two components: the Data-Path (DP) is constituted by processing elements that implement all necessary mathematical operations; the Control-Path (CP) provides signaling for synchronization of data-flow for the appropriate decoding of vector x (represented by output x^V). In Figure 1,  Kclock  is the system clock, y~ and R are the inputs. Additional external signals are employed for initialization of V-BLAST operations through a reset signal (RESET¯), detection of valid information at the inputs (signal DV_inputs), and indication of valid information at the output (flag DV_output). Remember that the V-BLAST architecture is designed in order to perform symbol decoding of x^V generated from a 16-QAM constellation in AWGN Rayleigh fading channels for MIMO systems with n=4. The details concerning the design of the data-path and control-path components are exposed in the subsequent sections.Figure 1
Block diagram for the V-BLAST architecture proposal.


### 4.1. Finite-Precision Analysis

The configuration of the DP component in the V-BLAST architecture considers design specifications based on fixed-point arithmetic for inputsy~ and R (results were carried out by floating and fixed point MATLAB simulations). Figure 2 reveals the BER performance of the V-BLAST algorithm considering specifications mentioned above. Optimal performance is obviously the ML solution (ML-D legend, red line). It can be seen from the figure that using a 16-bit fixed-point word-length for R showed an acceptable performance of the V-BLAST as compared to its floating-point model (blue and blue-dotted lines) with less than 0.01 dB in loss. On the contrary, a reduction in finite-precision, that is, 8-bit word-length, caused a remarkable performance degradation of more than 1 dB (black-dotted line). In addition, 16 bits for both the real and imaginary parts of each entry in y~ was also considered.Figure 2
BER performance of the V-BLAST algorithm restricted to finite-precision over inputsy~ and R.


### 4.2. Data-Path Architecture

The architecture of the DP component is illustrated in Figure3, and consists of the following elements: (i) data multiplexors MR and MYG (identified by MR and My~, resp.) for selecting between H1=R and Hi, as well as for X1=y~ and Xi+1; (ii) registers REG_Hi and REG_Xi store, respectively, information regarding Hi in (6) and Xi+1 in (11); (iii) a block InviPseudo for matrix inversion and left-pseudoinversion [9–11] presented in (7); (iv) P/P-D implements optimization criterion (5); (v) N computes the nulling operation in (8); (vi) slicing operation for quantization (10) are implemented in Q; (vii) C performs cancellation (11); (viii) So is in charge of properly assign decoded symbol entries to vector x^V; and (ix) L manages deflated matrix versions in (12) and vector index reshaping in (13).Figure 3
Architecture for the DP component of the V-BLAST. Red arrows are control signals generated by CP.The V-BLAST architecture provides a decoded symbol entry ofx^V at an iteration i (exactly n iterations are required), meaning that multiplexors MYG and MR, and registers REG_Hi and REG_Xi regulate data flow contained in H1, Hi, X1, Xi, and Xi+1. For i=1 is evident that MR selects matrix R, and MYG does the same for vector y~. Whenever 1<i≤n, the vector Xi is updated into Xi+1 following (11) through REG_Xi; similarly happens to the matrix deflated versions Hi following (12) through REG_Hi. Moreover, the matrix deflated versions Hi are handled as just zeroing the k~ith column of H1 after each iteration i, yielding matrices(14)Hi=[**⋮⋯⋮**︷(n-i+1)elements××⋮⋯⋮××︸(i-1)elements],
where [×⋯×]T denotes a column vector filled with zeros, and [*⋯*]T indicate the remaining column entries, which are properly reordered according to entries contained in index vector κi. The P/P-D block computes (5) for every row entry of Gi. With the aid of a Batcher sorting network [12], a nulling vector gk~ii is chosen from a set of n-i+1 vector candidates based on ∥[gj1i⋯gjni]∥22 which is equivalent to ∑l=1n|gjli|2. Each one of these results is labeled consecutively from 1 to n-i+1. The index ki adopts then the value appended to the selected nulling vector. The N block uses the selected nulling vector gk~ii in order to perform (8), implementing all complex multiply-and-accumulate operations related to gk~ii·Xi=∑m=1ngkimi·xni. The Q block (or slicer) transforms y^k~i into a signal point c^k~i belonging to a  q-QAM constellation (c^k~i is coded into a log2q-bit word). For 1≤m≤n, complex additions and multiplications inherent in xmi+1=xmi-hmk~i·c^k~i complete cancellation in  C  with the sliced symbol c^k~i, the multiplexed Xi vector, and the selected column hk~i from H1. The So block registers and accordingly assigns symbol decoded entries c^k~i into elements in vector x^V based on index k~i, in other words x^V[k~i]=c^k~i (the value of c^k~i is the k~ith element of vector x^V). The L block deals with the process of generating deflated versions Hi from H1, and keeps track of indexes k~i and ki. Also, L provides the pertinent value of hk~i at every iteration i. As mentioned before, in order to perform the deflating operations in (12) the k~ith column of matrix H1 is removed and substituted by an n-dimensional zero vector. For the index vector update in (13), the kith element of the (n-i+1)-dimensional array κi is assigned to index k~i, that is, κi[ki]=k~i, then this element is removed afterwards from κi and it is re-sized into a (n-i)-dimensional array κi+1.The InviPseudo block is the key element for performing iterative generalized-inverses found in (7). The heavy and critical operation to be treated relies on (HiHHi)-1, since Gi=Hi†≐(HiHHi)-1HiH. InviPseudo implements a strategy for computing Gi based on a block-matrix Left-Pseudoinverse (hereinafter referred as LPI kernel) approach as proposed in [11]. For the case n=4 developed in this V-BLAST architecture, this LPI kernel is divided into the following entities: A,  B,  C,  D;  A-1,  D-1;  L=BD-1,  M=D-1C,  N=CA-1;  ϕ=A-LC,  ϕ-1;  α=ϕ-1L,  -α;  θ=D-1+Mα,  -θN. All of these entities represent 2×2 complex-valued matrices that after all V-BLAST iterations are accomplished, (HiHHi)-1 will be reassembled as [ϕ-1-α-θNθ]. Depending on the V-BLAST iteration i, data inside each entity is properly initialized for the correct computation of block-matrix inversion within Gi. For example: (i) at i=1: A=[e11e12e21e22], B=[e13e14e23e24], C=[e31e32e41e42], D=[e33e34e43e44]; (ii) at i=2: A=[e1100e11], B=[e12e1300], C=[e210e310], D=[e22e23e32e33]; (iii) at i=3: A=[e11e12e21e22], B=[0000], C=[0000], D=[1001]; (iv) at i=4: A=[e1100e11], B=[0000], C=[0000], D=[1001]. For the cases presented in (i)–(iv), elements eij are taken accordingly from HiHHi at its corresponding iteration V-BLAST iteration i. Additionally, all arithmetic divisions presented in the LPI kernel and throughout iterations concerning (7) were implemented with CORDIC (Coordinate Rotate Digital Computer) processors [13]. For this purpose, the CORDIC processor (or CORDIC engine) is structured as
(15)[x[n+1]y[n+1]]=K[1-σn·2-nσn·2-n1][x[n]y[n]],
where
(16)σn={+1:y[n]<0,-1:y[n]>0
is associated with the polarity of N micro-rotations in (15) for 0≤n≤N-1; x[0]=a>0 and y[0]=b are initial conditions in (15); K is an approximated scaling factor; and this engine is customized to perform b/a=-∑n=0N-1(σn·tan-1(2-n)).


### 4.3. Control-Path

The CP component is a finite state machine that handles all required control signals for the DP to properly decodex^V during a time period when channel statistics remain invariant, that is, a MIMO channel realization where inputs y~ and R do not change in time. Referring to Figures 1 and 3, CP employs the following signals: (i) signals get_Hi and get_Xi capture data Hi and Xi+1 in registers REG_Hi and REG_Hi, respectively: (ii) signal sasiSo captures every decoded entry c^k~i in x^V at block So; (iii) κi re-sizing in (13) is regulated by signals get_sXYZ, get_sAB and get_sL12; while deflated versions of H1 in (12) are generated through signals get_sREG_Hi01, get_sREG_Hi10 and get_sREG_Hi11. In addition to these, the roll of signal i is fundamental for synchronizing V-BLAST iterations, because i selects elements in MYG and MR, controls data flow in  L, allows the generation of generalized-inverses Gi at InviPseudo, and regulates the choice of nulling vectors in N.


## 4.1. Finite-Precision Analysis

The configuration of the DP component in the V-BLAST architecture considers design specifications based on fixed-point arithmetic for inputsy~ and R (results were carried out by floating and fixed point MATLAB simulations). Figure 2 reveals the BER performance of the V-BLAST algorithm considering specifications mentioned above. Optimal performance is obviously the ML solution (ML-D legend, red line). It can be seen from the figure that using a 16-bit fixed-point word-length for R showed an acceptable performance of the V-BLAST as compared to its floating-point model (blue and blue-dotted lines) with less than 0.01 dB in loss. On the contrary, a reduction in finite-precision, that is, 8-bit word-length, caused a remarkable performance degradation of more than 1 dB (black-dotted line). In addition, 16 bits for both the real and imaginary parts of each entry in y~ was also considered.Figure 2
BER performance of the V-BLAST algorithm restricted to finite-precision over inputsy~ and R.


## 4.2. Data-Path Architecture

The architecture of the DP component is illustrated in Figure3, and consists of the following elements: (i) data multiplexors MR and MYG (identified by MR and My~, resp.) for selecting between H1=R and Hi, as well as for X1=y~ and Xi+1; (ii) registers REG_Hi and REG_Xi store, respectively, information regarding Hi in (6) and Xi+1 in (11); (iii) a block InviPseudo for matrix inversion and left-pseudoinversion [9–11] presented in (7); (iv) P/P-D implements optimization criterion (5); (v) N computes the nulling operation in (8); (vi) slicing operation for quantization (10) are implemented in Q; (vii) C performs cancellation (11); (viii) So is in charge of properly assign decoded symbol entries to vector x^V; and (ix) L manages deflated matrix versions in (12) and vector index reshaping in (13).Figure 3
Architecture for the DP component of the V-BLAST. Red arrows are control signals generated by CP.The V-BLAST architecture provides a decoded symbol entry ofx^V at an iteration i (exactly n iterations are required), meaning that multiplexors MYG and MR, and registers REG_Hi and REG_Xi regulate data flow contained in H1, Hi, X1, Xi, and Xi+1. For i=1 is evident that MR selects matrix R, and MYG does the same for vector y~. Whenever 1<i≤n, the vector Xi is updated into Xi+1 following (11) through REG_Xi; similarly happens to the matrix deflated versions Hi following (12) through REG_Hi. Moreover, the matrix deflated versions Hi are handled as just zeroing the k~ith column of H1 after each iteration i, yielding matrices(14)Hi=[**⋮⋯⋮**︷(n-i+1)elements××⋮⋯⋮××︸(i-1)elements],
where [×⋯×]T denotes a column vector filled with zeros, and [*⋯*]T indicate the remaining column entries, which are properly reordered according to entries contained in index vector κi. The P/P-D block computes (5) for every row entry of Gi. With the aid of a Batcher sorting network [12], a nulling vector gk~ii is chosen from a set of n-i+1 vector candidates based on ∥[gj1i⋯gjni]∥22 which is equivalent to ∑l=1n|gjli|2. Each one of these results is labeled consecutively from 1 to n-i+1. The index ki adopts then the value appended to the selected nulling vector. The N block uses the selected nulling vector gk~ii in order to perform (8), implementing all complex multiply-and-accumulate operations related to gk~ii·Xi=∑m=1ngkimi·xni. The Q block (or slicer) transforms y^k~i into a signal point c^k~i belonging to a  q-QAM constellation (c^k~i is coded into a log2q-bit word). For 1≤m≤n, complex additions and multiplications inherent in xmi+1=xmi-hmk~i·c^k~i complete cancellation in  C  with the sliced symbol c^k~i, the multiplexed Xi vector, and the selected column hk~i from H1. The So block registers and accordingly assigns symbol decoded entries c^k~i into elements in vector x^V based on index k~i, in other words x^V[k~i]=c^k~i (the value of c^k~i is the k~ith element of vector x^V). The L block deals with the process of generating deflated versions Hi from H1, and keeps track of indexes k~i and ki. Also, L provides the pertinent value of hk~i at every iteration i. As mentioned before, in order to perform the deflating operations in (12) the k~ith column of matrix H1 is removed and substituted by an n-dimensional zero vector. For the index vector update in (13), the kith element of the (n-i+1)-dimensional array κi is assigned to index k~i, that is, κi[ki]=k~i, then this element is removed afterwards from κi and it is re-sized into a (n-i)-dimensional array κi+1.The InviPseudo block is the key element for performing iterative generalized-inverses found in (7). The heavy and critical operation to be treated relies on (HiHHi)-1, since Gi=Hi†≐(HiHHi)-1HiH. InviPseudo implements a strategy for computing Gi based on a block-matrix Left-Pseudoinverse (hereinafter referred as LPI kernel) approach as proposed in [11]. For the case n=4 developed in this V-BLAST architecture, this LPI kernel is divided into the following entities: A,  B,  C,  D;  A-1,  D-1;  L=BD-1,  M=D-1C,  N=CA-1;  ϕ=A-LC,  ϕ-1;  α=ϕ-1L,  -α;  θ=D-1+Mα,  -θN. All of these entities represent 2×2 complex-valued matrices that after all V-BLAST iterations are accomplished, (HiHHi)-1 will be reassembled as [ϕ-1-α-θNθ]. Depending on the V-BLAST iteration i, data inside each entity is properly initialized for the correct computation of block-matrix inversion within Gi. For example: (i) at i=1: A=[e11e12e21e22], B=[e13e14e23e24], C=[e31e32e41e42], D=[e33e34e43e44]; (ii) at i=2: A=[e1100e11], B=[e12e1300], C=[e210e310], D=[e22e23e32e33]; (iii) at i=3: A=[e11e12e21e22], B=[0000], C=[0000], D=[1001]; (iv) at i=4: A=[e1100e11], B=[0000], C=[0000], D=[1001]. For the cases presented in (i)–(iv), elements eij are taken accordingly from HiHHi at its corresponding iteration V-BLAST iteration i. Additionally, all arithmetic divisions presented in the LPI kernel and throughout iterations concerning (7) were implemented with CORDIC (Coordinate Rotate Digital Computer) processors [13]. For this purpose, the CORDIC processor (or CORDIC engine) is structured as
(15)[x[n+1]y[n+1]]=K[1-σn·2-nσn·2-n1][x[n]y[n]],
where
(16)σn={+1:y[n]<0,-1:y[n]>0
is associated with the polarity of N micro-rotations in (15) for 0≤n≤N-1; x[0]=a>0 and y[0]=b are initial conditions in (15); K is an approximated scaling factor; and this engine is customized to perform b/a=-∑n=0N-1(σn·tan-1(2-n)).


## 4.3. Control-Path

The CP component is a finite state machine that handles all required control signals for the DP to properly decodex^V during a time period when channel statistics remain invariant, that is, a MIMO channel realization where inputs y~ and R do not change in time. Referring to Figures 1 and 3, CP employs the following signals: (i) signals get_Hi and get_Xi capture data Hi and Xi+1 in registers REG_Hi and REG_Hi, respectively: (ii) signal sasiSo captures every decoded entry c^k~i in x^V at block So; (iii) κi re-sizing in (13) is regulated by signals get_sXYZ, get_sAB and get_sL12; while deflated versions of H1 in (12) are generated through signals get_sREG_Hi01, get_sREG_Hi10 and get_sREG_Hi11. In addition to these, the roll of signal i is fundamental for synchronizing V-BLAST iterations, because i selects elements in MYG and MR, controls data flow in  L, allows the generation of generalized-inverses Gi at InviPseudo, and regulates the choice of nulling vectors in N.


## 5. Results

The sub-optimal hard-output V-BLAST architecture was designed for operating with transmitted signal vectors generated from 16-QAM modulators immersed in AWGN Rayleigh fading channels withn=4. Simulations for functional validation were programmed with MATLAB. A million of MIMO channel realizations were considered or until a thousand of error blocks were found, that is, a decoded block consisting of nlog2q bits. Synthesis was performed with the Altera Quartus II IDE tool over Cyclone III FPGA devices.


### 5.1. BER Performance

The results for BER performance shown in Figure2 were corroborated for the finite-precision analysis of the V-BLAST architecture. That is, the FPGA implementation showed the same performance as the one obtained in simulation for the fixed point case, confirming a negligible degradation as compared to theoretical fixed-point performance. Two different simulation scenarios were considered: (i) a MATLAB-based simulation model used for obtaining floating and fixed points (restricted to a 16-bit precision) ML and V-BLAST performances; (ii) a testbench designed for evaluating performance of the device under test, whose test vectors were generated with MATLAB.


### 5.2. Synthesis Results

The Cyclone III device form Altera FPGA family was selected as implementation target for the V-BLAST architecture. Different synthesis and fitting modes were performed within the Quartus II IDE tool. For instance, synthesis considered speed (sp), balanced (bd), and area (ar) optimization techniques, while fitting considered standard (std) and fast (fst) fitter efforts. Therefore, six different modes were evaluated for implementation purposes, namely: sp-std, bd-std, ar-std, sp-fst, bd-fst, and ar-fst. In all of these cases, hardware complexity resided on logic elements (LEs) and embedded multipliers (eMults). The whole V-BLAST architecture demanded respectively a 27% and a 72% usage of the total amount of LEs and eMults available in the FPGA device. In fact, (a) regarding LEs usage: 62.98% belonged to the InviPseudo block, 24.94% toP/P-D, 3.67% to C, 3.29% to L, 2.39% for N, and less than 0.5% for the remaining blocks (MR, MYG, REG_Hi, REG_Xi, Q, and So); (b) regarding eMults usage, 84.61% belonged to InviPseudo block, and 15.39% to N. The best temporal performance of the V-BLAST architecture is offered by the bd-std implementation mode, exhibiting a critical path of 10.056 ns with data throughput of 265.182 Mbps, since 4 bits were decoded after 1.5 clock cycles. This temporal performance perfectly suits SM-MIMO requirements for Rayleigh fading channels as stipulated in 802.11 n, whose specifications are around the 100–200 Mbps [14]. The V-BLAST architecture worked at a maximum clock frequency of 99.443 MHz with an overall decoding latency of 12 clock cycles, equivalent to 120.672 ns. Furthermore, Table 1 shows comparative results against other related works. The floorplan result of the complete V-BLAST architecture is provided in Figure 4: the overall V-BLAST architecture (top-view, label A); MR, MYG, REG_Hi, and REG_Xi (left middle-view, label B1); N, Q, C, So, and L (right middle-view, label B2); InviPseudo (left bottom-view, label C1), and P/P-D (right bottom-view, label C2).Table 1
V-BLAST architecture comparison.
[7]
[8]
This work
n
4
4
4
Device target
ASIC
ASIC
FPGA
Transmission scheme
QPSK
16-QAM
16-QAM
Data throughput
128 Mbps
212 Mbps
265.18 Mbps
Maximum clock frequency
80 MHz
140 MHz
99.44 MHzFloorplan results for the V-BLAST architecture.


### 5.3.  Comparison Analysis

Earlier attempts in providing architectural implementations on sub-optimal hard-output V-BLAST-based SM-MIMO solutions are cited in [7, 8]. Albeit their implementation structured on ASIC devices, which inhibits design flexibility and cost-effectiveness, the FPGA-based VLSI architectural approach developed in this work represents a modular, portable, and scalable implementation of the V-BLAST algorithm as depicted in Figure 3. Moduli constituting the V-BLAST architecture are configured under an RTL level, yielding a moderate capability support for high-dimensional lattices (i.e., q-QAM with 16, 64, 256 values), and high-dimensional MIMO communication scenarios (i.e., n=4,8). Performance results reported in Table 1 exhibit competitive aspects against other state-of-the-art solutions: a low-dimensional lattice (i.e., QPSK) V-BLAST [7], and a high-dimensional lattice (i.e., 16-QAM) V-BLAST [8]. The heaviest hardware complexity resides on how iterative Hi† operations are performed. For instance, both the LPI kernel and Hi† operations handled in [7] yield the same O(n3) complexity; however, the LPI kernel significantly avoids matrix unitary transformations, an issue that demands a more sophisticated and complex control-path design. Also, the use of more CORDIC engines in [7, 8] affect data throughput as well as affecting symbol decoding latencies. On the other hand, Hi†operations in [8] are alleviated through level-thresholding, another issue which incurs into BER performance degradation for sub-optimal hard-output SM-MIMO demodulation purposes.


## 5.1. BER Performance

The results for BER performance shown in Figure2 were corroborated for the finite-precision analysis of the V-BLAST architecture. That is, the FPGA implementation showed the same performance as the one obtained in simulation for the fixed point case, confirming a negligible degradation as compared to theoretical fixed-point performance. Two different simulation scenarios were considered: (i) a MATLAB-based simulation model used for obtaining floating and fixed points (restricted to a 16-bit precision) ML and V-BLAST performances; (ii) a testbench designed for evaluating performance of the device under test, whose test vectors were generated with MATLAB.


## 5.2. Synthesis Results

The Cyclone III device form Altera FPGA family was selected as implementation target for the V-BLAST architecture. Different synthesis and fitting modes were performed within the Quartus II IDE tool. For instance, synthesis considered speed (sp), balanced (bd), and area (ar) optimization techniques, while fitting considered standard (std) and fast (fst) fitter efforts. Therefore, six different modes were evaluated for implementation purposes, namely: sp-std, bd-std, ar-std, sp-fst, bd-fst, and ar-fst. In all of these cases, hardware complexity resided on logic elements (LEs) and embedded multipliers (eMults). The whole V-BLAST architecture demanded respectively a 27% and a 72% usage of the total amount of LEs and eMults available in the FPGA device. In fact, (a) regarding LEs usage: 62.98% belonged to the InviPseudo block, 24.94% toP/P-D, 3.67% to C, 3.29% to L, 2.39% for N, and less than 0.5% for the remaining blocks (MR, MYG, REG_Hi, REG_Xi, Q, and So); (b) regarding eMults usage, 84.61% belonged to InviPseudo block, and 15.39% to N. The best temporal performance of the V-BLAST architecture is offered by the bd-std implementation mode, exhibiting a critical path of 10.056 ns with data throughput of 265.182 Mbps, since 4 bits were decoded after 1.5 clock cycles. This temporal performance perfectly suits SM-MIMO requirements for Rayleigh fading channels as stipulated in 802.11 n, whose specifications are around the 100–200 Mbps [14]. The V-BLAST architecture worked at a maximum clock frequency of 99.443 MHz with an overall decoding latency of 12 clock cycles, equivalent to 120.672 ns. Furthermore, Table 1 shows comparative results against other related works. The floorplan result of the complete V-BLAST architecture is provided in Figure 4: the overall V-BLAST architecture (top-view, label A); MR, MYG, REG_Hi, and REG_Xi (left middle-view, label B1); N, Q, C, So, and L (right middle-view, label B2); InviPseudo (left bottom-view, label C1), and P/P-D (right bottom-view, label C2).Table 1
V-BLAST architecture comparison.
[7]
[8]
This work
n
4
4
4
Device target
ASIC
ASIC
FPGA
Transmission scheme
QPSK
16-QAM
16-QAM
Data throughput
128 Mbps
212 Mbps
265.18 Mbps
Maximum clock frequency
80 MHz
140 MHz
99.44 MHzFloorplan results for the V-BLAST architecture.


## 5.3.  Comparison Analysis

Earlier attempts in providing architectural implementations on sub-optimal hard-output V-BLAST-based SM-MIMO solutions are cited in [7, 8]. Albeit their implementation structured on ASIC devices, which inhibits design flexibility and cost-effectiveness, the FPGA-based VLSI architectural approach developed in this work represents a modular, portable, and scalable implementation of the V-BLAST algorithm as depicted in Figure 3. Moduli constituting the V-BLAST architecture are configured under an RTL level, yielding a moderate capability support for high-dimensional lattices (i.e., q-QAM with 16, 64, 256 values), and high-dimensional MIMO communication scenarios (i.e., n=4,8). Performance results reported in Table 1 exhibit competitive aspects against other state-of-the-art solutions: a low-dimensional lattice (i.e., QPSK) V-BLAST [7], and a high-dimensional lattice (i.e., 16-QAM) V-BLAST [8]. The heaviest hardware complexity resides on how iterative Hi† operations are performed. For instance, both the LPI kernel and Hi† operations handled in [7] yield the same O(n3) complexity; however, the LPI kernel significantly avoids matrix unitary transformations, an issue that demands a more sophisticated and complex control-path design. Also, the use of more CORDIC engines in [7, 8] affect data throughput as well as affecting symbol decoding latencies. On the other hand, Hi†operations in [8] are alleviated through level-thresholding, another issue which incurs into BER performance degradation for sub-optimal hard-output SM-MIMO demodulation purposes.


## 6. Conclusions

In this work, a VLSI architecture for the sub-optimal hard-output SM-MIMO V-BLAST algorithm was proposed. The architecture was designed for operating with symbols drawn from 16-QAM modulators under AWGN Rayleigh fading channels with parametern=4. Simulation testing and hardware implementation on Altera Cyclone III FPGA devices validated the functionality of the V-BLAST architecture.



---

*Source: 534735-2013-01-01.xml*