Verilog HDL数字设计与综合(第二版) 第四章课后习题答案

1.模块的基本组成部分有哪些?哪几个部分必须出现?

答:模块的基本组成部分包括:关键字module,模块名、端口列表、端口声明和可选的参数声明,模块内部还有5个基本组成部分是:变量声明、数据流语句、低层模块实例、行为语句块以及任务和函数。

在模块的所有组成部分中,只有module、模块名和endmodule必须出现,其他部分都是可选的,用户可以根据设计的需要随意选用。

2.一个不与外部环境交互的模块是否有端口?模块定义中是否有端口列表?

答:严格意义上讲,一个模块如果与外界没有任何交互,那么自然是不需要有而且是不可能有端口的。在没有端口的情况下,端口列表自然也是不存在的。

3.一个4位并行移位寄存器的I/O引脚如下图所示。写出模块shift_reg的定义,只需写出端口

列表和端口定义,不必写出模块的内部结构。

reg_in [3:0]

移位 寄存器 shift_reg (4位) reg_out [3:0]

clock

答:模块代码如下:

module shift_reg(clock,reg_in,reg_out); input clock; input [3:0] reg_in;

output [3:0] reg_out;

//********XXXXXXX**************

endmodule

4.定义一个顶层模块stimulus,在其中声明reg变量REG_IN(4位)和CLK(1位)以及wire

变量REG_OUT(4位)。在其中调用(实例引用)模块shift_reg,实例名为sr1,使用顺序端口连接。 答:模块代码如下 module stimulus(); reg CLOCK; reg [3:0] REG_IN; wire [3:0] REG_OUT;

//*******connect in order************ shift_reg sr1(CLOCK,REG_IN,REG_OUT);

endmodule

32

Verilog HDL数字设计与综合(第二版)

5.将上题的端口连接方法改为命名连接。 答:模块代码如下 module stimulus(); reg CLOCK; reg [3:0] REG_IN; wire [3:0] REG_OUT;

//*******connect by name************

shift_reg sr1(.clock(CLOCK),.reg_in(REG_IN),.reg_out(REG_OUT));

endmodule

6.写出REG_IN,CLK和REG_OUT的层次名。 答:分别是:stimulus.REG_IN stimulus.CLK stimulus.REG_OUT

7.写出模块实例sr1及其端口clock和reg_in的层次名。 答:分别是:stimulus.sr1 stimulus.sr1.clock stimulus.sr1.reg_in

stimulus.sr1.reg_out

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4