ivan219 0 25 октября, 2013 Опубликовано 25 октября, 2013 · Жалоба Как убрать это сообщение? Warning (10230): Verilog HDL assignment warning at div_1.v(56): truncated value with size 32 to match size of target (7) Ругается на это. parameter LEN_NUM = 66; reg [LEN_CT - 1:0] ct; ct <= LEN_NUM; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Bekrenyov 0 26 октября, 2013 Опубликовано 26 октября, 2013 · Жалоба сделав сигналы одинаковой разрядности. У Вас ct - 32 бита, а LEN_NUM - 7 С другой стороны parameter LEN_NUM = 66 - но это локальный параметр, может быть с верхнего уровня изменен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба Как убрать это сообщение? ct <= LEN_NUM[LEN_CT - 1:0]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan219 0 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба Sergey_Bekrenyov Забыл указать что LEN_CT = Log2(LEN_NUM) + 1; ct <= LEN_NUM[LEN_CT - 1:0]; От лично. Работает. Ну и в продолжение темы. Warning (10230): Verilog HDL assignment warning at cor.v(26): truncated value with size 29 to match size of target (28) input [width - 1: 0] DATA_INPUT, output reg [width - 1: 0] DATA_OUTPUT ); parameter width = 28; reg [width - 1: 0] buff; wire a = (buff > DATA_INPUT); buff <= DATA_INPUT; DATA_OUTPUT <= {a, DATA_INPUT} - buff; В принципе ругается правильно. Вот только я знаю что DATA_OUTPUT не будет больше 28 бит. Как в этом случае указать компилятору что все хорошо? В принципе вот так можно обмануть. Но как то это не элегантно :) wire [width: 0] b = {a, DATA_INPUT} - buff; DATA_OUTPUT <= b[width - 1: 0]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба можно так DATA_OUTPUT <= {{a, DATA_INPUT} - buff}[28:0]; синтезатор доволен, но симулятор временами сводит, не знаю почему. часть таких строк пропускает, часть ни в какую... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Bekrenyov 0 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба Sergey_Bekrenyov Забыл указать что LEN_CT = Log2(LEN_NUM) + 1; От лично. Работает. Ну и в продолжение темы. Warning (10230): Verilog HDL assignment warning at cor.v(26): truncated value with size 29 to match size of target (28) input [width - 1: 0] DATA_INPUT, output reg [width - 1: 0] DATA_OUTPUT ); parameter width = 28; reg [width - 1: 0] buff; wire a = (buff > DATA_INPUT); buff <= DATA_INPUT; DATA_OUTPUT <= {a, DATA_INPUT} - buff; В принципе ругается правильно. Вот только я знаю что DATA_OUTPUT не будет больше 28 бит. Как в этом случае указать компилятору что все хорошо? В принципе вот так можно обмануть. Но как то это не элегантно :) wire [width: 0] b = {a, DATA_INPUT} - buff; DATA_OUTPUT <= b[width - 1: 0]; Сделайте проверку на переполнение wire [width: 0] b = {a, DATA_INPUT} - buff; DATA_OUTPUT <= (b[width]) ? {(width-1){1'b1}} : b[width - 1: 0]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 14 марта, 2017 Опубликовано 14 марта, 2017 · Жалоба В продолжении темы: есть такая же конструкция: reg [8:0] COUNT; always @ (posedge CLK or posedge RST) begin COUNT = COUNT + 1; end Quartus выдает такое же предупреждение на сайте Alterы предлагается следующее решение: You get this warning because 1 is an unsized integer literal which defaults to 32 bits. Workaround/Fix To avoid this warning, use 1\'b1 rather than 1. COUNT = COUNT + 1\'b1; Но теперь у меня quartus ругается на Error (10170): Verilog HDL syntax error at project.v(178) near text "\'b1;"; expecting ";" Что может быть не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 14 марта, 2017 Опубликовано 14 марта, 2017 · Жалоба там нет \ просто 1'b1 COUNT = COUNT + 1'b1; и это не ` тот что с буквой ё, а ' тот что с буквой э Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 14 марта, 2017 Опубликовано 14 марта, 2017 · Жалоба там нет \ просто 1'b1 COUNT = COUNT + 1'b1; и это не ` тот что с буквой ё, а ' тот что с буквой э Да, действительно. Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться