⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paper.tex

📁 DLX CPU VHDL CODE UNIVERSITY
💻 TEX
字号:
% By Michael Schulte and James Stine in Jan, 1996. \documentstyle[12pt]{article}% \textheight 25cm% \topmargin -.5cm% \textwidth 18cm% \oddsidemargin -1cm% \evensidemargin -1cm\textheight 23.5cm\textwidth 17cm\topmargin 0cm\oddsidemargin 0cm\begin{document}\include{boxedeps}\SetRokickiEPSFSpecial\HideDisplacementBoxes\title{A Five Stage Multi-Cycle DLX RISC Microprocessor Design In VHDL}\author{Louis P. Marquette\\111 Sebring Rd\\Dickson City, PA 18519, USA\\Louis@starrtechnologies.com\\http://www.starrtechnologies.com/louis/}\date{}\maketitle\vspace{-1cm}\begin{abstract}\end{abstract}\section{Introduction}	The DLX Microprocessor is a microprocessor in theory. To myknowledge it has never been put onto silicon, at least for comercialsale. It's main purpose is to study, teach, and practice withmicroprocessor design. The Instruction set architecture is verysimmilar to MIPS, although they have some differences. It is a load/storearchitecture and is RISC. Most instructions require 5 clock cycles tocomplete; however, jumps need only 3. Floating point timing is notaccurate because of the fact that these instructions also take only 5cycles to fully complete. \section{Accomplishments} The nature of my project confined most of my accomplishments to VHDL, although they did extend into other areas such as c++, since utilities were needed to help me with some problems that arose. Some of the more formidable accomplisments in this design would be: 	The ability of the 'processor' to use a file on the hard drive as a  	 program ROM (this allowed for easy program modifications)	Designing the processor to be multi-cycle ( this made going back and using 	 Micro code easy ) 	Convering the processor to let it use Micro code that is	 loaded from a data file ( This will hopefully make Piplining 	 on the processor easy, should anyone ever attempt it. )	Although I used a public domain floating point adder and          multiplyer, the concepts of floating point addition and	 multiplication needed to be learned to make the necessary 	 changes so that they could handle double precision numbers 	 and rounding modes.	The ploating point divider was a project in itself besause of	 the fact that I built it from scratch. Unlike the floating 	 point adder and multiplyer, which are procedurally designed,         I created the divider as a structural entity. It, like the  	 other floating point units, is capable of both single and 	 double precision as well as using the four rounding modes. 	\section{Experience}	 During the time that I spent working on this project, I learned not only from my work, but also from the work of others and otherproblems that arose in our lab that needed to be solved. Theseinclude the basics of interval computations, some hard driveconsidererations when installing linux, how to dissasemble a mammothpiece of 40 year old test equipment, and too many computers in oneelectrical outlet is a bad thing. The work that I did, of course,brought msny more experiences such as learning more about unix,VHDL and how to use it, IEEE 754 floating point numbers, floating point rounding modes, unions in c++, and about many more small pieces of information that, when viewed individually seem almostinconsequential, but when viewed as a whole are a tramendous learningexperience.\subsection{Unix experience}	 Basicly, my knowledge of Unix was fairly limited before this project, but because of the consant use of it, I have slowly developed a firm working knowledge of it. Some of the more interesting learingexperiences from it included: not knowing that files could have a'group' associated with it and only members of the group could accessit, realizing that there is no command to do a 'cp *.*  somewhereelse'althought it would be nice, programs compile faster if your source code is on a drive physically in your machine and not somewhereaccross campus. I have also become familiar with utilities such asftp and sendmail. \subsection{Netscape experience}	Although I have spent much time using this browser on my homecomputer, there were a few diferences that I needed to becomefamilliar with to be able to use it fully. For example, forget abouta shockwave plugin for Unix, and saving files can be somewhat tricky.\subsection{Emacs experience}	Why do people use a few hundred dollar word processor made by a large corporation when there is a more functional editor out there forfree?  One of the mysteries of life I guess. Emacs seems to have moreutilities and functionality built in than any word processor I'veever used before. Unfortunatly, it is not too user frienly unless youknow the methods by which to invoke all those nifty utilities.\subsection{VHDL experience}	Needless to say, VHDL is what I have gained to most experiencdin. It was what the entire project revolved around. There were a fewbooks that I used as references, but I also used a CD-ROM tutorialthat came with some VHDL package used at my university. This CD-ROMwas probably the most informative of group, but you must consider thatI used it first when I knew the least.   	VHDL seems to have many little quirks to it that have never beenimproved on. This is not to say that it's designers did not thinkahead of themselfs, but there seems to be many context situationswhere more code is needed then should be necessary. To be able tocompile my design I needed to become familiar with the Make utilityand therefor Makefile format. 	\subsection{C++ experience}	While testing the functionality and accuracy of my design, I neededand easy way to create Hexadecmal representations of floating pointnumbers. to place in memory for use my the processor design. Ratherthen take a minute or so each to do many of them, I wrote a c++program to do this grunt-work for me. I also made a program that gaveme the sum, difference, product, and division value of two numbers ineach of the four rounding modes. This program had the help ofassembler routines that set the rounding mode, these were written bya current graduate student at Lehigh University, James Stein.\subsection{Debuging experience}	Because of my being a novice at VHDL, I spent an extaordinaryamount of time debugging my code. There were times when I used thewrong data types, or confused the names of variables, made infiniteloops, and otherwise did something that was a stupid mistake.\section{Deviations from DLX Definition}	There are some aspects of this design that are not consistantwith the DLX definition. The opcodes for loading and storing bytes andhalf words was not seen as necessary and not implimented. The singlebit floating point status register was not sufficient for roundingmode information and special case result codes, it was extended to 32bits and uses the same format as in the MIPS architecture. Ther was anopcode added to load the floating point status register with aregister. This was needed to set the rounding mode.\section{Future Enhancements}	There can probably be many improvements made on thisprocessor, since it is not very complex currently. One thing that Ihad planned to do, but did not have the time for was to make itpipelined. This would probably not be very hard since there are someinternmediate register buffers in the datapath already, and it ismulti-cycled and uses micro-code. I do not forsee and structuralhazards; althought, I am sure there would me plenty of othere hazardsto work around. 	Pipelining the FP units or making their timing more accuratemight also be a improvement worth trying. \section{Conclusions} 	VHDL seems to be a very versitile language, especially because itallows you to describe an entity either structurally, behaviorly, orany combination of two. 	Microprocessor design is much less tedious and much easier when donevisually then when done in a text based language such as VHDL. I haveused software called Max Plus + to design a simpler 8 bitmicroprocessor for a class and the work seemed to go much faster andit was easier to see where everything was headed because I have an actualpicture of my design infront of me rather then text which I had to interprit. However, VHDL allows for not only the structural type ofdesigns, which would be described by a picture, but by procedural,which are more powerful and complex but cannot be turned into a picture. 	I quickly learned that sometimes there were errors that theVHDL compiler did not recognise and somehow got around, but that thesimulator very nicly pointed out for me.\bibliography{paper}\bibliographystyle{ieeetr}\end{document}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -