Leka 1 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Мне-то хватит, вопрос в том, что синтезируется в результате? Счетчик на 27 бит, или на 32? Синтезаторы довольно эффективно оптимизируют лишние разряды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Синтезаторы довольно эффективно оптимизируют лишние разряды. Это если диапазон счета ограничен простой логикой внутри. Как в случае простого счетчика, где сравнивают с константой. Но не всегда диапазон вообще вычислим. Например, как самое простое. Хочу измерить длину внешнего импульса, зная при этом, что она не может превышать сто миллионов тактов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Хочу измерить длину внешнего импульса, зная при этом, что она не может превышать сто миллионов тактов. bit [26:0] timer; Ну, будет с запасом на 30% на уход длительности туды-сюды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба интересно, как это на троичные архитектуры ложится? я это к тому, что явное указание диапазона лучше, чем по степеням двойки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба bit [26:0] counter; И я об этом. Вместо того, чтобы работать в категориях "число от нуля до ста миллионов" программист всё равно должен следить сам за шириной регистров, в которые упакуется это число. Примитивизм. Я, кстати, не помню по памяти значения степеней двойки, превышающие 16. VHDL тоже не идеален в этом смысле, так как диапазон целых ограничен практически 32 битами, вместо того, чтобы поддержать в языке целые произвольной длины. Это уже давным-давно не проблема. Но что есть сейчас всяко лучше, чем отсутствие диапазонов вообще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба VHDL тоже не идеален в этом смысле, так как диапазон целых ограничен практически 32 битами, вместо того, чтобы поддержать в языке целые произвольной длины. А в SV есть :) longint 2-state data type, 64-bit signed integer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shtirlits 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба 64-бита принципиально ни чем не лучше, так как на любое ограничение найдется своя задача. Было уже и 4 гигабайта и 2000 год... Шерсть клочьями кое-откуда летит ежедневно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба А в SV есть :) longint 2-state data type, 64-bit signed integer Без ограничения диапазона? Вместо 33-битного счетчика может 64-битный впихнуть? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Нужную разрядность можно задавать только в топ-модуле, а во вложенных модулях брать с запасом, например: 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 - синтезатор выкинет лишние разряды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба На мой - минус. Да, это так. Но уровень Вашего познания гораздо выше среднего. А мне надо среднее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба И я об этом. Вместо того, чтобы работать в категориях "число от нуля до ста миллионов" программист всё равно должен следить сам за шириной регистров, в которые упакуется это число. Примитивизм. Я, кстати, не помню по памяти значения степеней двойки, превышающие 16. Решается точно также, как в VHDL -- подключением библиотеки с небольшой функцией. Как и другие мелочи, разумная плата за преимущества. В более поздних версиях языка этой проблемы нет, но есть проблема с поддержкой от Xilinx. Если кратко. Начинал с VHDL. Перешел на Verilog. Не жалею. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Без ограничения диапазона? Вместо 33-битного счетчика может 64-битный впихнуть? Не впихнет. Вернее, впихнет, но потом ненужное отрежет. Как плохому танцору. :) А что, в VHDL, сколько битов задашь, столько и будет в проекте? Даже если переменная integer изменяется в диапазоне 1, 2, 3? Или это уже вообще не относится к сфере ответственности языка? А к синтезатору? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Вот вы разные высокоуровневые SV/VHDL-2008 обсуждаете, скажите, вы ресурсы ПЛИС и градации скорости экономите или с запасом закладываете? Ведь, наверное, нужен запас ресурсов и дополнительная градация скорости на реализацию "несчастливых" участков программы... Тех участков, которые человек может лучше машины сделать. Или вы выискиваете несчастливые конструкции HDL и стараетесь их не применять? Вообще, вы как высокоуровнево пишете на HDL, как-то иначе, чем низкоуровнево? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 30 марта, 2011 Опубликовано 30 марта, 2011 · Жалоба Не впихнет. Вернее, впихнет, но потом ненужное отрежет. Как плохому танцору. :) А что, в VHDL, сколько битов задашь, столько и будет в проекте? Даже если переменная integer изменяется в диапазоне 1, 2, 3? Или это уже вообще не относится к сфере ответственности языка? А к синтезатору? "лишние" биты, значение которых нигде не используется, удалятся любым тулзом. Вопрос в том, что бит формально используется, но всегда равен нулю. Например, как в случае со счетчиком, значение которого потом считывается, например, по широкой шине. В этом случае подсказка синтезатору позволяет ему соптимизировать лучше. По крайней мере, в теории. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 31 марта, 2011 Опубликовано 31 марта, 2011 · Жалоба Вообще, вы как высокоуровнево пишете на HDL, как-то иначе, чем низкоуровнево? стараюсь писать красиво и почему то это очень ровно ложиться на архитектуру целевой плис Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться