89 research outputs found

    Hardware Design of Real-Time Neural Signal Generator

    Get PDF
    Brain Machine Interface (BMI) denominates a collection of systems which interface with the Central Nervous System (CNS). Implementation of a BMI involves the detection, extraction, processing, and translation of the signals from the Central Nervous System. A simulator to generate extracellular recordings is proposed by P.T.Thorbergsson, H. Jorntell, F.Bengtsson, M.Garwicz, J. Schouenborg, A.J Johansson in [1]. The described simulator is available as a script implemented in the numerical computing software "Matlab". To measure the performance of the BMI systems, the Matlab script is needed to be implemented on a Field Programmable Gate Array (FPGA) providing real-time signals. The first stage of the implementation on the FGPA requires a hardware design of the simulator. This report presents the hardware design of the Real-Time Neural Simulator. The Real-Time Neural Simulator the original Matlab script was to be adapted for the hardware design. The adaptation process involved replacing the Matlab closed source signal processing and mathematical functions with hardware implementable algorithms. The performances of these algorithms are successfully verified against the Matlab functions. The Neural Simulator Matlab script is converted from floating point to fixed point implementation and the performance is verified for different word lengths. One of the quantitative measurements for comparison of the output between original script and final fixed point script was the percent of energy difference of the output signal. For a word length of 13-bits with 1 sign, 6 decimal, and 6 fractional bits, the calculated difference is less than 5 percent depicting the strong resemblance between the outputs. Finally the hardware design of the simulator constitutes of interconnected hardware units. At the highest level a "Data Processing Unit" generates the target and the noise recordings, "Controller" enables, disables the processing modules and routes the data between them, and finally the RAM and ROM form the memory units to store the input and processed data

    Design Exploration of an FPGA-Based Multivariate Gaussian Random Number Generator

    No full text
    Monte Carlo simulation is one of the most widely used techniques for computationally intensive simulations in a variety of applications including mathematical analysis and modeling and statistical physics. A multivariate Gaussian random number generator (MVGRNG) is one of the main building blocks of such a system. Field Programmable Gate Arrays (FPGAs) are gaining increased popularity as an alternative means to the traditional general purpose processors targeting the acceleration of the computationally expensive random number generator block due to their fine grain parallelism and reconfigurability properties and lower power consumption. As well as the ability to achieve hardware designs with high throughput it is also desirable to produce designs with the flexibility to control the resource usage in order to meet given resource constraints. This work proposes a novel approach for mapping a MVGRNG onto an FPGA by optimizing the computational path in terms of hardware resource usage subject to an acceptable error in the approximation of the distribution of interest. An analysis on the impact of the error due to truncation/rounding operation along the computational path is performed and an analytical expression of the error inserted into the system is presented. Extra dimensionality is added to the feature of the proposed algorithm by introducing a novel methodology to map many multivariate Gaussian random number generators onto a single FPGA. The effective resource sharing techniques introduced in this thesis allows further reduction in hardware resource usage. The use of MVGNRG can be found in a wide range of application, especially in financial applications which involve many correlated assets. In this work it is demonstrated that the choice of the objective function employed for the hardware optimization of the MVRNG core has a considerable impact on the final performance of the application of interest. Two of the most important financial applications, Value-at-Risk estimation and option pricing are considered in this work

    QonFusion -- Quantum Approaches to Gaussian Random Variables: Applications in Stable Diffusion and Brownian Motion

    Full text link
    In the present study, we delineate a strategy focused on non-parametric quantum circuits for the generation of Gaussian random variables (GRVs). This quantum-centric approach serves as a substitute for conventional pseudorandom number generators (PRNGs), such as the \textbf{torch.rand} function in PyTorch. The principal theme of our research is the incorporation of Quantum Random Number Generators (QRNGs) into classical models of diffusion. Notably, our Quantum Gaussian Random Variable Generator fulfills dual roles, facilitating simulations in both Stable Diffusion (SD) and Brownian Motion (BM). This diverges markedly from prevailing methods that utilize parametric quantum circuits (PQCs), often in conjunction with variational quantum eigensolvers (VQEs). Although conventional techniques can accurately approximate ground states in complex systems or model elaborate probability distributions, they require a computationally demanding optimization process to tune parameters. Our non-parametric strategy obviates this necessity. To facilitate assimilating our methodology into existing computational frameworks, we put forward QonFusion, a Python library congruent with both PyTorch and PennyLane, functioning as a bridge between classical and quantum computational paradigms. We validate QonFusion through extensive statistical testing, including tests which confirm the statistical equivalence of the Gaussian samples from our quantum approach to classical counterparts within defined significance limits. QonFusion is available at \url{https://boltzmannentropy.github.io/qonfusion.github.io/} to reproduce all findings here
    • …
    corecore