哪些值将分配给变量。[需要理解程序逻辑]

时间:2018-10-13 11:26:41

标签: verilog system-verilog

我是Verilog的初学者。我需要了解测试用例的逻辑,但是由于这些变量的逻辑,我遇到了困难。

这些'定义整数类型的F和G。我读到该参数是常量。

    '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];

我知道它的类型是:[size] [radix] [value]表示二进制形式的1,然后向左移位,但是如何将其分配给array(将是100000000000000 14个零然后1)

我试图在某些IDE上在线运行,但遇到我放弃的错误。

1 个答案:

答案 0 :(得分:0)

Verilog中的

`define#define中的c相同。它定义了一个文本宏。 `G`F实例化宏,并在解析之前在程序中被它们的上下文替换。

所以,就您而言

localparam pTotalBits=3*'G;
localparam pForcePktSize=(pMaxPacketsSize-'F);

将替换为

localparam pTotalBits=3*0;
localparam pForcePktSize=(pMaxPacketsSize-32);

替换是文本,并且宏的实例化刚刚被其定义替换。没有与宏定义关联的类型。