Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Altera_Forum
Honored Contributor I
1,067 Views

How can I write to Custom IP register from C code?

Hello all. I'm designing a custom IP that outputs simple number data in each cycle. 

 

The IP has both Avalon Slave Interface and Avalon Master Slave : 

The Master Interface is connected to On-Chip Memory's Avalon Slave Interface where I will store the output data in. 

The Slave Interface is connected to Nios2's Avalon Master Interface. 

 

 

Here, I want to write data into the custom IP, controlled on C code. I plan to use pointers like this : 

 

| volatile int * adr = (int *) (base address of custom IP); 

| adr = 0x00000001; 

 

I believe Nios2 Processor IP handles the Interface connections so that I can manage this on C code, right? 

 

 

I want to send the 32-bit data into the Custom IP, where it will store the data into it's register (reg). 

The data will be used to initiate the module - work as a 'start shotting numbers' register. 

 

What I just tried is doing it like : 

 

| // Avalon Slave // 

| output reg [31:0] s_rdata; 

|  

| input s_read; 

| input s_write; 

| input [3:0] s_addr; //slave address 

| input [31:0] s_wdata; //slave writedata 

|  

| reg [31:0] start; 

|  

|  

| always @(posedge clk) begin 

| start <= s_wdata; 

| end 

|  

| (later check 'if(start<=32'b1)' to initiate the module's function) 

 

However, for some reason the data wasn't written into 'start' register. 

 

 

 

So the question here is : How can I write to the IP's register, from C code? 

I need to make the work of the IP software-controlled. 

 

Thank you.
0 Kudos
1 Reply
Altera_Forum
Honored Contributor I
44 Views

Hi, 

 

Refer below link 

ftp://ftp.altera.com/up/pub/altera_material/15.1/tutorials/making_qsys_components.pdf 

https://www.alteraforum.com/forum/showthread.php?t=50629 

 

Best Regards, 

Anand Raj Shankar 

(This message was posted on behalf of Intel Corporation)
Reply