可编程软核处理器最大的特点是灵活,灵活到我们可以方便的增加指令,这在其他SOC系统中做不到的,增加用户指令可以把我们系统中用软件处理时耗费时间多的关键算法用硬逻辑电路来实现,大大提高系统的效率,更突出的一点是:我们通过下面的逐步操作会认识到,这是一个听起来高深,其实比较容易实现的功能(我们站在EDA工具这个巨人肩上,风光无限啊:),通过这一文档的介绍可以增强我们掌握NIOS II所有的技术手段的信心,这也是我把NIOS II 用户指令放在最前面的用意。 用户指令就是我们让NIOS II软核完成的一个功能,这个功能由电路模块来实现,这个电路模块是用HDL语言描述的。它被连接到NIOS II软核的算术逻辑部件上,下面就是示意图:
//Verilog Custom Instruction Template module __module_name( clk, // CPU's master-input clk <required for multi-cycle> reset, // CPU's master asynchronous reset <required for multi-cycle> clk_en, // Clock-qualifier <required for multi-cycle> start, // True when this instr. issues <required for multi-cycle> done, // True when instr. completes <required for variable muli-cycle> dataa, // operand A <always required> datab, // operand B <optional> n, // N-field selector <required for extended> a, // operand A selector <used for Internal register file access> b, // operand b selector <used for Internal register file access> c, // result destination selector <used for Internal register file access> readra, // register file index <used for Internal register file access> readrb, // register file index <used for Internal register file access> writerc,// register file index <used for Internal register file access> result // result <always required> ); input clk; input reset; input clk_en; input start; input readra; input readrb; input writerc; input [7:0] n; input [4:0] a; input [4:0] b; input [4:0] c; input [31:0]dataa; input [31:0]datab; output[31:0]result; output done; // Port Declaration // Wire Declaration // Integer Declaration // Concurrent Assignment // Always Construct endmodule
|