Soft-Core Processor Design - CiteSeer
Soft-Core Processor Design - CiteSeer
Soft-Core Processor Design - CiteSeer
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
• UT Nios is not as customizable as the Altera Nios<br />
The above limitations exist for various reasons. Caches and hardware multiplication are not<br />
supported in the 16-bit, and are only optional in the 32-bit Nios architecture. Since the 32-bit UT<br />
Nios is based on the 16-bit UT Nios, these features remain for future work. The OCI debug<br />
module is an Intellectual Property (IP) core [39]. The core and its implementation details are not<br />
publicly available, so its integration into UT Nios was not possible. Since the non-maskable<br />
interrupt, number 0, is only used by the OCI module, interrupt 0 is handled as any other interrupt.<br />
I/O interrupts are not accepted when a control-flow instruction is in the last two stages of the<br />
pipeline. Accepting an interrupt in such cases would require storing two values of the program<br />
counter to be able to resume the normal processor operation. As described in section 3.1.4, the<br />
Altera Nios also has this behaviour. The UT Nios also does not accept interrupts in a cycle when<br />
a SAVE, RESTORE, or WRCTL instruction is in stage 3 of the pipeline. The SAVE and<br />
RESTORE instructions may be the cause of a software interrupt, while WRCTL may change the<br />
conditions of interrupt handling when writing to the STATUS register. Accepting an interrupt<br />
when one of these instructions is about to commit may result in conflicts that are complicated to<br />
resolve. Therefore, I/O interrupts are not accepted in such cases. This can increase the interrupt<br />
handling latency and may be important for real-time applications.<br />
Two consecutive SAVE instructions, two consecutive RESTORE instructions, or consecutive<br />
combinations of these two instructions are not allowed. Supporting such combinations would<br />
require additional logic resources, and possibly increase the critical path delay. Since none of the<br />
applications we encountered used such combinations, we chose not to implement the support for<br />
these instruction combinations. Considering the semantics of SAVE and RESTORE instructions,<br />
it is unlikely that any application would ever issue two of these instructions consecutively. In an<br />
unlikely case that such a combination is required, a NOP instruction should be inserted between<br />
the two instructions. The Altera Nios supports these combinations of instructions. However, our<br />
simulations show that the Altera Nios takes two cycles to commit a single SAVE or RESTORE<br />
instruction, although this is not explicitly stated in the Nios documentation [23]. We have chosen<br />
to implement the SAVE and RESTORE instructions that commit in a single cycle, but not to<br />
support the combinations of these instructions as mentioned above.<br />
The UT Nios is generally not as customizable as the Altera Nios. This is not inherent in the<br />
UT Nios implementation, but rather the result of the research nature of this work. To make UT<br />
Nios more customizable, a user interface and a generator program, which would emit Verilog<br />
code based on the selected options, should be implemented. Currently, several processor<br />
parameters can be customized by using define and defparam Verilog statements. These<br />
30