я получаю «ошибка синтаксиса, неожиданный„[“» в строке помечается как // 2 в следующем кодеСинтаксическая ошибка, неожиданный «[», Verilog
module reg_file
#(
parameter DATA_WIDTH = 8,
ADDR_WIDTH = 2
)
(
input wire clk,
input wire wr_en,
input wire [ADDR_WIDTH-1:0] w_addr, r_addr,
input wire [(DATA_WIDTH*2)-1:0] w_data,
output wire [DATA_WIDTH-1:0] r_data
);
reg [DATA_WIDTH-1:0] array_reg [2 ** ADDR_WIDTH - 1:0];
always @ (posedge clk)
if (wr_en)
array_reg[w_addr] <= w_data[15:8]; // 1
array_reg[w_addr + 1] <= w_data[7:0]; // 2
assign r_data = array_reg[r_addr];
endmodule
Я хочу написать 16 разрядное слово в 8-битный файл регистра. Когда я комментирую одну из строк, помеченных как // 1 или // 2, компиляция в порядке. Какое правило я нарушил? Спасибо
Благодарим за ответ. Я не заметил «слона». На самом деле нужно добавить только «если» begin-end, потому что в этом случае всегда блок имеет только одно утверждение - «if». По крайней мере, компиляция в порядке, без начала начала. –