GPIO

拥有APB接口的GPIO模块

module gio(
input wire PCLK,
input wire PRESETn,
input wire PSEL,
input wire[11:0] PADDR,
input wire PENABLE,
input wire PWRITE,
input wire[31:0] PWDATA,
output wire [31:0] PRDATA,
input wire [3:0] GPIOI,
output wire [2:0] GPIOO);

wire read_en,write_en;
wire [3:0] REG_00 ;
reg [2:0] REG_01;
assign read_en=PSEL & (~PWRITE);
assign write_en=PSEL & (~PENABLE)&PWRITE;
always@(posedge PCLK or negedge PRESETn)begin
if(~PRESETn)begin
    REG_01[2:0]<=3'b0;
    end else if(write_en)begin
        case(PADDR)[11:2])
        10'b1:REG_01[2:0]=PWDATA[2:0];
        default:;
        end case
    end
end
always@(*)begin
if(read_en)begin
    case(PADDR[11:2])
        10'b0:PRDATA[31:0]={28'b0,REG_00[3:0]};
        10'b1:PRDATA[31:0]={29'b0,REG_01[2:0]};
        default:PRDATA[31:0]=32'b0;
        endcase
    end else begin
        PRDATA=32'b0;
    end
end
assgin REG_00[3:0]=GPIOI[3:0];
assgin GPIOO[2:0]=REG_01[2:0];
endmodule
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值