Gabe
New Contributor
7 years agoHow can I read button presses through the Avalon bus?
Hello,
I have been trying to create a simple Avalon-MM Master to read from a PIO slave (push buttons), however I am reading only 0's on the readdata line.
Relevant code:
wire [31:0] master_0_master_address;
wire master_0_master_read;
wire [31:0] master_0_master_readdata;
reg [1:0]currentState;
reg [1:0]nextState;
reg [31:0] data;
reg [31:0] address;
reg read;
assign master_0_master_address = address;
assign master_0_master_read = read;
assign led11[3:0] = ((reset_reset_n == 0)) ? 4'b1111 : (data[3:0]);
always @ (*) begin
if(~reset_reset_n)
begin
data <= 32'b0;
nextState <= 2'b0;
end
else begin
case (currentState)
2'b0: begin
address <= 32'b100000;
read <= 1;
if(master_0_master_waitrequest)
nextState <= 2'b10;
else
nextState <= 2'b1;
end
2'b1: begin
read <= 0;
data <= master_0_master_readdata;
nextState <= 2'b0;
end
2'b10: begin
if(master_0_master_waitrequest)
nextState <= 2'b10;
else
nextState <= 2'b1;
end
endcase
end
end
always @ (posedge clk_clk or negedge reset_reset_n)
begin
if(~reset_reset_n)
currentState <= 0;
else
currentState <= nextState;
endAnd the Qsys system: