MaratZuev 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба Всем добра. Продолжаю разбирать чужое добро и наткнулся на такой кусок кода: input [25:0] a_cpu; input cs_cpu; reg ena; always @(negedge cs_cpu) if (a_cpu[21:0] >= 22'h0) ena <= 1'b1; else ena <= 1'b0; Не понятно, а что: возможны варианты, когда if отработает по ветви a_cpu[21:0] < 22'h0 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 28 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба Приветствую! 8 minutes ago, MaratZuev said: Не понятно, а что: возможны варианты, когда if отработает по ветви a_cpu[21:0] < 22'h0 ? В симуляторе запросто - любой бит a_cpu может быть равен X или Z. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 9 minutes ago, MaratZuev said: Всем добра. Продолжаю разбирать чужое добро и наткнулся на такой кусок кода: input [25:0] a_cpu; input cs_cpu; reg ena; always @(negedge cs_cpu) if (a_cpu[21:0] >= 22'h0) ena <= 1'b1; else ena <= 1'b0; Не понятно, а что: возможны варианты, когда if отработает по ветви a_cpu[21:0] < 22'h0 ? a_cpu[21:0] = 'U' или 'Z' может быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба Судя по коду, просто предположение Вход со знаком, там еще 4 бита висит, и возможно автор кода сделал ошибку при проверке на отрицательные числа или что-то еще. Было явно указано 22 бита, при 26-ти битном входе, без использования кастинга. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба `timescale 1ns / 1ns module cmp; reg [25:0] a_cpu; reg cs_cpu; reg ena; always @(negedge cs_cpu) if (a_cpu[21:0] >= 22'h0) ena <= 1'b1; else ena <= 1'b0; initial begin cs_cpu = 1'b0; forever #10 cs_cpu = ~cs_cpu; end initial begin #5 a_cpu = 25'h0000000; #20 a_cpu = 25'h3ffffff; #20 a_cpu = 25'hzzzzzzz; #20 a_cpu = 25'hxxxxxxx; end initial #100 $stop; initial $monitor("Time = %2t, a_cpu = 0x%7h, ena = b%0b", $stime, a_cpu, ena); endmodule Даёт # Time = 0, a_cpu = 0xxxxxxxx, ena = b0 # Time = 5, a_cpu = 0x0000000, ena = b0 # Time = 20, a_cpu = 0x0000000, ena = b1 # Time = 25, a_cpu = 0x1ffffff, ena = b1 # Time = 45, a_cpu = 0xZzzzzzz, ena = b1 # Time = 60, a_cpu = 0xZzzzzzz, ena = b0 # Time = 65, a_cpu = 0xXxxxxxx, ena = b0 И Да, действительно, нижняя ветвь имеет место быть хотя бы в симуляторе. Всем спасибо. Единственный вопрос: почему в строке # Time = 25, a_cpu = 0x1ffffff, ena = b1 a_cpu равен 0x1ffffff, а не 0x3ffffff, как задано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 1 hour ago, MaratZuev said: Не понятно, а что: возможны варианты, когда if отработает по ветви a_cpu[21:0] < 22'h0 ? а a_cpu[21:0] может быть воспринято как отрицательное число? Или оно unsigned по умолчание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 4 minutes ago, Tpeck said: а a_cpu[21:0] может быть воспринято как отрицательное число? По названию и сути это - адрес процессора Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 22 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 15 minutes ago, MaratZuev said: Единственный вопрос: почему в строке # Time = 25, a_cpu = 0x1ffffff, ena = b1 a_cpu равен 0x1ffffff, а не 0x3ffffff, как задано? Потому что 0x3ffffff это 26-ти битное число, а 25'h3ffffff - 25-ти битное. Старший бит в это число не помещается.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 16 минут назад, MaratZuev сказал: a_cpu равен 0x1ffffff, а не 0x3ffffff, как задано? У вас константа 25'h3ffffff (25 бит), а a_cpu - 26 бит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба Всё, всем спасибо, под вечер уже биты убегают... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться