Skip to content

Commit 11d2931

Browse files
committed
如果採用,此提交將新增新的範例
修改項目: 新增第五章兩個範例。 vector跟op vector做的是向量的存取,op做的是運算子的計算。 模組: 議題37
1 parent 659e43b commit 11d2931

4 files changed

Lines changed: 92 additions & 0 deletions

File tree

VerilogHDL_Practice/CH5/op.v

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module op (A, B, Ci, Co, S, X, Y, Z);
2+
input [3:0] A, B;
3+
input Ci;
4+
output Co;
5+
output [3:0] S, X, Y, Z;
6+
7+
assign {Co, S} = (A + B + Ci);
8+
assign X = {A[2:0], A[3]};
9+
assign Y = (B ~^ 4'b1010);
10+
assign Z = (~A) & B;
11+
12+
endmodule // op

VerilogHDL_Practice/CH5/op_test.v

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module op_test ();
2+
3+
reg [3:0] A, B;
4+
reg Ci = 1'b0;
5+
wire [3
6+
:0] Co, S, X, Y, Z;
7+
8+
op UUT (.A(A), .B(B), .Ci(Ci), .Co(Co), .S(S), .X(X), .Y(Y), .Z(Z));
9+
10+
initial begin
11+
A = 4'b0000; B = 4'b0000; Ci = 1'b0;
12+
#100; A = 4'b1100; B = 4'b1010; Ci = 1'b1;
13+
#100; A = 4'b1001; B = 4'b0000; Ci = 1'b0;
14+
#100; A = 4'b0001; B = 4'b1001; Ci = 1'b1;
15+
#100; A = 4'b1110; B = 4'b0100; Ci = 1'b0;
16+
#100; A = 4'b0111; B = 4'b0101; Ci = 1'b1;
17+
#100; A = 4'b1000; B = 4'b1001; Ci = 1'b0;
18+
#100; A = 4'b1010; B = 4'b0000; Ci = 1'b1;
19+
#100; A = 4'b0011; B = 4'b0011; Ci = 1'b0;
20+
#100; A = 4'b1111; B = 4'b1111; Ci = 1'b1;
21+
22+
end
23+
24+
initial begin
25+
#1000;
26+
$finish;
27+
28+
end
29+
30+
endmodule // op_test

VerilogHDL_Practice/CH5/vector.v

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module vector (A, B, W, X, Y, Z);
2+
3+
input [3:0]A;
4+
input [4:0]B;
5+
output [2:0]W;
6+
output [4:0]X;
7+
output [2:0]Y;
8+
output [4:0]Z;
9+
10+
assign W = (A);
11+
assign X = (A);
12+
assign Y = B[3:1];
13+
14+
15+
assign Z = {A[2:0], B[3:2]};
16+
17+
endmodule // vector
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
`timescale 1ns / 1ps
2+
3+
module vector_test ();
4+
5+
reg [3:0] A;
6+
reg [4:0] B;
7+
wire [2:0] W;
8+
wire [4:0] X;
9+
wire [2:0] Y;
10+
wire [4:0] Z;
11+
12+
13+
vector UUT (.A(A), .B(B), .W(W), .X(X), .Y(Y), .Z(Z));
14+
15+
initial begin
16+
A = 4'b1111; B = 5'b11110;
17+
#100 ;A = A >> 1; B = B >> 1;
18+
#100 ;A = A >> 1; B = B >> 1;
19+
#100 ;A = A >> 1; B = B >> 1;
20+
#100 ;A = A >> 1; B = B >> 1;
21+
#100 ;A = A >> 1; B = B >> 1;
22+
#100 ;A = A >> 1; B = B >> 1;
23+
#100 ;A = A >> 1; B = B >> 1;
24+
25+
end
26+
27+
initial begin
28+
#800;
29+
$finish;
30+
31+
end
32+
33+
endmodule // vector_test

0 commit comments

Comments
 (0)