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

Мне-то хватит, вопрос в том, что синтезируется в результате? Счетчик на 27 бит, или на 32?

Синтезаторы довольно эффективно оптимизируют лишние разряды.

 

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


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

Синтезаторы довольно эффективно оптимизируют лишние разряды.

 

 

Это если диапазон счета ограничен простой логикой внутри. Как в случае простого счетчика, где сравнивают с константой. Но не всегда диапазон вообще вычислим.

Например, как самое простое. Хочу измерить длину внешнего импульса, зная при этом, что она не может превышать сто миллионов тактов.

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


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

Хочу измерить длину внешнего импульса, зная при этом, что она не может превышать сто миллионов тактов.

bit [26:0] timer;

Ну, будет с запасом на 30% на уход длительности туды-сюды.

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


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

интересно, как это на троичные архитектуры ложится? я это к тому, что явное указание диапазона лучше, чем по степеням двойки.

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


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

bit [26:0] counter;

 

 

И я об этом. Вместо того, чтобы работать в категориях "число от нуля до ста миллионов" программист всё равно должен следить сам за шириной регистров, в которые упакуется это число. Примитивизм. Я, кстати, не помню по памяти значения степеней двойки, превышающие 16.

 

VHDL тоже не идеален в этом смысле, так как диапазон целых ограничен практически 32 битами, вместо того, чтобы поддержать в языке целые произвольной длины. Это уже давным-давно не проблема. Но что есть сейчас всяко лучше, чем отсутствие диапазонов вообще.

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


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

VHDL тоже не идеален в этом смысле, так как диапазон целых ограничен практически 32 битами, вместо того, чтобы поддержать в языке целые произвольной длины.

А в SV есть :)

longint 2-state data type, 64-bit signed integer

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


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

64-бита принципиально ни чем не лучше, так как на любое ограничение найдется своя задача.

Было уже и 4 гигабайта и 2000 год... Шерсть клочьями кое-откуда летит ежедневно.

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


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

А в SV есть :)

longint 2-state data type, 64-bit signed integer

 

 

Без ограничения диапазона? Вместо 33-битного счетчика может 64-битный впихнуть? :)

 

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


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

Нужную разрядность можно задавать только в топ-модуле, а во вложенных модулях брать с запасом, например:

module top(
   output [3:0] q, 
   input en, clk
);
timer t(q, en, clk);
endmodule

module timer(
   output reg [63:0] q=0, 
   input en, clk
);
reg enreg=0;
always@(posedge clk)
   enreg <= en;
wire start = ~enreg & en;   
always@(posedge clk) 
   if(start) q <= 1;
   else if(en) q <= q + 1;
endmodule

- синтезатор выкинет лишние разряды.

 

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


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

На мой - минус.

 

Да, это так. Но уровень Вашего познания гораздо выше среднего.

А мне надо среднее.

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


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

И я об этом. Вместо того, чтобы работать в категориях "число от нуля до ста миллионов" программист всё равно должен следить сам за шириной регистров, в которые упакуется это число. Примитивизм. Я, кстати, не помню по памяти значения степеней двойки, превышающие 16.

Решается точно также, как в VHDL -- подключением библиотеки с небольшой функцией. Как и другие мелочи, разумная плата за преимущества.

 

 

В более поздних версиях языка этой проблемы нет, но есть проблема с поддержкой от Xilinx.

 

 

Если кратко. Начинал с VHDL. Перешел на Verilog. Не жалею.

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


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

Без ограничения диапазона? Вместо 33-битного счетчика может 64-битный впихнуть?

Не впихнет. Вернее, впихнет, но потом ненужное отрежет. Как плохому танцору. :)

А что, в VHDL, сколько битов задашь, столько и будет в проекте?

Даже если переменная integer изменяется в диапазоне 1, 2, 3?

 

Или это уже вообще не относится к сфере ответственности языка? А к синтезатору?

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


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

Вот вы разные высокоуровневые SV/VHDL-2008 обсуждаете, скажите, вы ресурсы ПЛИС и градации скорости экономите или с запасом закладываете?

Ведь, наверное, нужен запас ресурсов и дополнительная градация скорости на реализацию "несчастливых" участков программы... Тех участков, которые человек может лучше машины сделать.

Или вы выискиваете несчастливые конструкции HDL и стараетесь их не применять?

 

Вообще, вы как высокоуровнево пишете на HDL, как-то иначе, чем низкоуровнево?

 

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


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

Не впихнет. Вернее, впихнет, но потом ненужное отрежет. Как плохому танцору. :)

А что, в VHDL, сколько битов задашь, столько и будет в проекте?

Даже если переменная integer изменяется в диапазоне 1, 2, 3?

 

Или это уже вообще не относится к сфере ответственности языка? А к синтезатору?

 

"лишние" биты, значение которых нигде не используется, удалятся любым тулзом.

 

Вопрос в том, что бит формально используется, но всегда равен нулю. Например, как в случае со счетчиком, значение которого потом считывается, например, по широкой шине. В этом случае подсказка синтезатору позволяет ему соптимизировать лучше. По крайней мере, в теории.

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


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

Вообще, вы как высокоуровнево пишете на HDL, как-то иначе, чем низкоуровнево?

стараюсь писать красиво и почему то это очень ровно ложиться на архитектуру целевой плис :biggrin:

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


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

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

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

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

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

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

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

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

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

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