SYNTHESIZE
Generates the VHDL files describing the digital circuit implementing the pwas function
Contents
Method of pwas object.
Description
This method generates automatically the VHDL files for the implementation of a digital architecture which computes the value of the pwas function. The value of the function in a point x is computed by linear interpolation of the value of the function in the vertices of the simplex containing x.
In order to map into a fixed point architecture, all the values are rescaled and quantized: if you want the circuit to compute the value of the pwas function in a point x, you must give to the circuit the value A x + B. The result f given by the circuit must be transformed into alpha f + beta, in order to come back to the original domain. x --> A x + B, f --> alpha f + beta. The values A, B, alpha and beta are stored in a structure synthesisInfo, property of the pwas object. They can be retrieved by using method getSynthesisInfo. The structure also stores the number of bits used to represent data in the circuit and other useful information (see method getSynthesisInfo).
Two circuit architectures are available: a serial one, employing a Multiply and Accumulate block and a parallel one employing as many multipliers as the number of dimensions of the domain plus one. Three different methods for the acquisition of the inputs can be chosen for both architectures: serial bitwise (at each clock cycle, one bit of all input components is read), serial component-wise (at each clock cycle a whole component of the input point is read) or parallel (all components of the input point are read in parallel).
A log file is also generated in which the circuit performances are reported.
Syntax
object = synthesize(object,circuit_parameters,[options])
The pwas object is returned as output because it is modified inside the method. circuit_parameters is a structure with the following fields:
- nbit: number of bits used to code inputs (default nbit = 12)
- nbit_coeff: number of bits used to code the value of the function in the vertices of the dimplicial partition (default nbit_coeff = nbit)
- nbitout: number of bits used to code the value of the pwas function. If not provided it is chosen automatically in order to avoid truncation and overflow.
- type: string defining the type of architecture to be employed, parallel ('parallel') or serial ('serial'). Default type = 'serial'.
- inputAcquisition: string defining the input acquisition method to be employed: serial bitwise ('serial_bit'), serial component-wise ('serial_component') or parallel ('parallel'). Default inputAcquisition = 'parallel'.
- serialMode: needed only if input acquisition is serial bitwise. It is a string indicating if the input points are read starting from Most Significant Bit to Least Significant Bit ('MSB2LSB') or from Least Significant Bit to Most Significant Bit ('LSB2MSB'). Default serialMode = 'MSB3LSB'.
- frequency: indicates the frequency (in Hz) at which the circuit will work. Default frequency = 20000000 (20 MHz).
- samplingTime: indicates the sampling time of the circuit, i.e. the time between one input acquisition and the following one. If not provided it is set to the minimum available.
- provideOutput: indicates when to output the value of the pwas function. If provideOutput is set to 'asap', the value of the pwas function is provided as soon as it is ready; if it is set to 'alap', the value of the pwas function is provided when the following input point is read.
- vs: flag indicating if the pwas circuit is generated in order to implement a virtual sensor (this value is set automatically by virtualsensor.synthesize method).
- Aw, Bw: matrices used to scale the value of the pwas function in the vertices of the simplicial partition. These matrices are necessary only for the design of a virtual sensor and they are set automatically by method virtualsensor.synthesize.
It is possible to specify further options for the synthesis process. options is a structure with the following fields:
- folder: destination folder where the VHDL files are saved (default is pwas_ser_circuit or pwas_par_circuit followed by a progressive number).
Acknowledgements
Contributors:
- Alberto Oliveri (alberto.oliveri@unige.it)
- Tomaso Poggi (tpoggi@essbilbao.org)
Copyright is with:
- Copyright (C) 2010-2011 University of Genoa, Italy.