report2.tex 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. \documentclass[a4paper,11pt]{article}
  2. \usepackage[top=1cm,bottom=2cm,left=1cm,right=1cm]{geometry}
  3. \usepackage[T1]{fontenc}
  4. \usepackage[utf8]{inputenc}
  5. \usepackage{lmodern}
  6. \usepackage{textgreek}
  7. \usepackage{amsmath}
  8. \usepackage{mathtools}
  9. \usepackage{graphicx}
  10. \usepackage{svg}
  11. \usepackage{pdflscape}
  12. \usepackage{tabularx}
  13. \usepackage{blindtext}
  14. \usepackage{hyperref}
  15. \usepackage{pgfgantt}
  16. \usepackage{colortbl}
  17. \usepackage{pdfpages}
  18. \usepackage{setspace}
  19. \setcounter{tocdepth}{3}
  20. \begin{document}
  21. \begin{titlepage}
  22. \newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
  23. \center
  24. \textsc{\Large University College London}\\[0.5cm]
  25. \textsc{\large Department of Electronic \& Electrical Engineering}\\[0.5cm]
  26. \HRule \\[0.4cm]
  27. \setstretch{1.5}
  28. { \huge \bfseries Project Progress Report No. 2}\\[0.4cm]
  29. \setstretch{1.0}
  30. \HRule \\[1.0cm]
  31. \Large \emph{Author:}\\
  32. Minduagas \textsc{Jarmolovicius}\\
  33. \href{mailto:zceemja@ucl.ac.uk}{zceemja@ucl.ac.uk}\\[0.5cm]
  34. \Large \emph{Supervisor:}\\
  35. Prof. Robert \textsc{Killey}\\
  36. \href{mailto:r.killey@ucl.ac.uk}{r.killey@ucl.ac.uk}
  37. \vfill
  38. {\large November 24, 2019}\\[2cm]
  39. \end{titlepage}
  40. %\maketitle
  41. %\tableofcontents
  42. \pagebreak
  43. \section{Progress}
  44. The following points have been done since last report:
  45. \begin{description}
  46. \item[$\bullet$] Upgraded assembler to support more complex operations, also changed syntax to comply with NASM;
  47. \item[$\bullet$] Upgraded automatisation using MakeFile;
  48. \item[$\bullet$] Implemented instruction memory using FPGA's M9K Memory;
  49. \item[$\bullet$] Have functional communication block, see Table \ref{table:com_instr};
  50. \item[$\bullet$] Implemented most of the instructions, see Table \ref{table:risc_instr};
  51. \end{description}
  52. \begin{table}[h!]
  53. \centering
  54. \arrayrulecolor{black}
  55. \begin{tabular}{| l | p{8cm} | l | l | } \hline
  56. \rowcolor[rgb]{0.82,0.82,0.82}
  57. Address & Function & Send & Return \\\hline
  58. \arrayrulecolor[rgb]{0.82,0.82,0.82}
  59. 0x04 & Read UART0 flags & - & UART0 flags \\\hline
  60. 0x05 & Transmit to UART0 & TX byte & UART0 flags \\\hline
  61. 0x06 & Set DE0-Nano board LEDs & LED byte & - \\\hline
  62. 0x07 & Read DE0-Nano DIP switches & - & Lower DIP nibble \\\hline
  63. \arrayrulecolor{black}\hline
  64. \end{tabular}
  65. \caption{Addresses and functions for communication block}
  66. \label{table:com_instr}
  67. \end{table}
  68. Project schedule as Grantt chart has been updated in the next page in table \ref{table:time}.
  69. \begin{table}[h!]
  70. \centering
  71. \arrayrulecolor{black}
  72. \begin{tabular}{| l | p{13cm} | c |} \hline
  73. \rowcolor[rgb]{0.82,0.82,0.82}
  74. Instr. & Description & Completed \\\hline
  75. \rowcolor[rgb]{0.7,0.7,1}
  76. \multicolumn{3}{|c|}{\textit{2 register instructions}} \\\hline
  77. \arrayrulecolor[rgb]{0.82,0.82,0.82}
  78. MOVE & Copy intimidate or register & x \\\hline
  79. ADD & Arithmetical addition & x \\
  80. SUB & Arithmetical subtraction & x \\
  81. AND & Logical AND & x \\
  82. OR & Logical OR & x \\
  83. XOR & Logical XOR & x \\
  84. MUL & Arithmetical multiplication & x \\
  85. DIV & Arithmetical division (inc. modulus) & x \\
  86. BR & Branch on registers equal & \\
  87. \rowcolor[rgb]{0.7,0.7,1}\arrayrulecolor{black}\hline
  88. \multicolumn{3}{|c|}{\textit{1 register instructions}} \\\hline
  89. \arrayrulecolor[rgb]{0.82,0.82,0.82}
  90. SLL & Shift left logical & \\
  91. SRL & Shift right logical & \\
  92. SRA & Shift right arithmetical & \\
  93. SRAS & Shift right arithmetical signed & \\\hline
  94. LWHI & Load word (high byte) & x \\
  95. SWHI & Store word (high byte, reg. only) & x \\
  96. LWLO & Load word (low byte) & x \\
  97. SWLO & Store word (low byte, stores high byte reg.) & x \\\hline
  98. INC & Increase by 1 & x \\
  99. DEC & Decrease by 1 & x \\
  100. GETAH & Get ALU high byte reg. (only for MUL \& DIV) & x \\
  101. GETIF & Get interrupt flags & \\\hline
  102. PUSH & Push to stack & x \\
  103. POP & Pop from stack & x \\
  104. COM & Send/Receive to/from com. block & x \\
  105. SETI & Set immediate from register & \\\hline
  106. BEQ & Branch on equal & x \\
  107. BGT & Branch on greater than & x \\
  108. BGE & Branch on greater equal than & x \\
  109. BZ & Branch on zero & x \\
  110. \rowcolor[rgb]{0.7,0.7,1}\arrayrulecolor{black}\hline
  111. \multicolumn{3}{|c|}{\textit{0 register instructions}} \\\hline
  112. \arrayrulecolor[rgb]{0.82,0.82,0.82}
  113. CALL & Call function, put return to stack & x \\
  114. RET & Return from function & x \\
  115. JUMP & Jump to address & x \\
  116. RETI & Return from interrupt & \\
  117. CLC & Clear ALU carry-in & \\
  118. SETC & Set ALU carry-in & \\
  119. CLS & Clear ALU sign & \\
  120. SETS & Set ALU sign & \\
  121. SSETS & Enable ALU sign & \\
  122. CLN & Clear ALU negative & \\
  123. SETN & Set ALU negative & \\
  124. SSETN & Enable ALU negative & \\
  125. RJUMP & Relative jump & \\
  126. RBWI & Replace ALU src. B with immediate & \\
  127. \arrayrulecolor{black}\hline
  128. \end{tabular}
  129. \caption{Instruction set for RISC processor}
  130. \label{table:risc_instr}
  131. \end{table}
  132. \section{Difficulties encountered}
  133. Instruction memory (ROM) has been replaced with M9K memory instead of LC (logic cell), however, as this memory is clocked it caused further problems with program counter timings.
  134. NASM-like assembler can have multiple very useful functions such as pre-compiler, macros, imports, db instruction (stores strings) etc. It is difficult to implement all these advanced functions.
  135. Due to scale of project, byte order has been mixed (internally processor operates at little-endian, however addresses in instructions are written as big-endian), this needs to be sorted out.
  136. \section{Failure Risk Assessment}
  137. There are no updates on failure risk assessment. As before, the most dominant failure risk is running out of time project is behind schedule.
  138. See table \ref{table:time} for schedule. In 2 weeks is scheduled to start consider OISC architecture, however, the RISC processor is still far from completion. Benchmark development might need to extended to be completed during winter holidays. Higher level RISC compiler might be replaced by advanced functions in NASM-like compiler.
  139. \section{Updated Safety Risk Assessment}
  140. There are no updates on safety risk assessment.
  141. \section{Help and Advice Needed}
  142. At this state no help is needed, and any issues and advices are sorted out and discussed in weekly supervisor meetings.
  143. \newpage
  144. \begin{landscape}
  145. \section{Updated Schedule}
  146. \begin{table}[h]
  147. \centering
  148. \begin{ganttchart}[
  149. y unit title=0.4cm,
  150. y unit chart=0.5cm,
  151. x unit=1.1mm,
  152. hgrid,
  153. today=2019-11-24,
  154. today label node/.append style={below=12pt},
  155. today label font=\itshape\color{blue},
  156. today rule/.style={draw=blue, ultra thick},
  157. title height=1,
  158. bar/.append style={fill=blue!50},
  159. bar incomplete/.append style={fill=gray!50},
  160. progress label text={$\displaystyle{#1\%}$},
  161. time slot format=isodate
  162. ]{2019-10-01}{2020-03-31}
  163. \gantttitlecalendar{year, month=shortname} \\
  164. \gantttitle{40}{6}
  165. \gantttitlelist{41,...,52}{7}
  166. \gantttitlelist{1,...,13}{7}
  167. \gantttitle{}{2} \\
  168. \ganttbar[progress=100]{RISC implementation}{2019-10-01}{2019-10-27}\\
  169. \ganttbar[progress=70]{RISC Optimisations}{2019-10-27}{2019-11-25}\\
  170. \ganttbar[progress=100]{UART and I/O}{2019-10-21}{2019-10-27}
  171. \ganttbar[progress=50]{}{2019-11-25}{2019-12-08} \\
  172. \ganttbar[progress=90]{RISC Assembler}{2019-10-14}{2019-11-11}\\
  173. \ganttbar[progress=10]{RISC Compiler}{2019-11-11}{2019-12-13}\\
  174. \ganttbar[progress=10]{Developing benchmark}{2019-11-11}{2019-12-13}
  175. \ganttbar[progress=0]{}{2020-02-23}{2020-03-07} \\
  176. \ganttbar[progress=0]{OISC Implementation}{2019-12-02}{2019-12-13}
  177. \ganttbar[progress=0]{}{2020-01-13}{2020-02-02}\\
  178. \ganttbar[progress=0]{OISC Optimisations}{2020-02-02}{2020-02-23}\\
  179. \ganttbar[progress=0]{OISC Assembler}{2020-01-20}{2020-02-09}\\
  180. \ganttbar[progress=0]{OISC Compiler}{2020-02-09}{2020-03-01}\\
  181. \ganttmilestone{Project Proposal finalised}{2019-10-14}\\
  182. \ganttmilestone{Progress Report \#1}{2019-11-04}\\
  183. \ganttmilestone{Progress Report \#2}{2019-11-25}\\
  184. \ganttmilestone{December Interim Report}{2019-12-09}\\
  185. \ganttmilestone{Progress Report \#3}{2020-01-20}\\
  186. \ganttmilestone{Progress Report \#4}{2020-02-14}\\
  187. \ganttmilestone{Progress Report \#5}{2020-03-02}\\
  188. \ganttmilestone{Poster Presentation}{2020-03-18}\\
  189. \ganttmilestone{Final Report}{2020-03-30}\\
  190. \ganttvrule{Reading Week}{2019-11-03}
  191. \ganttvrule{}{2019-11-10}
  192. \ganttvrule[vrule label node/.append style={anchor=north west}]{Holidays}{2019-12-13}
  193. \ganttvrule{}{2020-01-12}
  194. \end{ganttchart}
  195. \caption{Updated project schedule Grantt chart}
  196. \label{table:time}
  197. \end{table}
  198. \end{landscape}
  199. \end{document}