Specifying the Value of AND and OR Plane Fields.

The "word" statement is used to specify the contents of one or more PLA wordlines. The label field specifies the contents of the AND plane while the operand field specifies the contents of the OR plane. The labels of "word" statements are called "conditions" while the operands are called commands. A simple condition is specified using an expression of the following form.

field_name=expression

The field_name must be the name of an AND plane field, while the expression must supply the value against which the field will be tested. A simple command is specified using an expression of the following form.

expression->field_name

The field_name must be the name of an OR plane field, while the expression supplies the value that will be stored in the field. To illustrate, let us add the following AND plane field declarations to the three OR plane declarations specified in the last section.

cnda: field position=0,width=1,type=input
cndb: field position=1,width=1,type=input

The following "word" statements specify the contents of three wordlines.

cnda=1: word 5->flda,017->fldb,0x4c->fldc
cndb=0: word 2->flda,12->fldb,29->fldc
cnda=0: word 0x3->flda,0xa->fldb,0177->fldc

This example also illustrates the use of octal and hexadecimal numbers. Numbers that begin with 0x are assumed to be in hexadecimal format. The digits a,b,c,d,e,f,A,B,C,D,E,F are acceptable in such numbers along with the usual 0-9. Numbers beginning with zero are assumed to be in octal format, and only the digits 0-7 are acceptable. Octal and hexadecimal numbers may be used wherever decimal numbers are acceptable.

Since it may not be convenient to specify the contents of every OR plane field on every word, the "field" statement allows a default value to be specified, which will be used if a particular "word" statement does not assign a value to a field. The following is an example of fields specified with default values.

flda: field width=3,position=0,default=4
fldb: field width=4,position=3,default=abc+def
fldc: field width=7,position=7,default=0x7f

If no default value is specified for an OR plane field, the field is assumed to have a default value of zero.

No default value may be specified for AND plane fields. An AND plane field is assumed to have a default value of "don't care". The only way to specify a "don't care" value for an AND plane field is to allow it to take its default value.

A shorthand notation, consisting of just the field name, can be used to assign the value "1" to an OR plane field of width 1. (This is normally considered to be activating a control signal.) For example, if abc is a one-bit field, "1->abc" and "abc" will produce the same result.

The "true" parameter can be used to extend this shorthand notation to multi-bit OR plane fields. Suppose the following field declaration has been made.

xyz: field width=10,position=10,default=5,true=15

With this declaration, "15->xyz" and "xyz" will produce the same result. There is no default value for the "true" parameter, so multi-bit OR plane fields with no "true" parameter must have values explicitly assigned to them, or must be allowed take their default value.

One bit OR plane fields can be declared as active-high or active-low. If a field is declared as active-low, the value assigned to it will be inverted before any output is done. Thus, if abc is a one bit field that specifies the value of a control signal, the expressions "1->abc" and "abc" will activate the control signal regardless of whether it is active-high or active low. This inversion also applies to the default value of an active-low field. Since active-high is the default for one bit fields, an explicit declaration of active high does not affect the output. Multi-bit OR plane fields and AND plane fields may not be declared as active high or active low. The following is an example of an active high and an active low declaration.

abc: field position=12,active=low
def field position=15,active=high

To reduce the confusion that active-high and active-low fields may cause, the constants "%t" and "%f" can be used to assign values to one-bit fields. The constant "%t" will turn a signal on, while "%f" will turn the signal off, regardless of whether it is active-high or active-low. When used in an expression, "%t" acts like a 1 and "%f" acts like a zero. These constants may be used wherever numbers are acceptable.