Параметризованная ширина нетто в Verilog

Возможно ли что-то подобное?

parameter width; wire[width-1] a_net = (width)'b0;

Мне в основном нужна переменная для управления шириной правой стороны. Я планирую использовать это на испытательном стенде, где мне просто нужно изменить parameter width at the beginning of the file, и этот параметр устанавливает чистую ширину во всех других случаях 'a_net'.

Если это не сработает - есть ли другое решение?

Спасибо, Джим


person Blackadder    schedule 23.05.2013    source источник


Ответы (2)


Я думаю, вам также нужно указать LSB вашего провода:

parameter WIDTH = 16;

wire [WIDTH-1:0] a_net = 0;
person Community    schedule 23.05.2013

В этом примере вы можете просто использовать localparam вместо постоянного провода.

localparam ZERO = 'b0; // Syntax for RHS discussed below.

Для аргументов RHS (правая сторона) вы можете использовать оператор репликации.

{ WIDTH {1'b0}}; //Repeats 1'b0 WIDTH times.

Все единицы

{ WIDTH {1'b1}}; 

Для максимального количества подписанных (MSB == 0) сочетания конкатинации и репликации оба используют {}

{1'b0, { WIDTH-1 { 1'b1 }} };

Начиная с 2012 года SystemVerilog может использовать '0 для 0 той же ширины, что и левая сторона. '1 Все единицы.

person Morgan    schedule 23.05.2013