This document provides an overview of Verilog, a hardware description language used to model digital circuits. It describes the different design styles and abstraction levels in Verilog, including behavioral, register-transfer, and gate levels. It also discusses gate and switch delays in Verilog, specifically rise and fall delays. The document is part of a larger report on a weighted priority arbiter circuit implemented in Verilog.
Download as DOCX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
360 views
Project Arbiter
This document provides an overview of Verilog, a hardware description language used to model digital circuits. It describes the different design styles and abstraction levels in Verilog, including behavioral, register-transfer, and gate levels. It also discusses gate and switch delays in Verilog, specifically rise and fall delays. The document is part of a larger report on a weighted priority arbiter circuit implemented in Verilog.
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 29
Weighted Priority Arbiter
Global Academy of Technology Page 1
DECLARATION
We hereby declare that the project entitled WEIGHTED PRIORITY ARBITER submitted in partial fulfillment of the requirements for the award of degree of Bachelor of Technology in Electronics and Communication Engineering. This dissertation is our original work and the project has not formed the basis for the award of any degree, associate ship, fellowship or any other similar titles and no part of it has been published or sent for the publication at the time of submission.
PARAAG A MEGHARAJ (1GA11EC054)
Weighted Priority Arbiter
Global Academy of Technology Page 2
ACKNOWLEDGEMENT
We wish to take this opportunity to express our deep gratitude to all those who helped, encouraged, motivated and have extended their cooperation in various ways during our project work. It is a pleasure to acknowledgement the help of all those individuals who were responsible for foreseeing the successful completion of the project. We would like to thank Mr. L. VASUDEVA MURTHY (Head, CED) and express our gratitude with great admiration and respect to our project guide Mr. SOURABH SHUKLA, Mr. GAUTHAM AND Ms. Y LAKSHMI DEEPTHI for their valuable advice and help throughout the development of this project by providing with the required information without whose guidance, cooperation and encouragement, this project couldnt have been materialized. Last but not the least; we would like to thank the entire respondents for extending their help in all circumstances.
ORGANISATION PROFILE ECIL was setup under the department of Atomic Energy in the year 1967 with a view to generate a strong indigenous capability in the field of professional grade electronic. The initial accent was on self-reliance and ECIL was engaged in the Design Development Manufacture and Marketing of several products emphasis on three technology lines viz. Computers, control systems and communications. ECIL thus evolved as a multi-product company serving multiple sectors of Indian economy with emphasis on import of country substitution and development of products and services that are of economic and strategic significance to the country. Electronics Corporation of India Limited (ECIL) entered into collaboration with OSI Systems Inc. (www.osi-systems.com) and set up a joint venture "ECIL_RAPSICAN LIMITED". This Joint Venture manufacture the equipments manufactured by RAPSICAN, U.K, and U.S.A with the same state of art Technology, Requisite Technology is supplied by RAPSICAN and the final product is manufactured at ECIL facility. Recognizing the need for generating quality IT professionals and to meet the growing demand of IT industry, a separate division namely CED has been established to impart quality and professional IT training under the brand name of ECIT. ECIT, the prestigious offshoot of ECIL is an emerging winner and is at the fore front of IT education in the country.
Mission ECILs mission is to consolidate its status as a valued national asset in the area of strategic electronics with specific focus on Atomic Energy, Defense, Security and such critical sectors of strategic national importance.
Weighted Priority Arbiter
Global Academy of Technology Page 5
Objectives To continue services to the countrys needs for the peaceful uses Atomic Energy. Special and Strategic requirements of Defence and Space, Electronics Security System and Support for Civil aviation sector. To establish newer Technology products such as Container Scanning Systems and Explosive Detectors. To re-engineer the company to become nationally and internationally competitive by paying particular attention to delivery, cost and quality in all its activities. To explore new avenues of business and work for growth in strategic sectors in addition to working realizing technological solutions for the benefit of society in areas like Agriculture, Education, Health, Power, Transportation, Food, Disaster Management etc.
Divisions The Company is organized into divisions serving various sectors, national and Commercial Importance. They are Divisions serving nuclear sector like Control & Automation Division (CAD), Instruments & Systems Division (ISD), Divisions Serving defence sector like Communications Division (CND), Antenna Products Division (APD), Servo Systems Division (SSD) etc., Divisions handling Commercial Products are Telecom Division (TCD), Customer Support Division (CSD), Computer Education Division (CED).
Exports ECIL is currently operating in major business EXPORT segments like Instruments and systems design, Industrial/Nuclear, Servo Systems, Antenna Products, Communication, Control and Automation and several other components.
Weighted Priority Arbiter
Global Academy of Technology Page 6
Services The company played a very significant role in the training and growth of high calibre technical and managerial manpower especially in the fields of Computers and Information Technology. Though the initial thrust was on meeting the Control & Instrumentation requirements of the Nuclear Power Program, the expanded scope of self-reliance pursued by ECIL enabled the company to develop various products to cater to the needs of Defense, Civil Aviation, Information & Broadcasting, Tele communications, etc.
Weighted Priority Arbiter
Global Academy of Technology Page 7
VERILOG Verilog is a hardware description language (HDL). HDL is used to describe a digital system for example, a network switch, a microprocessor or a memory or simple flip flop. Verilog is case sensitive. All verilog keywords are lower case. Identifiers are name used to given an object, such as a register or a function or a module, a name so that it can reference from other places in a description. 2.1. Design Styles . Bottom up Design . Top down Design 2.2. Abstraction Level of Verilog . Behavioral level . Register Transfer level . Gate level 2.2.1. Behavioral level The level describes a system by concurrent algorithms (Behavioral). Each algorithm itself sequential, that means it consists of instructions that executed one after the other. Functions, tasks, always blocks are the main elements. 2.2.2 Register Transfer level Designs using the register transfer level specify the characteristics of a circuit by operations and the transfer of data b/w registers. Modern definition of RTL code is any code that is synthesizable is called RTL code. RTL design contains exact timing possibility, operations are scheduled to occur at certain times. 2.2.3 Gate level Within the logic level the characteristics of a system are described by logical links and their timing properties. All signals are discrete signal. They can only have definite logical values (0,1,X,Z). The usable operation are predefined logic primitives (AND, OR, NOT). Using gate level modeling might not be a good idea for any level of logic design. Gate level code is generated by tools like synthesis tools and Weighted Priority Arbiter
Global Academy of Technology Page 8
this net list is used for gate level simulation and for backend. Verilog has built in primitives like gates, transmission gates and switches. Gates have one scalar O/P and multiple scalar I/P. The 1 st terminal in the list of gate terminals is an O/P and other terminals are I/P. transmission gates are bi directional and can be resistive or non resistive. Transmission gate tran and rtran are permanently on and do not have a control line. Tran used to interface two wire with separate drives and rtran can be used to weaken signals. Resistive devices reduce the signal strength which appears on the output by one level. All the switches only pass signals from source to drain, incorrect wiring of the devices will result in high impedance output. 2.3. Gate and Switch delays 2.3.1. Rise delays Rise delay is associated with a gate output transition to 1 from another value (0, X, Z). 2.3.2. Fall delays The fall delay is associated with a gate O/P transition to 1, X, Z from another value. 2.3.3. Turn off delays Gate output transition to Z from another value (0, 1, X). 2.3.4. Minimal delays Minimum delay value that the gate is expected to have. 2.3.5. Typical delays Typical delay value that the gate is expected to have. 2.3.6. Maximum delays Maximum delay value that the gate is expected to have. Verilog has built in primitives like gates, transmission gates and switches. This is rather small number of primitives, if we need more complex primitives, then verilog provides UDP or simply user defend primitives. By using UDP we can model Combinational logic and sequential logic. 2.4. Identifiers Identifiers must start begin with an alphabetic character or the underscore character (_). Identifiers may contain (a z, A Z, _ , $). Identifier can be long up to 1024 character. 2.5. Data Types 2.5.1. Nets Weighted Priority Arbiter
Global Academy of Technology Page 9
Represents structural connections between components.
2.5.2. Registers Represent variable used to store data. 2.5.3. Register data types Register store the last value assigned to them until another assignment statement changes their value. Register represent data storage constructs. You can create arrays of register called memories. Register data types are used as variables in procedural blocks. A register data type is required if a signal is assigned a value with in a procedural block. Procedural blocks begin with keyword initial and always. reg: unsigned variable. integer: signal variable 32 bits. time: unsigned integer 64 bits. Real: Double precision floating point variable. 2.5.4. String A string is a sequence of characters enclosed by double quotes and all contained on signal line. One eight bit ASCII value representing one character. No extra bits are required to hold a termination character. \n New line character. \t Tab character. \\ Back slash (\) character. \ Double quote () character. \ddd A character specified in 1 3 octal digits. %% Percent (%) character. 2.5.5. Operators 2.5.5.1. Logical Operators ! (NOT), && (AND), || (OR). 2.5.5.2. Bit wise Operators Weighted Priority Arbiter
2.5.5.3. Reduction Operators & (AND), ~& (NAND), | (OR), ~| (NOR), ^~ or ~^ (XNOR), ^ (XOR). 2.5.5.4. Shift Operators << (Left Shift), >> (Right Shift). The left operand is shifted by the number of bit positions given by the right operand. The vacated bit positions are filled with zeroes. 2.5.5.5 Concatenation Operators {}. 2.5.5.6. Replication Operators {{}}. 2.5.5.7. Conditional Operators Cond_expr ? True_expr : False_expr. 2.5.6. Procedural Blocks: Two type of procedural blocks in verilog. 2.5.6.1: Initial: Initial blocks execute only once at time zero. 2.5.6.2: Always: Always blocks loop to execute over and over again, in other words as name means, it executes always. Always blocks waits for the event, here positive edge of clock, where as initial block without waiting just executed all the statements within begin and end statement. If a procedure block contain more than one statement, those statement must be enclosed within: a) Sequential begin end Block. b) Parallel Fork join Block. 2.6. Blocking Assignment: Blocking assignment are executed in the order they are coded, hence they are sequential. Since they block the execution of next statement, till current statement is executed, they are called blocking assignments. Weighted Priority Arbiter
Global Academy of Technology Page 11
Symbol ( = )
2.7 Non Blocking Assignment: Non Blocking assignment are executed in parallel. Since the execution of next statement is not blocked due to execution of current statement, they are called non blocking statement. Symbol (<=) 2.8. Conditional Statement if else: When more than one statement needs to be executed for a if conditions, then we need to use begin and end. We normally do not include reset checking in priority as this does not fall in the combo logic input to the flip flop. When we need priority logic, we use next if else statements. On other end if we do not to implement priority logic, knowing that only that only one I/P is active at a time. 2.9. Case Statement: The case statement compares a expression to a series of cases and executes the statement or statement group associated with the first matching case. Case statement supports single or multiple statements. Group multiple statements using begin and end keywords. 2.10. Loop Statements: 2.10.1 Forever: Forever statement executes continually, the loop never ends. Narmally we use forever statement in initial blocks. Syntax : forever <Statement>. If no timing construct is present in the forever statement, simulation could hang. 2.10.2 Repeat: The repeat loop executes statement fixed <number> of times. Syntax: repeat <Number> <Statement>. 2.10.3 While: The while loop executes as long as an evaluates as true. Syntax : while (). 2.10.4 For: Syntax: for (initial assignment; expression; step assignment); Weighted Priority Arbiter
Global Academy of Technology Page 12
Note : i ++ does not have in verilog. i = i + 1 in verilog.
2.11. Continuous Assignment statements: Continuous assignment statements drive nets. They represent structural connections. a) They are used for modeling tri state buffers. b) They can be used for modeling combinational logic. c) They are outside the procedural blocks. d) The continuous assign overrides any procedural assignments. e) The left hand side of a continuous assignment must be net data types. Syntax: Assign (strength, strength) # (delay) net = expression; 2.11.1 Propagation Delay: Continuous assignments may be have a delay specified, only one delay for all transitions may be specified. Syntax: assign #(A minimum : Typical : maximum delay range may be specified) To model sequential logic, a procedure block must be sensitive to positive edge or negative edge of clock. Model asynchronous reset, procedure block must be sensitive to both clock and reset. All the assignments to sequential logic should be made through non blocking assignments. Some time it tempting to have multiple edge triggering variables in the sensitive list, this is fine for simulation, but for synthesis this does not make sense. Delays the execution of a procedural statement by specific simulation time. Syntax: # <Time> <Statement>. Delays the execution of the next statement until the specified transition on a signal. {edge sensitive event controls} Syntax: @(<Posedge > | <Negedge> signal) <statement>. Level Sensitive even controls (Wait statements) delay execution of the next statement until the evaluates as true. Syntax : Wait(). Intra assignment timing controls evaluate the right side expression right always and assigns the result after the delay or event control. In non intra assignment controls right side expression evaluated after delay or event control. Weighted Priority Arbiter
Global Academy of Technology Page 13
Syntax: a = # 10 2.{intra assignment}. Modeling combo logic with continuous assignments, whenever any signal changes on the right hand side, the entire right hand side is re evaluated and the result is assigned to the left hand side.
2.12. Task: Task are used in all programming languages, generally known as procedures or sub routines. Task are defined in the module in which they are used. It is possible to define task in separate file and use compile directive include to include the task in the file which instantiates the task. Task can include timing delays, like posedge, negedge, #delay and wait. Task can have any number of I/P and output. The variables declared within the task are local to that task. Task can take, drive and source global variables, when no local variables are used. Task can call another task or function. Task can be used for modeling both combinational and sequential logic. Task begin with keyword task and ends with keyword task. Local variables are declared after I/P and O/P declaration. 2.13 Function Function is same as task, with very little difference, like function can not drive more then one output, can not contain delays. Function can not include timing delays, like posedge, negedge, #delay. Function executed in zero time delay. Function can have any number of I/P but only one output. Function can call other functions, but can not call task. 2.14.1. $display: Display once every time they are executed. 2.14.2. $monitor: Display every time, one of its parameters changes. 2.14.3. $Strobe: Display the parameters at the very end of the current simulation time unit rather than exactly where it is executed. 2.14.4. $time: Return the current simulation time as a 64 bit. 2.14.5. $Stime: Return the current simulation time as a 32 bit. 2.14.6. $realtime: Return the current simulation time a real number. 2.14.7. $reset: It resets the simulation back to time 0. 2.14.8. $stop: Halts the simulator and puts it in the interactive mode, where user can enter commands. 2.14.9. $finish: exits the simulator back to the operating system. 2.14.10. $random: it generates a random integer every time it is called.
Weighted Priority Arbiter
Global Academy of Technology Page 14
Note: %d decimal %h hexadecimal %b binary %c character %s string %5d gives exactly 5 spaces for the number. 2.15. Initializing Memories A memory array may be initialized by reading memory pattern file from disk and storing it on the memory array by using $ readmemb and $ readmemh. 2.15.1 $redmemb It is used for binary representations of memory content. 2.15.2 $readmemh It is used for hex representation of memory content. Syntax: $readmemh (file name, mem-array, start_adder, stop_addr).
Weighted Priority Arbiter
Global Academy of Technology Page 15
ABSTRACT This arbiter has a scalable input request. Weight is given to each of the incoming request to the arbiter. This scheme is used to avoid starvation of requests in a fixed priority arbiter which continuously gives grant to higher priority requests. Here the requests are serviced in a round robin manner. Assuming N number of requests, the higher priority request is given the highest weight. A register should be maintained for each request indicating its priority. Initial value of weight should be supplied as input for each request. One popular weighted priority arbitration implementation in the contemporary flow-control SoC design is to allocate a set of credits to each client then process the requests in a round robin fashion. Credit register associated with each client are initialized with a value that represents the number of credits. More number of credits is allocated to higher priority requests. When a client asserts a request to the arbiter, it can only be issued a grant if it has credits available. After a grant is issued, the credit register of that client is decremented. If the credit registers of all the clients are zero, then credit registers are re-initialized with their original values and the arbitration process repeats.
Weighted Priority Arbiter
Global Academy of Technology Page 16
Introduction An important form of arbiter is used in asynchronous circuits, to select the order of access to a shared resource among asynchronous requests. Its function is to prevent two operations from occurring at once when they should not. Given only one request, an arbiter promptly permits the corresponding action. Delaying any second request until the first action is completed. When the arbiter gets two requests at once, it must decide which request to be granted first. For instance, there may be a time multiple PCI agents would like to initiate a data transfer. This is not possible since all the agents share the same bus and two agents cannot place data on the same wire at the same time. The PCI arbiter schedules use of the bus, telling the PCI when they may initiate the data transfer. The arbiter guarantees that there are never two actions underway at the same time. So how does the arbiter decide which requestor should be granted first to access the resource? This task is performed by considering some function units to have higher importance (or priority) than other units. The request to access the shared resource by the function unit of higher importance is granted first and subsequently the functions with lesser priorities are granted access. However, accesses to the requests from the function unit of higher priority could lead to starvation of access opportunities to requests from function units with lesser priorities. This problem is solved by using the concept of request masking and round robin scheduling. Benefits: protection against heavy users. Disadvantage: if a connection has a small weight and the number of connections are large, this may lead to long periods of unfairness.
Weighted Priority Arbiter
Global Academy of Technology Page 17
Project Definition This project illustrates the design and working of weighted priority arbiter. In this project, arbiter has its inputs scalable. Weight is assumed to be provided with each incoming request. The requests are serviced in round robin manner. Assume there are N requests (req1-reqN), the higher priorities are given higher weights. A register is maintained for each request indicating its priority. Initial value of weight should be given as input for each request by the requestor. Weight register associated with each requestor are initialized with a value that represents the number of weight available to that particular client. When the requestor asserts a request to the arbiter, it can issue the grant only if the requestor has available weight. After a grant is issued, the weight register associated with that request is decremented and the request is masked till the time all other requests are serviced once. If the weight registers of all the requests are found to be zero, then the weight registers are re-initialized and the process repeats. The arbiter begins its operation only if at least one request is asserted. If no requests are available then the arbiter remains idle.
Weighted Priority Arbiter
Global Academy of Technology Page 18
Project Overview
1: PIN Diagram Weighted priority arbiter
Req 1 Grant 1 Wgt 1 Req 2 Grant 2 Wgt 2 Req 3 Grant 3 Wgt 3
NAME INPUT/OUTPUT DESCRIPTION Clk Input Operating frequency Rst Input Resets all request and grant Req 1 Input This pin represents request 1 to arbiter Wgt 1 Input This pin represents weight of request 1 to arbiter Grant 1 Output This pin represents the grant of request 1 to arbiter Req N Input This pin represents request 1 to arbiter Wgt N Input This pin represents weight of request 1 to arbiter Grant N Output This pin represents the grant of request 1 to arbiter
Weighted Priority Arbiter
Global Academy of Technology Page 20
Finite State Machine (FSM) A finite-state machine (FSM) or finite-state automaton (plural: automata), or simply a state machine, is a mathematical model of computation used to design both computer programs and sequential logic circuits. It is conceived as an abstract machine that can be in one of a finite number of states. The machine is in only one state at a time; the state it is in at any given time is called the current state. It can change from one state to another when initiated by a triggering event or condition; this is called a transition. A particular FSM is defined by a list of its states, and the triggering condition for each transition. The behavior of state machines can be observed in many devices in modern society which perform a predetermined sequence of actions depending on a sequence of events with which they are presented. Simple examples are vending machines which dispense products when the proper combination of coins is deposited, elevators which drop riders off at upper floors before going down, traffic lights which change sequence when cars are waiting, and combination locks which require the input of combination numbers in the proper order. Finite-state machines can model a large number of problems, among which are electronic design automation, communication protocol design, language parsing and other engineering applications. In biology and artificial intelligence research, state machines or hierarchies of state machines have been used to describe neurological systems and in linguisticsto describe the grammars of natural languages. Formally, an FSM is specified by five entities: symbolic states, input signals, output signals, next- state function and output function
state_next state_reg Input clk
Next state logic State register Moore output logic Mealy output logic Weighted Priority Arbiter
Global Academy of Technology Page 21
Functional Description of FSM : Reset: Initially the reset signal is assumed to be high. When the reset signal is high every grant is made low, weight and request registers and flag registers (flaga, flagb, flagc, flagd) are made low. State A is set as the present state. As soon as the reset signal is made low, the arbiter is begins its tasks. A: This state counts the number of clients requesting for the grant signal and stores it in a register (count). If no requests are present, the arbiter stays in the same state otherwise moves to state B. B: Here the weight register (wt) is initialized with the weight sent by each client. Another weight register (w) is maintained which is used to store the decremented values of the requests. These registers are also used to compare the priorities of the requests. Which of the clients has requested for grant signal is stored in a separate request register (r). C: Requests with the highest priority is determined by comparing their weights. If two requests are found to be having same weights, then the request which has been granted least number of times is chosen for grant. Each time this state is executed, the value of count register is decremented by one. If a request with weight zero is selected then the control goes back to state A. D: The request selected in state C is given the grant and its weight is decremented. The request after getting the grant once is masked so that the last request that was served, cannot be served again, forcing the arbiter to grant the next request. If the value of count register is zero the control is given to state A otherwise the control goes back to state C. The transfer of control from one state to anther is facilitated with the help of the flag registers. At any point of time during the operation of the arbiter, if the reset signal is set to high, the arbiter will immediately go back to state A and wait till the reset signal becomes low again.
Weighted Priority Arbiter
Global Academy of Technology Page 22
FSM of weighted priority arbiter Flaga=0
Reset
Flagd=0 Flaga=1 Count=0
Flagc=0
Flagd=1 Count!=0 Flagb=1 Flagc=1
Figure 2 FSM
A D B C Weighted Priority Arbiter
Global Academy of Technology Page 23
Working of Weighted priority Arbiter In this project, we design the arbiter by using FSM technique. The control of the arbiter is divided into 4 states namely A, B, C, and D. initially the reset is assumed to be high making state A as the present state. The operation of the arbiter starts as soon as the reset is set low. 1: State A: This state checks if any requestor is requesting for a grant. If yes, then how many requestors are present? The number of requestors is stored in a register named count. The flag register (flaga) is set high for a non-zero value of count. Depending on the value of the flaga the next state is determined. flaga=1 => next state=B flaga=0 => next state=C
2: State B: The first task is to initial the weight registers (wt) with the input weights (wgt). wt[0]=wgt1 wt[1]=wgt2 wt[2]=wgt3 wt[3]=wgt4 Another set of weight registers (w) are used to hold the updated value of the weights i.e. the value after they are decremented. If the value of all the w registers is zero, then their values are re-initialized from the wt register. Request registers (r) are used to implement the masking concept. To illustrate the masking process let us consider 4 requests- req1, req2, req3, req4. Hence the value of request register will be r=1111 where the LSB bit and MSB bit represent req1 and req4 respectively. If req4 has the highest priority, it will be given the grant first. After the grant signal is provided, req4 is masked i.e. value of r=0111. This ensures that the higher priority request will not be given grant continuously. Weighted Priority Arbiter
Global Academy of Technology Page 24
Flagb is set high signaling that the arbiter can now proceed to state C.
3: State C: This state determines which of the requests is having the highest weight. If two requests are found to have the same highest priority, then the request which has been granted least number of times is given the grant. The weights of masked requests are not compared. The selected request is stored a register named la. If a request having weight zero is selected in this state, then the control is immediately transferred to state A and hence it is not provided with the grant signal. The value of the count register is decremented by one. The next state depends on the value of flagc. Flagc=1 => next state=D Flagc=0 => next state=A 4: State D: Grant is provided to the request selected in state C. Weight of that request is decremented by 1 and the request is masked. Value of flag register flagd is updated according to the value of the count register. Flagd=1 for a non-zero value of the count register. The next state is determined from the value of flagd. Flagd=1 => next state=C Flagd=0 => next state=A
Weighted Priority Arbiter
Global Academy of Technology Page 25
Waveform
Reset is set high for 150 nsec. As soon as the reset is set low, requests are asserted by all the four requestors req1, req2, req3 and req4 with weights 10, 15, 9 and 7 respectively. Since req2 has the highest weight, it is granted first at 180 nsec. At the same time req2 is masked and its weight is decremented to 14. Subsequently the next requestor with the highest weight is provided grant, its weight is decremented and the request is masked and so on. At 240 nsec all the requestors are granted once and hence all the requests are masked. At 260 nsec the requests are again unmasked and the process continues.
Weighted Priority Arbiter
Global Academy of Technology Page 26
At 650 nsec req3 withdraws its request. Hence it is not serviced. The remaining requestors whose requests are still asserted are serviced in the similar fashion.
Weighted Priority Arbiter
Global Academy of Technology Page 27
At 1150 nsec req3 gets asserted again and the all other requestors withdraw their requests. As only one request is asserted, it is provided with grant signal continuously. As weight of the request is decremented each time it is given grant, at 1540 nsec the weight of all the requests is 0. Hence at 1560 nsec, weights of all the requestors are re-initialized.
Weighted Priority Arbiter
Global Academy of Technology Page 28
Weighted Priority Arbiter The purpose of a weighted arbiter is to allow each requestor a share of the common resource which is relative to his predefined weight. For example, if only two requestors have the weight of 3 and 4 respectively, then over a long period of time, assuming both requestors always have their request asserted, the first one will get 3/7 of the grants and the second will get 4/7 of the total grants. The weight is therefore a mean for setting specific priorities to the different requestors. Contrary to the strict priority arbitration, the weighted arbiter maintains the fairness for all requestors and prevents starvation by serving all requestors according their relative predefined weight, preventing one requestor from dominating the shared resource indefinitely. Using this arbiter results in the number of acknowledges for each valid requestor being relative to its proportional weight with the exception that an inactive requestor is skipped regardless of its weight.
Weighted Priority Arbiter Features: 1. Ensure fair access to a shared resource in a system e.g. system bus. 2. This arbiter has its input requests scalable. 3. Synchronous reset capability. 4. Weight of each request represents its priority level. 5. Weights set to be initial state value when all N weights become zero. 6. Masking capability to prevent starvation of lower priority requests.
Application Complex System-on-Chip (SoC) architecture comprises multiple master and slave modules. Master modules such as processors and hardware accelerators send requests or data to slave modules like memories or register banks. Efficient communications between master and slave modules require adequate on-chip interconnected architectures with arbitration that features content resolution, prioritization, and fairness.
Weighted Priority Arbiter
Global Academy of Technology Page 29
Conclusion The design of a Weighted Priority round robin arbiter using Finite State Machine (FSM), is both simple and efficient, making the seemingly complicated features of a round robin arbiter a straight forward task. The usage of masking concept for blocking the request which has been given the grant once and unmasking it when all the requests are serviced once is the best way to implement the round robin functionality. The overall design is robust, scalable, and easy to extend to any number of requests and simple for pipeline integration.
The CompTIA Network+ & Security+ Certification: 2 in 1 Book- Simplified Study Guide Eighth Edition (Exam N10-008) | The Complete Exam Prep with Practice Tests and Insider Tips & Tricks | Achieve a 98% Pass Rate on Your First Attempt!