new123 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 (изменено) · Жалоба Форумчане привет. Натолкнул меня на этот вопрос сначала моделсим, которые заставил переделать все операции сложения. У меня такой вопрос. Имею код Какой получу результат в val при однократном исполнении? Я думал 0x0100. На деле на бою получаю 0x0000, то есть заинкрементил только младший байт. reg [15:0] val initial begin val <= 16'h00ff; end always (...) begin val <= val + 1'b1; end Правильней ли всегда писать так? Или квартус сам разберется? reg [15:0] val initial begin val <= 16'h00ff; end always (...) begin val <= val + 16'd1; end Если вдруг имеет значение указание битности, то как правильно сложить разные по ширине значения? Будет ли в таком примере такой же непредсказуемый результат? reg [15:0] val_1; reg [3:0] val_2; initial begin val_1 <= 16'h00ff; val_2 <= 4'd4; end always (...) begin val_1 <= val_1 + val_2; end Заранее спасибо Изменено 13 февраля, 2020 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба Приветствую! 7 minutes ago, new123 said: Я думал 0x0100. На деле на бою получаю 0x0000, то есть заинкрементил только младший байт. Чудеса чудесные - но кажется мне что тут глюк где то в другом месте вашего кода. С точки зрения языка val <= val + 1'b1; и val <= val + 16'd1; одинаковые операции - так как по стандарту ширина обоих операндов расширяется до максимального из двух. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 (изменено) · Жалоба 9 minutes ago, RobFPGA said: так как по стандарту ширина обоих операндов расширяется до максимального из двух. лень вот прям сейчас подымать свои толмуты кода перед сном, может завтра будут силы. Моделсим наотказ не захотел нормально делать, пока сам не расширил. Спасибо, поищу дальше. upd. Нашел причину Изменено 13 февраля, 2020 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 32 14 февраля, 2020 Опубликовано 14 февраля, 2020 · Жалоба Квеста на код: reg [15:0] val; initial begin val <= 16'h00ff; end always @(posedge clk) begin #1ns val <= val + 1'b1; $strobe("val: %x", val); #1ns $stop(2); end выдаёт: # val: 0100 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться