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

Использование input в качестве параметра

Вопрос простой, не ссудите строго за глупость. 

У модуля имеется input offset. Возможно ли как-то использовать его значение в операторе конкатенации, то есть примерно следующее: 

parameter DATA = 64;

input offset;
output [DATA-1:0] a;

wire [DATA-1:0] b;
wire [DATA-1:0] c;

assign a = {b[offset*8-1:0], c[ 4'd8 * ( 4'd8 - offset) -1:0]};

Понятно, что так делать нельзя. Есть ли какие-то альтернативы или вариантов нет???

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


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

Тут какой-то мультиплексор напрашивается, зачем ещё что-то выдумывать)

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


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

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

34 minutes ago, Ink1918 said:

Вопрос простой, не ссудите строго за глупость. 

У модуля имеется input offset. Возможно ли как-то использовать его значение в операторе конкатенации, то есть примерно следующее: 


...
input offset;
...
assign a = {b[offset*8-1:0], c[ 4'd8 * ( 4'd8 - offset) -1:0]};

Понятно, что так делать нельзя. Есть ли какие-то альтернативы или вариантов нет???

Можно но немного сложнее  - так как выборка слайса переменной ширины из вектора запрещена то можно извратится  cо сдвигами и масками.

wire [DATA_WH-1:0] mask_c = {DATA_WH{1'b1}}>>(8*offset);

assign a = (b<<(8*offset)) | (c & mask_c);

Удачи! Rob.

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


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

20 minutes ago, doom13 said:

Тут какой-то мультиплексор напрашивается, зачем ещё что-то выдумывать)

ну, здесь конкретно я просто привел пример для наглядности, но в реальной жизни значение offseta может достигать большого значения, и мультиплексор мне видится не самым оптимальным решением, но, возможно, я и не прав)

 

17 minutes ago, RobFPGA said:

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

Можно не немного сложнее  - так как выборка слайса переменной ширины из вектора запрещена то можно извратится  cо сдвигами и масками.


wire [DATA_WH-1:0] mask_c = {DATA_WH{1'b1}}>>(8*offset);

assign a = (b<<(8*offset)) | (c & mask_c);

Удачи! Rob.

спасибо, интересное решение)  

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


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

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

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

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

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

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

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

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

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

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