FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6061 Discussions

Integration of a Noc in NIOS system

Honored Contributor II



i try to bulid a multiprocessor Nios system but i want to connect the processors to a NoC IP which requires data, adresses, and some other signals. 

My problem is if I must use the avalon interface to connect this IP with the NIOS processor? and how? 

Can I connect my NoC IP directly to the NIOS? 


Is there someone who has tried to integrated a NoC in a NIOS embedded system. 


Please help me... 


0 Kudos
4 Replies
Honored Contributor II

If speed is not a huge issue I would write a simple block that acts as a wrapper. Maybe with a small buffer to make sure of no loss.  


This is very easy, if you know vhdl or verilog. You write your little block with an interface to your NoC component and one interface towards avalon. This should have a clock, reset, address, read, read_data, write, write_data and whatever else you need and then you go into SOPC builder and add your own component.
Honored Contributor II

Thank u for your reply, but is there a standard interface to follow to be able to connect my IP to the avalon bus?. And how can I manage the fact that this IP needs to communicate with more than one processor in my system. How Avalon supports this?? 


Can u please give me a VHDL example to guide me to write this block? 


Honored Contributor II

The easiest solution would probably to have multiple slave ports in your unit, one for each processor. I'm not to clear on how avalon work to be able to do something more clever. Maybe someone else on this forum has a better idea. 


I don't have time at the moment to sit down and work on your problem, unfortunatly I've got problems to work on myself :) 


I guess a start would be to read about SOPC components and the avalon bus . If you do a sopc component it will take care of all the avalon code for you. You just add a simple interface in your vhdl code, it could look something like this 


entity noc_wrapper is 

port ( 

-- Avalon interface (slave 0)  

clk : in std_logic; 

rst : in std_logic; 

adr : in std_logic_vector(x downt 0); 

wr : in std_logic; 

wr_data : in std_logic_vector(31 downto 0); 

rd : in std_logic; 

rd_data : out std_logic_vector(31 downto 0);  


-- Avalon interface (slave 1)  

-- add a duplicate of each extra process  


-- NoC interface  


end entity; 




some code to mux the traffic
Honored Contributor II

See my reply to your parallel post elsewhere on this system. 


(Note) - This forum discourages parallel posts of the same question.