RadiatoR 2 13 июня, 2020 Опубликовано 13 июня, 2020 · Жалоба Всем привет. Только постигаю HDL. Сделал debouncer для квадратурного счетчика. Сам счетчик будет работать в диапазоне +- 32767 импульсов. Для меня идеально подойдет short int, но как я понял такого типа в verilog нет. Если я воспользуюсь регистром 16 бит: reg [15 : 0] x; always... //for example here x = 0 x = x - 1;//now x == 0xFFFF то x просто переполнится. А тип int посчитается в дополнительном коде. Вопрос - можно ли создать short тип? Итоговая цель передать это short по spi в контроллер. В принципе я могу использовать в качестве счетчика полноценный integer и забирать с него срез знака и младших 15 бит. Но может есть правильное решение? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 13 июня, 2020 Опубликовано 13 июня, 2020 · Жалоба Приветствую! 47 minutes ago, RadiatoR said: то x просто переполнится. А тип int посчитается в дополнительном коде. Ряд вопросов/намеков - а разве в дополнительном коде short int переменная не переполняется? Чему будет равно битовое представление short int A== -1 ? Если вы работаете в ванильном старом Verilog 1995 то увы для синтеза есть только знаковый integer. Все остальное как говорится "держа в уме" где signed а где нет. Ну и соответственно реализуя это ручками. Если в более новой версии 2001 то там уже можно объявить reg signed [15:0] short_var_name; ... function signed [15:0] to_short (...); ... // Ну или в коде приводить к signed / unsigned ... short_var_name <= short_var_name + $signed(non_signed_var); ... Ну а если вы дожили до SystemVerilog то там уже есть shortint ну и можно разгуляться со своими типами. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 13 июня, 2020 Опубликовано 13 июня, 2020 · Жалоба 6 minutes ago, RobFPGA said: Ряд вопросов/намеков - а разве в дополнительном коде short int переменная не переполняется? Чему будет равно битовое представление short int A== -1 ? Вот я дал =) Сам себя обманул. Конечно же, со стороны регистра разницы в signed и unsigned нет. Причем смотрю на представление, прекрасно вижу переполнение и думаю, что unsigned по другому... По настройкам верилог самый новый (2001), но работа с HDL у меня не основная, скорее добавить функционала для CPU. Поэтому опыта мало.. За signed reg большое спасибо! Возьму на заметку. Про SV знаю, но до него не добрался еще.. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться