Перейти к содержанию
    

Убрать сообщение компилятора

Как убрать это сообщение?

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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сделав сигналы одинаковой разрядности. У Вас ct - 32 бита, а LEN_NUM - 7

 

С другой стороны parameter LEN_NUM = 66 - но это локальный параметр, может быть с верхнего уровня изменен

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно так

 

DATA_OUTPUT <= {{a, DATA_INPUT} - buff}[28:0];

 

синтезатор доволен, но симулятор временами сводит, не знаю почему. часть таких строк пропускает, часть ни в какую...

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В продолжении темы:

есть такая же конструкция:

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 ";"

Что может быть не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там нет \

просто 1'b1

COUNT = COUNT + 1'b1;

и это не ` тот что с буквой ё, а ' тот что с буквой э

Да, действительно. Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...