Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++

Custom Instruction addition

Altera_Forum
Honored Contributor II
1,402 Views

Dear all 

 

For making the New component for custom instruction addition to Nios processor Five tabs are to be completed  

 

new system component,  

 

1)introduction, 

2)hdl files, 

3)signals, 

4)interfaces, 

5)component wizard 

 

After completing first 4 tabs  

 

In the component wizard(5th) tab 

 

In the parameters box it displays (no top level verilog/vhdl parameters)  

 

I did as suggested in this link 

 

http://blog.ednchina.com/chactor/28614/category.aspx 

 

(please click translate button in the top to convert it to english

 

But in the link given above shows in Component wizard tab in parameters box displays(5th image from top) 

 

CRC_width, 

polynomial_ntal, 

polynomial, 

reflected_input in the Parameters  

 

Why it is happening for me that when i make it my parameters in component wizard tab is empty 

 

Please clear my doubt  

 

Regards 

M Kalyansrinivas
0 Kudos
6 Replies
Altera_Forum
Honored Contributor II
624 Views

Could you show us the code of your top level VHDL/Verilog file for the custom instruction?

0 Kudos
Altera_Forum
Honored Contributor II
624 Views

Hi  

The code is direct as i just took the template of Multicycle logic code  

given in quartusII installation directory  

 

and added a simple direct logic to it  

 

 

// Verilog Custom Instruction Template File for Multi-cycle Logic 

module custominstruction( 

clk, // CPU system clock (always required) 

reset, // CPU master asynchronous active high reset (always required) 

clk_en, // Clock-qualifier (always required) 

start, // Active high signal used to specify that inputs are valid (always required) 

done, // Active high signal used to notify the CPU that result is valid (required for variable multi-cycle) 

dataa, // Operand A (always required) 

datab, // Operand B (optional) 

result // result (always required) 

); 

 

//INPUTS 

input clk; 

input reset; 

input clk_en; 

input start; 

input [31:0] dataa; 

input [31:0] datab; 

//OUTPUTS 

output done; 

output [31:0] result; 

reg [31:0] temp; 

reg[31:0] result; 

// custom instruction logic (note: external interfaces can be used as well) 

always@(posedge clk,posedge reset) 

begin 

if(reset) 

result <= 32'b0; 

else 

if(clk_en) 

begin 

if(start) 

temp <= dataa+datab; 

else if(done) 

result <= temp;  

end  

end 

endmodule 

 

regards 

M Kalyansrinivas
0 Kudos
Altera_Forum
Honored Contributor II
624 Views

Your code doesn't have parameters (I don't know the exact equivalent of "generics" in Verilog) and that's why your parameters list is empty in the component wivard. 

In the example shown on the page you linked, the code they used had multiple parameters, and that's why they appeared on the list. 

 

Having an empty list in your case is perfectly normal, you can carry on and create your custom instruction. 

 

Edit: I never made any custom instruction, but I find it strange that you never set the value of the 'done' output. Instead you seem to be using it as an input...
0 Kudos
Altera_Forum
Honored Contributor II
624 Views

Hi Daixiwen  

 

Thanks alot for clearing my doubt  

 

Ok i will correct the verilog code as you said  

 

I have made it according to the procedure defined but i see the multi cycle ports (start,done,clk_en) doesnt appear in the macro generated in the System.h file  

 

As they are defined as inputs and outputs they should appear in the macro 

 

Please help me out  

 

A similar problem is reported by some other friend keitall 

 

http://alteraforums.com/forum/showthread.php?t=20044 

 

Regards 

M Kalyansrinivas
0 Kudos
Altera_Forum
Honored Contributor II
624 Views

Those signals are automatically generated by the CPU, you don't need to control them through the macro. 

The only arguments you should see in the macro are the instruction operands, and of course the result.
0 Kudos
Altera_Forum
Honored Contributor II
624 Views

Thankyou very much for the reply  

 

I will try out some examples 

 

Thankyou once again 

 

regards 

M Kalyansrinivas
0 Kudos
Reply