1.
下示的工程中8-bit宽的 2 对 1 多路复用器不起作用,尝试修复代码。注意:当sel = 1时,输出a,否则输出b。正确的波形图如下所示:

请修复下列代码:
module top_module (
input sel,
input [7:0] a,
input [7:0] b,
output [7:0] out
);
assign out = (~sel & a) | (sel & b);
endmodule
参考代码:
[content_control]
[/content_control]
2.
如下图所示:a,b,c为输入信号, out 为输出信号。实现下图波形
正确的波形图如下所示:
请完善下列代码:
module top_module (input a, input b, input c, output out);
endmodule
参考代码:
[content_control]
[/content_control]
3.
下示的工程中 4 对 1 多路复用器不起作用,尝试修复代码。要求使用提供的2 对 1 多路复用器:
module mux2 ( input sel, input [7:0] a, input [7:0] b, output [7:0] out );
正确的波形图如下所示:
请修复下列代码:
module max2 (input sel, input [7:0]a, input [7:0] b, output [7:0] out);
assign out = sel ? b : a;
endmodule
module top_module (
input [1:0] sel,
input [7:0] a,
input [7:0] b,
input [7:0] c,
input [7:0] d,
output [7:0] out
);
wire mux0, mux1;
mux2 mux0 ( sel[0], a, b, mux0 );
mux2 mux1 ( sel[1], c, d, mux1 );
mux2 mux2 ( sel[1], mux0, mux1, out );
endmodule
参考代码:
[content_control]
[/content_control]
4.
下示的工程中带有零标志(zero flag)的加减法器不起作用,尝试修复代码。
输入为do_sub ;
- do_sub == 0 , out = a +b;
- do_sub == 1 , out = a -b;
输入信号 a,b
输出信号out 为运算结果。
输出信号result_is_zero: 如果out == 0 ,那么result_is_zero = 1; 否则为0
正确的波形图如下所示:

请修复下列代码:
module top_module (
input do_sub,
input [7:0] a,
input [7:0] b,
output reg [7:0] out,
output reg result_is_zero
);
always @(*) begin
case (do_sub)
0: out = a + b;
1: out = a - b;
endcase
if (~out)
result_is_zero = 1;
end
endmodule
参考代码:
[content_control]
[/content_control]
接下来的问题是根据组合逻辑的波形图,写出逻辑表达式。
5. 根据下图中的波形输出结果:其中 a,b 位输入信号; q 为输出信号。
波形图如下:

完善下列代码:
module top_module (
input a,
input b,
output q
);
//assign q = ...
endmodule
6. 根据下图输出结果。 其中a,b,c,d为输入信号;q为输出信号。
波形图如下:

完善下列代码:
module top_module (
input a,
input b,
input c,
input d,
output q
);
//assign q = ...
endmodule
参考代码:
[content_control]
[/content_control]
7. 根据下图输出结果。其中a,b,c,d为输入信号;q为输出信号。
波形图如下:
完善下列代码:
module top_module (
input a,
input b,
input c,
input d,
output q
);
//assign q ...
endmodule
参考代码:
[content_control]
[/content_control]
8. 根据下图输出结果。 其中a,b,c,d,e为输入信号,q为输出信号。提示:c的状态决定输出结果。
波形图如下:


完善下列代码:
module top_module (
input [3:0] a,
input [3:0] b,
input [3:0] c,
input [3:0] d,
input [3:0] e,
output [3:0] q
);
endmodule
参考代码:
[content_control]
[/content_control]
接下来的问题是根据时序电路的波形图,根据波形图实现电路。
9.时序电路,当检测到输入信号a 为 1 后; q输出为0.
波形图如下:

完善下列代码:
module top_module (
input clk,
input a,
output q
);
endmodule
10.根据输入信号clock,a,得到输出结果p,q。注意 clock 和 q是边沿对齐的。
波形图如下:

完善下列代码:
module top_module (
input clock,
input a,
output reg p,
output reg q
);
endmodule
参考代码:
[content_control]
[/content_control]
11. 根据下图输入clk, a,得到输出结果q。注意a和clk 是同步的。
波形图如下;

完善下列代码:
module top_module (
input clk,
input a,
output reg [3:0] q
);
endmodule
参考代码:
[content_control]
[/content_control]
12. testbench练习1: 输出波形clk
实现仿真testbench里的时钟,波形图如下所示:

13. testbench练习2:
实现下列波形:

完善下列代码:
module top_module ( output reg A, output reg B ); initial begin end endmodule
参考代码:
[content_control]
[/content_control]