package gpio;
/*==== Package imports ==== */
import TriState ::*;
+ import GetPut ::*;
import Vector ::*;
import BUtils::*;
import ConfigReg ::*;
interface GPIO_func#(numeric type ionum);
(*always_ready,always_enabled*)
- method Action gpio_in (Vector#(ionum,Bit#(1)) inp);
+ interface Put#(Vector#(ionum,Bit#(1)) gpio_in;
(*always_ready*)
- method Vector#(ionum,Bit#(1)) gpio_out;
+ interface Get#(Vector#(ionum,Bit#(1)) gpio_out;
(*always_ready*)
- method Vector#(ionum,Bit#(1)) gpio_out_en;
+ interface Get#(Vector#(ionum,Bit#(1)) gpio_out_en;
endinterface
interface GPIO_config#(numeric type ionum);
(*always_ready*)
interface axi_slave= s_xactor.axi_side;
interface func=interface GPIO_func
- method Action gpio_in (Vector#(ionum,Bit#(1)) inp);
+ interface gpio_in = interface Put#(ionum)
+ method Action put(Vector#(ionum,Bit#(1)) in);
for(Integer i=0;i<ionum;i=i+1)
- datain_register[i]<=inp[i];
+ datain_register[i]<=in[i];
endmethod
- method Vector#(ionum,Bit#(1)) gpio_out;
+ endinterface;
+ interface gpio_out = interface Get#(ionum)
+ method Vector#(ionum,Bit#(1)) get;
Vector#(ionum,Bit#(1)) temp;
for(Integer i=0;i<ionum;i=i+1)
temp[i]=dataout_register[i];
return temp;
endmethod
- method Vector#(ionum,Bit#(1)) gpio_out_en;
+ endinterface;
+ interface gpio_out_en = interface Get#(ionum)
+ method Vector#(ionum,Bit#(1)) get;
Vector#(ionum,Bit#(1)) temp;
for(Integer i=0;i<ionum;i=i+1)
temp[i]=pack(direction_reg[i]);