Forum Discussion
Altera_Forum
Honored Contributor
11 years ago`timescale 1 ps / 1 ps
module test_use_manual_input_read_2( //avalon master avm_m0_address, // m0.address avm_m0_byteenable_n, avm_m0_chipselect, avm_m0_read_n, // .read avm_m0_waitrequest, // .waitrequest avm_m0_readdata, // .readdata avm_m0_readdatavalid, //avm_m0_write_n, // .write //avm_m0_writedata, // .writedata clk, // clock.clk reset, // reset.reset seven_seg_out, user_press_count_n, user_press_start_n, done, avm_m0_state, avalon_address, seven_seg_out_2 ); //avalon master output reg [31:0] avm_m0_address; // m0.address output [3:0] avm_m0_byteenable_n;//4'b1111 means full 32bit output avm_m0_chipselect; output avm_m0_read_n; // .read input avm_m0_waitrequest; // .waitrequest input [31:0] avm_m0_readdata; // .readdata input avm_m0_readdatavalid; // output avm_m0_write_n; // .write //output reg [31:0] avm_m0_writedata; // .writedata output reg [31:0] seven_seg_out; output [31:0] seven_seg_out_2; input user_press_start_n; input user_press_count_n; output reg done; reg [2:0] avm_m0_state; output [2:0] avm_m0_state; output [31:0] avalon_address; input clk; // clock.clk input reset; // reset.reset parameter start_address = 32'h00000000; parameter end_address = 32'h00000000+32'd1228800; always@(posedge clk) if(reset) begin avm_m0_state<=0; done<=0; end else begin case (avm_m0_state) 0: if(user_press_start_n)avm_m0_state <=0; else begin avm_m0_state <=1;avm_m0_address<=start_address; end 1: if(avm_m0_waitrequest) avm_m0_state<=1;//request to read else begin avm_m0_state<=2;end//start to read and flip //2: if(avm_m0_readdatavalid) begin seven_seg_out<= avm_m0_readdata; avm_m0_state<=3;end // else begin avm_m0_state<=2;end 2: begin seven_seg_out<= avm_m0_readdata; avm_m0_state<=3;end 3: if(user_press_count_n) avm_m0_state<=3;//request to write else begin avm_m0_state<=4;end 4: if(!user_press_count_n) avm_m0_state<=4;//request to write else begin avm_m0_state<=5; avm_m0_address<=avm_m0_address+32'h4;end 5: if(avm_m0_address==end_address) begin avm_m0_state<=0; done<=1; end else avm_m0_state<=1; endcase end assign avm_m0_byteenable_n = 4'b1111; assign avm_m0_read_n = ~(avm_m0_state==1 || avm_m0_state==2); assign avm_m0_chipselect = (avm_m0_state==1 || avm_m0_state==2); assign avalon_address = avm_m0_address; assign seven_seg_out_2= avm_m0_readdata; endmodule i have re-written the code i use this code to make a custom qsys component (avalon master) i am trying to accessing the sdram which has address 0x0800_0000 until 0xffff_ffff i store my image into sdram at starting address address 0x0800_0000 until 0x0812_c000 does all master reads value from slave according to this diagram?? https://www.alteraforum.com/forum/attachment.php?attachmentid=8887 do i need to read "readdatavalid' value from slave when i perform "read from slave to master"??? i need help urgently hope there is someone can help me thankss