Я новичок в Verilog. Мне нужно понять логику тестового примера, но я испытываю затруднения из-за логики этих переменных.
Они 'определяют F и G целочисленных типов. Iпрочитайте, что параметры являются константами.
'define F 32
'define G 0
module M(...);
parameter pMaxPacketsSize =1024;
localparam pTotalBits=3*'G;
localparam pForcePktSize=(pMaxPacketsSize-'F);
localparam pLastPacketSize =((pTotalBits-1)%(pForcePktSize))+1;
localparam pNumTransactions=((pTotalBits-1)/(pForcePktSize))+1;
localparam pPortSize=(pNumTransactions>1)?pMaxPacketsSize:((((pTotalBits-1)/32)+1)*32)+'F;
Поскольку G определено как 0, каково будет значение ForcePacketsize. Я предпринял попытку двоичного вычитания и достиг 128 (7 бит) [Это правильно?].[0-32]. Все эти операции должны выполняться в двоичной арифметике. Я хочу узнать значение этих параметров (pForcePktSize, pLastPacketSize, PNumTransactions).
Еще одно утверждение, которое я хочу понять, заключается в следующем:
wire[pPortSize-1:0]D;
wire[pNumTransactions-1:0] t;
assign t=1'b1<<D[14:0];
Я знаю, что он имеет тип: [размер] [основание] [значение] означает 1 в двоичном формате, затем сдвиг влево, но как это присваивается массиву (будет 100000000000000 14 нулей изатем 1)
Я пытался запустить онлайн на некоторых IDE, но получаю ошибку, от которой отказываюсь.