85 lines
2.1 KiB
Markdown
85 lines
2.1 KiB
Markdown
|
Placeholder...
|
||
|
|
||
|
## Verilog Define Statements
|
||
|
|
||
|
Verilog provides a text macro substitution facility. This may be useful
|
||
|
for defining constants, opcodes, or with conditional compilation. To
|
||
|
define a text macro, use the define keyword.
|
||
|
|
||
|
`define myCode 13
|
||
|
|
||
|
When you want to use the macro, simple use the macroname with a accent
|
||
|
key.
|
||
|
|
||
|
a = `myCode;
|
||
|
|
||
|
|
||
|
The following compile directives are available for use
|
||
|
|
||
|
`include Includes another file, avoid using pathnames
|
||
|
`define Define a text macro
|
||
|
`ifdef Starts conditional compilation, dependant on if a macro has been defined
|
||
|
`else Alternate condiational compilation
|
||
|
`endif Ends conditional compilation
|
||
|
`ifndef Starts conditional compilation, like `ifdef
|
||
|
`elseif Alternative conditional compilation
|
||
|
|
||
|
The use of *\`define* doesn't require that the macro be given a value.
|
||
|
This allows for the following code style (exceprt from a defines.v
|
||
|
file).
|
||
|
|
||
|
// Number of bits used for devider register. If used in system with
|
||
|
// low frequency of system clock this can be reduced.
|
||
|
// Use SPI_DIVIDER_LEN for fine tuning theexact number.
|
||
|
//
|
||
|
`define SPI_DIVIDER_LEN_8
|
||
|
//`define SPI_DIVIDER_LEN_16
|
||
|
//`define SPI_DIVIDER_LEN_24
|
||
|
//`define SPI_DIVIDER_LEN_32
|
||
|
|
||
|
`ifdef SPI_DIVIDER_LEN_8
|
||
|
`define SPI_DIVIDER_LEN 5 // Can be set from 1 to 8
|
||
|
`endif
|
||
|
`ifdef SPI_DIVIDER_LEN_16
|
||
|
`define SPI_DIVIDER_LEN 16 // Can be set from 9 to 16
|
||
|
`endif
|
||
|
`ifdef SPI_DIVIDER_LEN_24
|
||
|
`define SPI_DIVIDER_LEN 24 // Can be set from 17 to 24
|
||
|
`endif
|
||
|
`ifdef SPI_DIVIDER_LEN_32
|
||
|
`define SPI_DIVIDER_LEN 32 // Can be set from 25 to 32
|
||
|
`endif
|
||
|
|
||
|
Likewise, conditional compilation of code is possible
|
||
|
|
||
|
module add23(
|
||
|
a,
|
||
|
b,
|
||
|
`ifdef ADD3
|
||
|
c,
|
||
|
`endif
|
||
|
sum);
|
||
|
|
||
|
output [3:0] sum;
|
||
|
input [3:0] a, b;
|
||
|
`ifdef ADD3
|
||
|
input [3:0] c;
|
||
|
`endif
|
||
|
|
||
|
assign sum =
|
||
|
`ifdef ADD3
|
||
|
c+
|
||
|
`endif
|
||
|
a+b;
|
||
|
|
||
|
endmodule
|
||
|
|
||
|
## Verilog Events
|
||
|
|
||
|
Lorem Ipsum
|
||
|
|
||
|
## Verilog Tasks
|
||
|
|
||
|
Lorem Ipsum
|
||
|
|
||
|
[Category:FPGAWorkshop](Category:FPGAWorkshop "wikilink")
|