OpenCores
URL https://opencores.org/ocsvn/sgmii/sgmii/trunk

Subversion Repositories sgmii

[/] [sgmii/] [trunk/] [sim/] [BFMs/] [mWishboneMstr.v] - Blame information for rev 7

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 jefflieu
/*
2
This file belongs to Subtleware Corporation Pte Ltd 2011
3
 
4
File            :
5
Description     :
6
        Wishbone Master Functional Model
7
        pMode : Single or Pipelined
8
Remarks         :
9
TODO            :
10
Revision        :
11
        Date    Author  Description
12
 
13
*/
14
`timescale 1ns/1ns
15
module mWishboneMstr #(parameter pAddrWidth=32,pDataWidth=32,pMode="Single") (
16
        output  reg o_WbCyc,
17
        output  reg o_WbStb,
18
        output  reg o_WbWEn,
19
        output  reg [pAddrWidth-1:00] ov_WbAddr,
20
        output  reg [pDataWidth-1:00]   ov_WbWrData,
21
        input   [pDataWidth-1:00] iv_WbRdData,
22
        input   i_Ack,
23
        input   i_Stall,
24
        input   i_Rty,
25
        input   i_Clk
26
);
27
        initial
28
                begin
29
                        o_WbCyc <= 1'b0;
30
                        o_WbStb <= 1'b0;
31
                        o_WbWEn <= 1'b0;
32
                        ov_WbAddr <= 0;
33
                        ov_WbWrData <= 0;
34
                end
35
 
36
        task tsk_Write;
37
                input [31:00] i32_Addr;
38
                input [31:00] i32_Data;
39
 
40
                begin
41
                        @(posedge i_Clk);
42
                        o_WbCyc <= 1'b1;
43
                        o_WbStb <= 1'b1;
44
                        o_WbWEn <= 1'b1;
45
                        ov_WbAddr       <= i32_Addr[pAddrWidth-1:00];
46
                        ov_WbWrData <= i32_Data[pDataWidth-1:00];
47
                        #1;
48
                        @(posedge i_Clk);
49
                        while(i_Ack==1'b0) @(posedge i_Clk);
50
                        o_WbCyc <= 1'b0;
51
                        o_WbStb <= 1'b0;
52
                        o_WbWEn <= 1'b0;
53
                        @(posedge i_Clk);
54
                        @(posedge i_Clk);
55
                end
56
        endtask
57
 
58
        task tsk_Read;
59
                input [31:00] i32_Addr;
60
                output [31:00] o32_Data;
61
 
62
                begin
63
                        @(posedge i_Clk);
64
                        o_WbCyc <= 1'b1;
65
                        o_WbStb <= 1'b1;
66
                        o_WbWEn <= 1'b0;
67
                        ov_WbAddr <= i32_Addr[pAddrWidth-1:00];
68
                        #1;
69
                        @(posedge i_Clk);
70
                        while(i_Ack==1'b0) @(posedge i_Clk);
71
                        o32_Data = iv_WbRdData;
72
                        o_WbCyc <= 1'b0;
73
                        o_WbStb <= 1'b0;
74
                        o_WbWEn <= 1'b0;
75
                end
76
        endtask
77
 
78
 
79
 
80
 
81
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.