123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- // (C) 2001-2018 Intel Corporation. All rights reserved.
- // Your use of Intel Corporation's design tools, logic functions and other
- // software and tools, and its AMPP partner logic functions, and any output
- // files from any of the foregoing (including device programming or simulation
- // files), and any associated documentation or information are expressly subject
- // to the terms and conditions of the Intel Program License Subscription
- // Agreement, Intel FPGA IP License Agreement, or other applicable
- // license agreement, including, without limitation, that your use is for the
- // sole purpose of programming logic devices manufactured by Intel and sold by
- // Intel or its authorized distributors. Please refer to the applicable
- // agreement for further details.
- // $Id: //acds/rel/18.1std/ip/merlin/altera_customins_xconnect/altera_customins_xconnect.sv.terp#1 $
- // $Revision: #1 $
- // $Date: 2018/07/18 $
- // $Author: psgswbuild $
- // -------------------------------------------------------
- // Custom Instruction Interconnect
- //
- // -------------------------------------------------------
- `timescale 1 ns / 1 ns
- module nios2_uc_nios2_custom_instruction_master_multi_xconnect
- (
- // -------------------
- // Custom instruction masters
- // -------------------
- output [31 : 0] ci_master0_dataa,
- output [31 : 0] ci_master0_datab,
- input [31 : 0] ci_master0_result,
- output [ 7 : 0] ci_master0_n,
- output ci_master0_readra,
- output ci_master0_readrb,
- output ci_master0_writerc,
- output [ 4 : 0] ci_master0_a,
- output [ 4 : 0] ci_master0_b,
- output [ 4 : 0] ci_master0_c,
- output [31 : 0] ci_master0_ipending,
- output ci_master0_estatus,
- output ci_master0_clk,
- output ci_master0_clken,
- output ci_master0_reset,
- output ci_master0_reset_req,
- output ci_master0_start,
- input ci_master0_done,
- // -------------------
- // Custom instruction slave
- // -------------------
- input ci_slave_clk,
- input ci_slave_clken,
- input ci_slave_reset,
- input ci_slave_reset_req,
- input ci_slave_start,
- output ci_slave_done,
- input [31 : 0] ci_slave_dataa,
- input [31 : 0] ci_slave_datab,
- output [31 : 0] ci_slave_result,
- input [ 7 : 0] ci_slave_n,
- input ci_slave_readra,
- input ci_slave_readrb,
- input ci_slave_writerc,
- input [ 4 : 0] ci_slave_a,
- input [ 4 : 0] ci_slave_b,
- input [ 4 : 0] ci_slave_c,
- input [31 : 0] ci_slave_ipending,
- input ci_slave_estatus
- );
- wire select0;
- // -------------------------------------------------------
- // Wire non-control signals through to each master
- // -------------------------------------------------------
- assign ci_master0_dataa = ci_slave_dataa;
- assign ci_master0_datab = ci_slave_datab;
- assign ci_master0_n = ci_slave_n;
- assign ci_master0_a = ci_slave_a;
- assign ci_master0_b = ci_slave_b;
- assign ci_master0_c = ci_slave_c;
- assign ci_master0_ipending = ci_slave_ipending;
- assign ci_master0_estatus = ci_slave_estatus;
- assign ci_master0_clk = ci_slave_clk;
- assign ci_master0_clken = ci_slave_clken;
- assign ci_master0_reset_req = ci_slave_reset_req;
- assign ci_master0_reset = ci_slave_reset;
- // -------------------------------------------------------
- // Figure out which output is selected, and use that to
- // gate control signals
- // -------------------------------------------------------
- assign select0 = ci_slave_n >= 252 && ci_slave_n < 256;
- assign ci_master0_readra = (select0 && ci_slave_readra);
- assign ci_master0_readrb = (select0 && ci_slave_readrb);
- assign ci_master0_writerc = (select0 && ci_slave_writerc);
- assign ci_master0_start = (select0 && ci_slave_start);
- // -------------------------------------------------------
- // Use the select signal to figure out which result to mux
- // back
- // -------------------------------------------------------
- assign ci_slave_result = {32{ select0 }} & ci_master0_result
- ;
- assign ci_slave_done = select0 & ci_master0_done
- ;
- endmodule
|