对Verilog的简单问题我似乎无法找到答案:

时间:2016-07-12 07:15:44

标签: verilog

  1. 在Verilog模块中,参数的正确术语是什么?

  2. 如果变量未定义,则默认为什么?

2 个答案:

答案 0 :(得分:6)

Verilog中的module表示仅用于按名称对对象进行分组并复制这些对象的层次结构。运行模拟或合成到硬件时,该层次结构会变平。模块的端口将两个信号名称连接在一起,并且在展平后,只有一个信号具有多个名称。因此,modules通过端口进行结构连接。

术语参数是软件中的术语,通常表示在程序上调用例如函数或任务的例程时复制或引用的对象。

对于第二个问题,如果在没有定义变量的情况下引用变量,那通常是编译器错误。对于懒惰的工程师来说,有一个例外。如果在端口连接中引用未定义的变量,则该变量将隐式声明为1位连线。如果没有任何东西驱动该线路,则它具有默认值' z在任何表达式中被视为' x。

此功能最初用于自动生成的门级网表,其中每个信号都是1位线,但会导致RTL描述出现许多问题。我们强烈建议使用编译器指令`default_nettype none来防止粗略的拼写错误。

答案 1 :(得分:3)

他们被称为端口。 Verilog模块不能像函数一样被调用,因为它意味着代表具有输入,输出,双向引脚等的硬件模块,因此它只能被实例化。这些实例可以通过其端口再次相互连接。这些端口将数据/值/信号输入和输出模块。因此,端口具有与它们相关的方向。与函数中的参数不同,该函数仅在调用函数时传递值,一旦与端口建立连接(通过wire / reg(register)/ ...),对连接变量的任何更改都将传输到模块通过端口自动。

链接到模块端口说明。

http://www.asic-world.com/verilog/syntax2.html

Verilog确实有接受争论的功能和任务。

http://www.asic-world.com/verilog/task_func1.html

未初始化的变量采用由" x"表示的未知值。 。

它有一些细微差别

未连接的线,tri将由" z"表示三态。

任何4个状态逻辑 - reg,整数,时间将默认为" x" 实型为0。