aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojciech Kosior <kwojtus@protonmail.com>2020-04-06 06:44:28 +0200
committerWojciech Kosior <kwojtus@protonmail.com>2020-04-06 06:44:28 +0200
commitdccc3921c1780f1a957a04cda2f675b9b346f6d9 (patch)
tree34ca735ed4b9cecf19941f13580bc5c78b28f26f
parente956f85190bbb6b8e82d80f1f06ac586fae4f780 (diff)
downloadAGH-engineering-thesis-dccc3921c1780f1a957a04cda2f675b9b346f6d9.tar.gz
AGH-engineering-thesis-dccc3921c1780f1a957a04cda2f675b9b346f6d9.zip
don't dtore documentation in the repo
-rw-r--r--doc/bibliography.bib5
-rw-r--r--doc/thesis.tex140
2 files changed, 0 insertions, 145 deletions
diff --git a/doc/bibliography.bib b/doc/bibliography.bib
deleted file mode 100644
index 50da3e2..0000000
--- a/doc/bibliography.bib
+++ /dev/null
@@ -1,5 +0,0 @@
-@Misc{olimex_repo,
- author = {OLIMEX Ltd.},
- title = {iCE40HX8K development board with SRAM and bus for fast ADC, DAC, IOs},
- howpublished = {\url{https://github.com/OLIMEX/iCE40HX8K-EVB}}
-}
diff --git a/doc/thesis.tex b/doc/thesis.tex
deleted file mode 100644
index ffee297..0000000
--- a/doc/thesis.tex
+++ /dev/null
@@ -1,140 +0,0 @@
-% \documentclass[polish,12pt]{aghthesis}
-\documentclass[english,12pt]{aghthesis}% dla pracy w jêzyku angielskim. Uwaga, w przypadku strony tytu³owej zmiana jêzyka dotyczy tylko kolejno¶ci wersji jêzykowych tytu³u pracy.
-
-% Szablon przystosowany jest do druku dwustronnego.
-
-\usepackage[latin2]{inputenc}
-\usepackage{url}
-
-\author{Wojciech Kosior}
-
-\titlePL{Stanowisko laboratoryjne do ewaluacji wykonywania kodu WebAssembly w uk³adzie logiki programowalnej}
-\titleEN{Laboratory station based on programmable logic device for WebAssembly execution evaluation}
-
-\fieldofstudy{Informatyka}
-
-\supervisor{dr in¿.\ Robert Brzoza-Woch}
-
-\date{2020}
-
-
-\begin{document}
-
-\maketitle
-
-\section{\SectionTitleProjectVision}
-\label{sec:cel-wizja}
-
-\subsection{General information}
-The goal of this thesis is creation of a laboratory station for execution of WebAssembly
-on an FPGA device. The project's codename is WMF - WebAssembly Machine for FPGA.
-WebAssembly or Wasm standard defines a bytecode format for executable programs,
-as well as it's text representation. The goal of the bytecode is to enable
-efficient interpretation and keep the size of the binary small.
-Although it's been created mainly for use on web pages,
-it is suited for other environments as well, including embedded ones.
-Programming languages, even those with manual memory management
-and pointer arithmetics, can be compiled to Wasm bytecode.
-Hence, a standard-conforming WebAssembly interpreter is capable of running
-code written in any of the languages, for which a compiler exists. This currently
-includes C, C++, C\#, Rust and others.
-Wasm bytecode runs on a virtual stack machine. Most existing environments
-either interpret it directly or use JiT compilation.
-
-
-\subsection{Problem}
-WebAsm interpretation could possibly be made faster with hardware designed specifically
-for this task. Such hardware would also benefit from already existing tools
-for generating and working with the bytecode.
-In terms of this thesis a Wasm machine is going to be implemented in a hardware
-description language. The product is going to be used to execute WebAssembly binary
-on an FPGA board.
-Other projects attempting that have been started (\url{https://github.com/lastmjs/wasm-metal},
-\url{https://github.com/piranna/wasmachine}), but stalled in an early stage.
-
-\subsection{Concept}
-The designed Wasm machine is going to be a stack machine. It's distinguishable parts
-will be control unit, arithmetic logic unit, peripherals and possibly also stack
-(which, depending on design decision, can also reside fully in RAM) and floating-point unit.
-The machine shall work together with random-access memory residing on the development board.
-It shall communicate with the outside through peripherals (see below).
-
-\subsection{Functional requirements}
-The system shall consist of a Wasm machine design in a hardware description language,
-as well as documentation and example WebAssembly programs for execution.
-Instructions should be provided how to synthesize the design and load it to the FPGA
-device along with the example code.
-The environment should execute WebAssembly as specified in Minimum Viable Product.
-It should also enable communication of the executed program with other devices
-using UART or USB. Ability for Wasm code to use a VGA display is desired, but not
-mandatory.
-
-\subsection{Non-functional requirements}
-In programmable logic projects test benches play a very important role.
-The risk of having a failing part in the design has to be minimized
-in case of silicon realization, where each chip fabrication brings
-additional costs. The design created as part of this thesis shall be
-testable. The test suite would be run with the use of a simulator,
-as it doesn't carry the risk of design's dependence on hardware-specific
-behaviour.
-
-\subsection{Technologies}
-The iCE40HX8K-EVB FPGA development board has been chosen due to it's low cost and
-support by free software toolchain. While programmable logic device's small size
-may cause some limits, this will also force the Wasm wachine to be implemented
-size-efficiently.
-Verilog hardware description language is going to be used for synthesizable code as
-well as for testbenches. Verilog is the HDL used with the toolchain
-and also the one thesis' author knows the most. Other advantage of using verilog is
-it's wide support and simplicity.
-Yosys, arachne-pnr/nextpnr and icestorm are the development tools used for
-verilog synthesis, place\&route and bitstream generation for the chosen device.
-The tols are under active development.
-A simulator for test benches is also needed for the project. Icarus Verilog Simulator,
-which is free software can be used for that.
-Some means of communication with the Wasm machine on the FPGA are required.
-One possibility is to use the include a verilog UART module, which could be operated by
-the executing WebAssembly program to communicate with a computer. UART is a simple
-device the author is already common with. If data transfers with higher speed are
-desired, a USB peripheral could possibly be written at the cost of bigger effort and
-higher complexity. As USB ports are common, it could be used to communicate
-the device with a wide range of computers, despite lack of USB certification.
-VGA output could also be generated with programmable logic to enable executed
-code to use a video display.
-
-\subsection{Risks}
-One high risk is that the Wasm machine will be too complex to fit on the chosen FPGA chip.
-If this happens, the number of gates resulting from the HDL code will have to
-be reduced. One solution would be to implement some instructions in terms of
-microcode. Another one would be to resign from supporting some of the wasm features.
-Another, medium risk, is that the WebAssembly bytecode might prove difficult to
-interpret directly by the hardware, especially as it was designed for small binary size.
-In such case, some pre-evaluated form of the bytecode could be used instead.
-This step of pre-evaluation could be performed by software on a computer
-before loading the code to the board or on the device itself by some kind of bootloader.
-In the unlikely situation of some other serious problems arising, it should
-be also possible to realize a different stack or register machine in programmable
-logic instead and execute a software Wasm interpreter on it. This approach, however,
-wouldn't have the main advantage of improving speed.
-
-\section{\SectionTitleScope}
-\label{sec:zakres-funkcjonalnosci}
-\emph{TODO}
-
-\section{\SectionTitleRealizationAspects}
-\label{sec:wybrane-aspekty-realizacji}
-\emph{TODO}
-
-\section{\SectionTitleWorkOrganization}
-\label{sec:organizacja-pracy}
-\emph{TODO}
-
-\section{\SectionTitleResults}
-\label{sec:wyniki-projektu}
-\emph{TODO}
-
-\nocite{olimex_repo}
-
-\bibliography{bibliography}
-
-\end{document}