Решетка Алмаз `включи не работает
Я использую Lattice Diamond, и у меня есть файл verilog с кучей операторов `define для определения глобальных констант.
Я включаю этот файл "заголовка" в другой файл. Он находит файл, но есть ошибка:
"2049990 ОШИБКА - C:/_library /LatticeDiamond/verilog-uart/source/uart/uart_loopback_tb.v(184,38-184,53) (VERI-1128) UART_1_STOP_BIT не объявлено"
У меня есть каталог файла заголовка, заданный в качестве пути включения в настройках проекта для реализации.
/********************************************************************************************
* @file UART_Header.v
* @brief
* Defines UART module parameter constants
*
* @details
* This file is to support the UART_core.v
*
*
* @namespace UART_
********************************************************************************************/
`ifndef UART_HEADER_FILE
`define UART_HEADER_FILE
// UART core register addresses
`define UART_WRITE_ADDR = 8'h00; ///< UART TX address
`define UART_READ_ADDR = 8'h00; ///< UART address to read received data
`define UART_LCR_ADDR = 8'h03; ///< Line control register
`define UART_LSR_ADDR = 8'h05; ///< Line status register
`define UART_DIV_LW_ADDR = 8'b00000111; ///< Baud Rate divisor register low word
`define UART_DIV_HW_ADDR = 8'b00000110; ///< Baud Rate divisor register high word
// UART core bit masks
`define UART_5_DATA_BITS = 16'b00000000; ///< 5 data bits mask
`define UART_6_DATA_BITS = 16'b00000001; ///< 6 data bits mask
`define UART_7_DATA_BITS = 16'b00000010; ///< 7 data bits mask
`define UART_8_DATA_BITS = 16'b00000011; ///< 8 data bits mask
`define UART_1_STOP_BIT = 16'b00000000; ///< 1 stop bit mask
`define UART_1_5_STOP_BIT = 16'b00000100; ///< 1.5 stop bits mask
`define UART_2_STOP_BIT = 16'b00001000; ///< 2 stop bits mask
`define UART_PARITY_ENABLE = 16'b00010000; ///< Enable parity bit mask
`define UART_PARITY_DISABLE = 16'b00000000; ///< Disable parity bit mask
`endif
//EOF
Тогда у меня есть файл, который включает этот файл, как это.
`ifndef UART_LOOPBACK_TB_FILE
`define UART_LOOPBACK_TB_FILE
//*******************************************************************************************
// Includes
//*******************************************************************************************
`include "source/uart/UART_header.v"
// Rest of the code for this file
.....................
UL_TB_WriteReg((UART_8_DATA_BITS | UART_1_STOP_BIT | UART_PARITY_DISABLE), UART_LCR_ADDR);
...................
`endif
Почему он не может найти мои `определения? Файл, который включает файл заголовка, находится даже в том же каталоге, что и сам файл заголовка. Lattice Diamond поддерживает это?
Я также попытался `включить"UART_header.v", поскольку он находится в том же каталоге, но это выдает ту же ошибку.
1 ответ
Конечно, вы имеете в виду это:
UL_TB_WriteReg((`UART_8_DATA_BITS | `UART_1_STOP_BIT | `UART_PARITY_DISABLE), `UART_LCR_ADDR);
// ^ ^ ^ ^
Вещи, которые были определены в Verilog, должны начинаться с обратной кавычки.