| 
		 | 	
   
An in-line logic function reference is a Boolean equation that implements a logic function. It is a shorthand method for implementing a logic function that uses only one line of the Logic Section and does not require an Instance Declaration in the Variable Section.
When you wish to implement an instance of a megafunction or macrofunction with an in-line logic function reference, you must first ensure that the function's logic is defined in its own design file and a Function Prototype Statement specifies the ports and parameters of the function.
You can also implement an instance of a primitive with an in-line logic function reference. However, in contrast to megafunctions and macrofunctions, primitive logic is predefined, so you do not need to define the primitive logic in a separate design file. In most cases, a Function Prototype Statement is not needed. See Function Prototype Statement for more information.
| Instance Declarations provide named nodes that are useful for entering resource assignments and simulating a project. In contrast, when an in-line logic function reference does not define an instance name, the instance's node nameswhich are based on the instance namemay change as the project logic changes. Node names do not change for an in-line logic function reference that defines an instance name. | 
The following examples show the Function Prototypes for the compare and lpm_add_sub functions. The compare function has input ports a[3..0] and b[3..0] and output ports less, equal, and greater; the lpm_add_sub function has the input ports dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0], cin, and add_sub, and output ports result[LPM_WIDTH-1..0], cout, and overflow.
FUNCTION compare (a[3..0], b[3..0]) RETURNS (less, equal, greater); FUNCTION lpm_add_sub (cin, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0], add_sub) WITH (LPM_WIDTH, LPM_REPRESENTATION) RETURNS (result[LPM_WIDTH-1..0], cout, overflow);
The in-line logic function references for the compare and lpm_add_sub functions appear on the right of the equations below. The instance name of the compare function is compare1.
(clockwise, , counterclockwise) = compare1: compare(position[], target[]); sum[] = lpm_add_sub (.datab[] = b[], .dataa[] = a[]) WITH (LPM_WIDTH = 8) RETURNS (.result[]);
The in-line logic function reference for the DFF primitive appears on the right of the equation below. The instance name of the DFF primitive is dffex.
q = dffex: dff (d, clk, clrn, prn)
The in-line logic function reference for a logic function has the following characteristics:
The symbolic name and colon (:) immediately to the right of the equals symbol (=) defines an instance name for a Quartus® II primitive or user-defined megafunction or macrofunction. In the compare example shown above, compare1: defines the instance name of the compare function as compare1. Similarly, in the dff example shown above, dffex: defines the  instance name of the DFF primitive as dffex.
The function name on the right of the symbolic name and colon
      is followed by a signal list enclosed in parentheses (), containing 
      symbolic names, decimal 
      numbers, or groups, separated by commas 
      (,). These items correspond to the input ports of the function. 
    
When you specify the function name, you can use the name substitution feature to specify a text string for the name that is replaced by a different text string when the design is compiled. Before you can use the name substitution feature, you must turn on the NAME_SUBSTITUTION option in the TDF's Options Statement and specify the replacement string for the name in the TDF's Parameters Statement. You can then specify the text string to be replaced in the in-line logic function using the format @<text string>.  Example
In the signal list, port names can be given through positional port association or named port association:
In the compare example shown above, the a[3..0] and b[3..0] 
          inputs of compare are connected to the variables 
          named position[] and target[], respectively, 
          through positional port association. When you use positional port association, 
          you can use commas as placeholders for outputs that are not connected 
          to a variable. In compare, the equal output 
          is not connected to any variable, so an extra comma is needed to hold 
          its place in the group on the left of the equation.
In the lpm_add_sub example shown above, the .datab[] 
          and .dataa[] inputs of lpm_add_sub are connected 
          to the variables b[] and a[], respectively, 
          through named port association. Port names are connected to variables 
          with an equals symbol (=).
 
          
  | 
      
In a parameterized function, the keyword WITH and the parameter 
      name list follows the input port list. The list is enclosed in parentheses; 
      parameter names are separated by commas. Only the parameters used by the 
      instance are declared; optional parameter values are separated from parameter 
      names by an equals symbol. In the lpm_add_sub example shown 
      above, the LPM_WIDTH parameter is assigned a value of 8. 
      If no parameter values are assigned in the in-line logic function reference, the Compiler 
      searches for them in the parameter value search 
      order.
On the left of the in-line logic function reference, the outputs of the function 
      are connected to variables. In the compare example shown above, 
      the function's less and greater outputs are connected 
      to the variables clockwise and counterclockwise, 
      respectively, through positional port association. Similarly, in the lpm_add_sub 
      example, the function's sum[] outputs are connected through 
      positional port association.
The values of the variables, which are determined elsewhere in the Logic 
      Section, feed the associated inputs and outputs. In the compare example 
      shown above, the values of position[] and target[] 
      feed the inputs of compare. The values of output ports less 
      and greater feed clockwise and counterclockwise, 
      respectively. These variables may be used in other operations in the Logic 
      Section.
The in-line logic function reference can contain an optional RETURNS clause, which is based on the RETURNS clause in the Function Prototype. The RETURNS clause lists the subset of the function's outputs that is used in the instance. In the lpm_add_sub example shown above, the RETURNS clause does not contain the cout and overflow outputs of lpm_add_sub; therefore, only the sum[] output is used on the left of the in-line logic function reference and comma placeholders are not required for cout and overflow.
| 
       - PLDWorld -  | 
    
| 
       
  | 
  
| Created by chm2web html help conversion utility. |