I. INTRODUCTION
FPGAs are programmable hardware devices. It is a very closed technology, surrounded by proprietary
software, where only what the manufacturer dictates can be used under the conditions they specify. There is
no room for innovation, no room for community involvement, and the internal details of the FPGA or the
format of the bitstreams are not disclosed. However, engineer Clifford Wolf reverse-engineered Lattice's iCE40
FPGAs, publishing the internal configuration and enabling the development of free-licensed software for open
use. Clifford Wolf initiated the IceStorm project and released the first set of toolchains that allow for the
conversion from Verilog to Bitstream using solely open-source tools.
FPGAs that have undergone reverse engineering are referred to as open-source FPGAs. Communities of
open-source software development have also emerged, facilitating the design of various hardware using these
open-source FPGAs. To contribute to these communities and their development tools, this article presents the
creation of a block generator of random sequences with Gaussian distribution, developed within the
framework of the open-source tool Icestudio. The utilization of this block for the design of a noise generator
implemented in the open-source FPGA of the Alhambra II board is also presented.
This work is organized into four sections. Firstly, the development section addresses the theoretical aspects
and methodology. The methodology describes each of the necessary blocks to assemble the proposed
system. The results section discusses the simulation results and the tests conducted on the noise signal
generator. Finally, the conclusions section summarizes the findings.
II. DEVELOPMENT
Icestudio [1] is a visual editor for open-source FPGAs [2] that is built upon the set of tools developed by
IceStorm [3]. It performs a series of data conversions to obtain the bitstream sent to the FPGA [4], [5]. When
creating the graphical hardware design, the platform generates Verilog code. The Verilog file is then converted
to a .pcf file, which is used to build the bitstream file loaded onto the board to configure the FPGA. Icestudio
works in conjunction with Apio [6] for hardware development. Apio is a cross-platform open-source tool
written in Python, functional on Linux, macOS, and Windows. Apio provides a user-friendly command interface
to verify, simulate, synthesize, and load Verilog designs onto an open-source FPGA.
In this research project, the hardware development on the open-source Lattice iCE40XH4K FPGA [7], housed
in the Alhambra II board [8], [9], is carried out using this software tool [10]. The Alhambra II development
board is an open-source PCB accessible to everyone, allowing the implementation of digital circuit designs
using open-source tools like Icestudio. It is suitable for educational institutions as well.
Noise generators [11], [12] using FPGA technology [13] are designed based on applied mathematics in
probability and statistics, mainly focused on random number generation [14], [15]. This article presents an
appropriate method for designing noise generators on an FPGA, utilizing the generation of pseudo-random
numbers using linear feedback shift registers (LFSR) [16], [17], and applying the Central Limit Theorem [18] for
obtaining random signals with a normal or Gaussian distribution.
III. METHODOLOGY
A. Random sequence generator with Gaussian distribution.
A 12-bit LFSR counter was described in the hardware description language Verilog, as shown in Figure 1. The
number of states or samples produced by the 12-bit LFSR is 4,095 (2 12 -1). The sequence of the LFSR does
not include state 0 because this combination locks the sequence and prevents it from advancing due to XOR
feedback with logical zero inputs. On the left side of Figure 1, the parameters required for the configuration
and operation of the block are displayed. Each parameter is described below:
ISSN-E: 2542-3401, ISSN-P: 1316-4821
Universidad, Ciencia y Tecnología,
Vol. 27, Núm. 121, (pp. 64-73)
65
Cortez A. et al. Noise generator by free FPGA technology