-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMaster_TB.v
More file actions
65 lines (57 loc) · 1.02 KB
/
Copy pathMaster_TB.v
File metadata and controls
65 lines (57 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
module Master_tb ();
reg clk, reset, start;
reg[1:0] slaveSelect;
wire [7:0] masterDataToSend;
wire [7:0] masterDataReceived;
wire sclk;
wire [0:2] CS;
reg MISO;
wire MOSI;
localparam PERIOD = 5;
reg [7:0] slave = 8'b11010011;
assign masterDataToSend = 8'b11010110;
initial begin
clk = 0;
reset = 0;
start = 1;
slaveSelect = 0;
#PERIOD start = 0;
$display (" Master Slave");
$display ("Initial: %b | %b", masterDataToSend, slave);
#(PERIOD*17) if (masterDataReceived == 8'b11010011) begin
$display ("Final: %b | %b", masterDataReceived, slave);
$display ("Success!");
$finish;
end
else begin
$display ("Failed!");
$finish;
end
end
always begin
#PERIOD clk = ~clk;
end
always @(posedge clk) begin
if (!CS[0]) begin
MISO = slave[0];
slave = slave >> 1;
end
end
always @(negedge clk) begin
if (!CS[0]) begin
slave[7] = MOSI;
end
end
Master M(
clk,
reset,
start,
slaveSelect,
masterDataToSend,
masterDataReceived,
sclk,
CS,
MOSI,
MISO
);
endmodule