Design and implementation of embedded FPU microinstruction control module

Publisher:HarmoniousSoulLatest update time:2012-03-20 Source: 微计算机信息 Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

1 Introduction

The design and research of high-performance, high-precision microprocessors (MPUs) suitable for national defense and civilian needs has become extremely important and urgent. In order to process a large amount of real data and consider calculation accuracy and real-time performance, it is necessary to separate a part of the MPU for floating-point operations. For example, the current high-end digital signal processing chips (DSPs) all contain an FPU, so the development of high-performance floating-point unit IP is of great significance [1].

The concept and principle of microprogramming was first proposed by MV Wilks, a professor at the Department of Mathematics at Cambridge University in 1951 [2]. However, in the following 15 years, the development of microprogramming technology was restricted by the problem of control memory. With the development of LSI and VLSI control memory, microprogramming has begun to play an important role in microcomputers.

The performance of microprogram controller is one of the key factors to improve processing speed. The research on microprogram controller in this paper is based on the design of 32-bit FPU of Microelectronics Center of Harbin Institute of Technology (Weihai). It adopts the method of microinstruction control and completes the design of related modules at gate level. The results after layout and routing show that the design is small in scale and high in speed, which is very suitable for embedded applications.

2 Structure and design of microprogram controller

The generation of control signals in a microprocessor is generally achieved by two methods: microprogram and state machine. Microprogram belongs to firmware. The microinstructions output by the microprogram controller are used to control the entire FPU operation [3]. A microprogram generally consists of two major parts: operation control and sequence control. The control part is used to manage and direct the operation of the FPU [4]. The sequence control part of the microprogram is used to determine the address of the next microinstruction. The microprogram controller has its own advantages, such as regularity, flexibility, and maintainability. The structure of the microprogram controller of this design is shown in Figure 1.

Figure 1 Microprogram controller


Figure 2 Microinstruction selection control [page]


The microprogram controller mainly consists of three parts: a micro-address generation module for generating the next microinstruction, a memory for storing microinstructions (this is a ROM) and a control bus for commanding the FPU to work. The first two parts are the main ones, which are introduced below:

2.1 Introduction to micro-address generation module

The main purpose of the micro-address generation module is to generate the address of the next micro-instruction. The address line width is 8 bits, and the next micro-address is generated by the following (as shown in Figure 2):

1. The ExcMiptr signal is used to select the entry address of the exception operation and control corresponding to various exceptions (including inaccurate result exception, overflow, underflow and invalid exception) generated during the execution of an FPU instruction.

2. The nextMiptr signal is used to select the address of the next microinstruction generated during the normal execution of an FPU instruction.

3. The RomEntry signal is used to select the entry address of different instructions according to the FPU instructions. This design has different control entry addresses for single-precision and double-precision addition, subtraction, multiplication, division, and multiplication-addition instructions.

4.RomMiptr signal is the default docking address of the micro address, that is, the default address output when reset and FPU is idle

5. The feedback signal is used to select the address for the jump microinstruction, such as the jump control for multiplication and addition and multiplication and subtraction instructions in this design.

As mentioned above, the control of these address signals all comes from the control bits of the microinstructions. The control of whether to generate a branch is shown in Figure 3.

Figure 3 Microinstruction branch control signal generation diagram


2.2 Microinstruction Storage Module

The storage module of this microinstruction controller has 8-bit address input and 64-bit data output for managing and controlling the entire FPU. The 64-bit microinstruction is the control signal used to control the entire system. Its function is similar to that of a state machine. In this design, the possible states in the data processing process are detected through the microinstruction [15:11], and then the state transition is performed according to different states. The main ones are listed in Table 1 below:


15-11

Conditional selection bits

14-11

Rom condition bit

10- 8

Feedback bit

7- 3

Feedback bit

2

Do not latch control bit

0-1

Microinstruction source control bit

Table 1 Microinstruction control bits


3. Module implementation and verification

The microprogram module adopts a top-down design method. All components are designed as IP (Intellectual Property) according to the modular concept, and the interface signal timing between modules is clear. At the same time, the logic control in the module is designed at the gate level to optimize the performance of the design. Using Synopsys' Design Compiler as a synthesis tool, using SMIC 0.18 micron process, the synthesized result clock frequency is 266MHz.

The system uses the hardware description language Verilog as the working language and uses Modelsim SE6.2 to complete the entire simulation process. The simulation results fully comply with the requirements of the IEEE754 standard [5] and can achieve single-precision and double-precision control. After the simulation is completed and verified by FPGA, it lays a solid foundation for future tape-out. [page]

Generally speaking, design verification methods include two categories: simulation methods and formal methods. This design adopts the simulation method. The simulation verification environment is shown in Figure 3. Using the assertion-based verification method, it is mainly divided into three parts: the stimulus part, the module to be tested, and the verification comparison module.


Figure 3 Simulation verification environment


Generally speaking, there are two methods for generating incentives: one is direct incentive generation; the other is random incentive generation. This design uses both methods. Random incentive generation (constrained random) is used for normal operations such as addition, subtraction, multiplication and division, while direct incentive is used for other corner cases, especially various abnormal situations. The auxiliary modules include exponential operation module, mantissa operation module and symbol operation module. The comparison result output module includes comparing the results specified by the design specification with the results output by the verification module.

4. Conclusion

The design of the microprogram controller in the 32-bit FPU has been verified by simulation and proved that its function can fully meet the control function of the FPU of the IEEE754 standard. In the design, methods such as multiple entry addresses are used to improve the control ability of the microprogram. In order to improve the performance of the circuit, the gate-level design method is used. The results after layout and routing show that the design is small in scale and high in speed, which is very suitable for embedded applications. This microprogram controller can be used in all floating-point processors that meet the IEEE754 standard, which improves the efficiency and reliability of the design and speeds up the design cycle.

The author's innovation: adopting microprogram control design method and gate-level design method, so the scale is small and the speed is fast. Through Modelsim simulation, it fully meets the application of floating-point processors that meet the IEEE754 standard.

References

[1] Li Liuxing, Zhou Guoxiang. A design of fast multiplier for SOC [J]. Microcomputer Information, 2007, 23, 4-2: 155-157.

[2] Yang Bo, Gao Deyuan. Design and implementation of microprogram controller [J]. Computer Engineering and Applications, 2001, 7: 27-29.

[3]Intel: intel82C288 Series Reference [M]. 1984.50-61.

[4]David A.Patterson, John L. Hennessy, Computer Organazaiton & Design[M], Morgan Kaufmann Publishers, inc,2002 316-324

[5] ANSI/IEEE Standard 754-1985: IEEE Standard for Binary Floating-Point Arithmetic[M]. Poscataway, NJ: IEEE Press, 1985.

Reference address:Design and implementation of embedded FPU microinstruction control module

Previous article:Design of embedded media player system based on Qt
Next article:Design and implementation of an embedded video recording system

Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号