OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk
/* **************************************************************************** This Source Code Form is subject to the terms of the Open Hardware Description License, v. 1.0. If a copy of the OHDL was not distributed with this file, You can obtain one at http://juliusbaxter.net/ohdl/ohdl.txt Description: mor1kx processor avalon bus bridge Copyright (C) 2013 Stefan Kristiansson ***************************************************************************** */ `include "mor1kx-defines.v" module mor1kx_bus_if_avalon #( parameter OPTION_AVALON_BURST_LENGTH = 4 ) ( input clk, input rst, output cpu_err_o, output cpu_ack_o, output [31:0] cpu_dat_o, input [31:0] cpu_adr_i, input [31:0] cpu_dat_i, input cpu_req_i, input [3:0] cpu_bsel_i, input cpu_we_i, input cpu_burst_i, output [31:0] avm_address_o, output [3:0] avm_byteenable_o, output avm_read_o, input [31:0] avm_readdata_i, output [3:0] avm_burstcount_o, output avm_write_o, output [31:0] avm_writedata_o, input avm_waitrequest_i, input avm_readdatavalid_i ); localparam IDLE = 4'b0001; localparam READ = 4'b0010; localparam BURST = 4'b0100; localparam WRITE = 4'b1000; reg [3:0] state; always @(posedge clk) begin case (state) IDLE: begin if (cpu_req_i & !avm_waitrequest_i) begin if (cpu_we_i) state <= WRITE; else if (cpu_burst_i) begin state <= BURST; end else state <= READ; end end READ: begin if (avm_readdatavalid_i) state <= IDLE; end BURST: begin /* cpu_burst_i deasserts when the last burst access starts */ if (!cpu_burst_i & avm_readdatavalid_i) state <= IDLE; end WRITE: begin state <= IDLE; end endcase end assign avm_address_o = cpu_adr_i; assign avm_read_o = cpu_req_i & !cpu_we_i & (state == IDLE); assign avm_byteenable_o = cpu_bsel_i; assign avm_write_o = cpu_req_i & cpu_we_i & (state == IDLE); assign avm_burstcount_o = cpu_burst_i & (state != BURST) ? OPTION_AVALON_BURST_LENGTH : 4'd1; assign avm_writedata_o = cpu_dat_i; assign cpu_err_o = 0; assign cpu_ack_o = avm_readdatavalid_i | state == WRITE; assign cpu_dat_o = avm_readdata_i; endmodule

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_processor/] [mor1kx-3.1/] [rtl/] [verilog/] [mor1kx_bus_if_avalon.v] - Blame information for rev 38

Details | Compare with Previous | View Log

Line No. Rev Author Line

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.