给出的模块如下:
module mod_a ( output out1, output out2, input in1, input in2, input in3, input in4);
module top_module (
input a,
input b,
input c,
input d,
output out1,
output out2
);
mod_a name( //以后这么写就完事了,直接
//mod_a name(out1,out2,a,b,c,d);可能会不对应出问题
//题目看似是这个顺序,其实真实的定义里不是,坏得很。
.out1(out1),
.out2(out2),
.in1(a),
.in2(b),
.in3(c),
.in4(d));
endmodule
Problem 22:
module top_module (
input clk,
input d,
output q
);
wire a, b; // 声明两个wire变量,命名为a, b
// 对my_dff进行了三次实例化,用了三个不用的名字 (d1, d2, and d3).
// 端口使用了位置连接的方式( input clk, input d, output q)
my_dff d1 ( clk, d, a );
my_dff d2 ( clk, a, b );
my_dff d3 ( clk, b, q );
endmodule
Problem 24:
module top_module (
input clk,
input [7:0] d,
input [1:0] sel,
output reg [7:0] q
);
wire [7:0] o1, o2, o3; // 声明每一个触发器的输出
// Instantiate three my_dff8s
my_dff8 d1 ( clk, d, o1 );
my_dff8 d2 ( clk, o1, o2 );
my_dff8 d3 ( clk, o2, o3 );
// 这是实现4选1选择器的一种方法
always @(*) // 组合逻辑always块
case(sel)
2'h0: q = d;
2'h1: q = o1;
2'h2: q = o2;
2'h3: q = o3;
endcase
endmodule