From 2474b4935fb461a8aa9de01b9d1728e2ff418348 Mon Sep 17 00:00:00 2001 From: Neel Date: Mon, 16 Jul 2018 14:52:49 +0530 Subject: [PATCH] parametrized the config interfaces to better usability --- src/bsv/bsv_lib/gpio.bsv | 158 ++++++++++++++++-------------- src/bsv/bsv_lib/gpio_instance.bsv | 39 ++------ 2 files changed, 97 insertions(+), 100 deletions(-) diff --git a/src/bsv/bsv_lib/gpio.bsv b/src/bsv/bsv_lib/gpio.bsv index 5e0dc9a..ad0650f 100644 --- a/src/bsv/bsv_lib/gpio.bsv +++ b/src/bsv/bsv_lib/gpio.bsv @@ -24,20 +24,34 @@ package gpio; /*============================ */ `include "instance_defines.bsv" - interface GPIO#(numeric type ionum); + interface GPIO_config#(numeric type ionum); (*always_ready,always_enabled*) method Action gpio_in (Vector#(ionum,Bit#(1)) inp); + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_out; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_out_en; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_DRV0; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_DRV1; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_DRV2; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_PD; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_PPEN; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_PRG_SLEW; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_PUQ; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_PWRUPZHL; + (*always_ready*) method Vector#(ionum,Bit#(1)) gpio_PWRUP_PULL_EN; + endinterface + interface GPIO#(numeric type ionum); + interface GPIO_config#(ionum) pad_config; interface AXI4_Lite_Slave_IFC#(`ADDR,`DATA,`USERSPACE) axi_slave; endinterface @@ -167,76 +181,78 @@ package gpio; endrule interface axi_slave= s_xactor.axi_side; - method Action gpio_in (Vector#(ionum,Bit#(1)) inp); - for(Integer i=0;i