Verilog 案例陈述

您所在的位置:网站首页 verilog中case语句无default Verilog 案例陈述

Verilog 案例陈述

2023-09-08 01:12| 来源: 网络整理| 查看: 265

Verilog 案例陈述

case 语句检查给定表达式是否与列表和分支中的其他表达式之一匹配。它通常习惯于实现一个设备。

如果测量单位有许多条件要检查并且将综合到优先级编码器而不是设备中,则 if-else 结构可能不适用。

在 Verilog 中,case 语句包括 Verilog 关键字、case(“casez”、“casex”)和 endcase 之间的所有代码。案例语句可以是多选结构,大致类似于护理 if-else-if 语句中的 Associate。

句法

Verilog case 语句以 case 关键字开始,以 endcase 关键字结束。

括号区域单元内的表达式旨在专门评估一次,并与它们写入顺序内的替代列表进行比较。

并且选择匹配给定的表达计量单位的语句失效。多个语句的块应该被排序并且在开始和结束之间。

case () case_item1 : case_item2, case_item3 : case_item4 : begin end default: endcase

如果没有任何 case 与给定表达式匹配,则默认项目测量单位内的语句无效。默认语句不是强制性的,并且在整个案例语句中只有一个默认语句。Case 语句是嵌套的。

如果没有任何项目与表达式匹配,并且没有给出默认语句,则执行将退出 case 块而不做一件事。

例子

以下 vogue 模块包含一个 2 位选择信号,用于将三个不同的 3 位输入中的一个路由到声明为 out 的标志。

case 语句用于将正确的输入分配给支持 sel 值的输出。由于 sel 可以是 2 位信号,因此它将有 20 个组合,从 0 到 3。如果 sel 为 3,则默认语句有助于将输出线输出为零。

module my_mux (input [2:0] a, b, c, // three 3-bit inputs [1:0]sel, // 2-bit opt for signal to choose on from a, b, c output reg [2:0] out); // Output 3-bit signal // invariably block is dead whenever a, b, c or sel changes in value invariably @ (a, b, c, sel) begin case(sel) 2'b00 : out = a; // If sel=0, output can be a 2'b01 : out = b; // If sel=1, output is b 2'b10 : out = c; // If sel=2, output is c default : out = 0; // If sel is something, out is commonly zero endcase end endmodule 案例声明标题

case 语句头由 case ("casez", "casex") 关键字和后跟 case 表达式组成,通常都在一行代码中。

将 full_case 或 parallel_case 指令添加到 case 语句时,指令度量单位作为注释实时添加在 case 语句标题尖端的 case 表达式之后以及随后代码行的任何 case 事物之前。

案例项目

case 项是习惯于与 case 表达式进行比较的位、向量或 Verilog 表达式。

与“C”等不同的高级编程语言不同,Verilog case 语句包含隐式 break 语句。

与此 case 表达式匹配的第一个 case 项会导致相应的 case 项语句失效,因此为此跳过的所有其余的 case 事物度量单位都会经历 case 语句。

案例项目说明

如果 case 项与此 case 表达式匹配,则 case 项语句是一个或多个 Verilog 语句失效。与 VHDL 不同,Verilog 案例本身可以是表达式。

为了改变对 Verilog 代码文档的解析,如果对于特定的案例项目超过一个语句是死的,则应该将 Verilog 案例项目语句包含在关键字“开始”和“结束”之间。

凯斯

在 Verilog 中,有一个 casez 语句,它是 case 语句的一种变体,可以启用“z”和“?”。在整个案例比较过程中将值视为“不关心”值。

“Z”和“?” 度量单位被视为无关紧要,它们是在 case 表达式中还是在 case 项中。

当秘密编写带有“不关心”的案例陈述时,请使用 casez 陈述并使用“?” 字符而不是大小写中的“z”字符以达到“不关心”位的目的。

卡塞克斯

在 Verilog 中,有一个 casex 语句,它是 case 语句的一种变体,它允许在整个比较过程中将“z”、“?”和“x”值视为“不关心”值。

“x”、“z”和“?” 度量单位被视为无关紧要,它们是在 case 表达式中还是在 case 项中。

完整的案例陈述

完整的 case 语句可以是 case 语句,其中所有可获取的 case-expression 二进制模式都与 case 项或 case 默认值匹配。

如果 case 语句不包含 case 默认值,并且可以查找与任何打印的 case 内容不匹配的二进制 case 表达式,则 case 语句不完整。

完整的 case 语句可以是 case 语句,其中每个可获取的二进制、非二进制以及二进制和非二进制模式的混合都被装箱为 case 语句中的 case 项。

Verilog 不希望 case 语句是完整的合成或高密度脂蛋白模拟,但 Verilog 的 case 语句是通过添加一个 case 默认值来完成的。VHDL 希望案例陈述是完整的高密度脂蛋白模拟,这通常需要 Associate in Nursing “others” 条款。

平行案例陈述

并行 case 语句可以是 case 语句,它只能将 case 表达式与一个 case 项匹配。

如果可以查找可能匹配一个案例项目的案例表达式,则匹配的案例事物度量单位表示为重叠案例事物,因此案例语句不是并行的。

硬件示意图

详细说明 RTL 代码以获得表示 4 对 1 多路复用器的硬件原理图。

执行上述设计后,当 sel 为 3 时输出为零,对应于其他值的分配输入。

ncsim> run [0] a=0x4 b=0x1 c=0x1 sel=0b11 out=0x0 [10] a=0x5 b=0x5 c=0x5 sel=0b10 out=0x5 [20] a=0x1 b=0x5 c=0x6 sel=0b01 out=0x5 [30] a=0x5 b=0x4 c=0x1 sel=0b10 out=0x1 [40] a=0x5 b=0x2 c=0x5 sel=0b11 out=0x0 ncsim: *W,RNQUIE: Simulation is complete.

在 case 语句中,只有当表达式的每一位都与包括 0、1、x 和 z 在内的选项之一匹配时,比较才会成功。在上面的示例中,如果 sel 中的任何位是 x 或 z,则将执行默认语句,因为没有其他替代项匹配。在这种情况下,输出将全为零。

ncsim> run [0] a=0x4 b=0x1 c=0x1 sel=0bxx out=0x0 [10] a=0x3 b=0x5 c=0x5 sel=0bzx out=0x0 [20] a=0x5 b=0x2 c=0x1 sel=0bxx out=0x0 [30] a=0x5 b=0x6 c=0x5 sel=0bzx out=0x0 [40] a=0x5 b=0x4 c=0x1 sel=0bxz out=0x0 [50] a=0x6 b=0x5 c=0x2 sel=0bxz out=0x0 [60] a=0x5 b=0x7 c=0x2 sel=0bzx out=0x0 [70] a=0x7 b=0x2 c=0x6 sel=0bzz out=0x0 [80] a=0x0 b=0x5 c=0x4 sel=0bxx out=0x0 [90] a=0x5 b=0x5 c=0x5 sel=0bxz out=0x0 ncsim: *W,RNQUIE: Simulation is complete.

如果设计中的案例陈述在案例项目备选方案中具有 x 和 z,则结果将有所不同。

module mux (input [2:0] a, b, c, output reg [2:0] out); // Case items have x and z, and sel has to match the exact value for // output to be assigned with the corresponding input always @ (a, b, c, sel) begin case(sel) 2'bxz: out = a; 2'bzx: out = b; 2'bxx: out = c; default: out = 0; endcase end endmodule case 和 if-else 的区别

case 语句在两个方面与 if-else-if 不同,例如:

if-else块中给出的表达式更通用,而在 case 块中,单个表达式与多个项目匹配。 当表达式中有 X 和 Z 值时,案例将提供确定的结果。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3