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

Short integer Verilog

Всем привет.

Только постигаю 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 бит. Но может есть правильное решение?

Спасибо.

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


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

Приветствую!

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  ну и можно разгуляться со своими типами. :biggrin:

Удачи! Rob.

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


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

6 minutes ago, RobFPGA said:

Ряд вопросов/намеков -  а разве  в дополнительном коде short int переменная не переполняется? Чему  будет равно битовое представление short int A== -1 ?

Вот я дал =) Сам себя обманул. Конечно же, со стороны регистра разницы в signed и unsigned нет. Причем смотрю на представление, прекрасно вижу переполнение и думаю, что unsigned по другому...

По настройкам верилог самый новый (2001), но работа с HDL у меня не основная, скорее добавить функционала для CPU. Поэтому опыта мало..

За signed reg большое спасибо! Возьму на заметку. Про SV знаю, но до него не добрался еще..

 

Спасибо.

 

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


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

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

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

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

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

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

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

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

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

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