📄 pacoblaze.v.html
字号:
<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#486">op_returni</a>): <span class=K>begin</span><a name="339"></a> <a onClick="return qs(event,this,0)" class=SR href="#92">zero</a> <= <a onClick="return qs(event,this,0)" class=SR href="#438">zero_saved</a>; <a onClick="return qs(event,this,0)" class=SR href="#93">carry</a> <= <a onClick="return qs(event,this,0)" class=SR href="#438">carry_saved</a>; <span class=C>// restore flags</span><a name="340"></a> <a onClick="return qs(event,this,0)" class=SR href="#94">interrupt_enable</a> <= <a onClick="return qs(event,this,0)" class=SW href="#124">idu_interrupt_enable</a>; <span class=C>// return with interrupt enabled/disabled</span> <span class=K>end</span> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#487">op_interrupt</a>): <a onClick="return qs(event,this,0)" class=SR href="#94">interrupt_enable</a> <= <a onClick="return qs(event,this,0)" class=SW href="#124">idu_interrupt_enable</a>; <span class=C>// enable/disable interrupt</span> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#488">op_input</a>): <span class=K>begin</span><a name="346"></a> <a onClick="return qs(event,this,0)" class=SOR href="#76">read_strobe</a> <= 1; <span class=C>// flag read</span> <a onClick="return qs(event,this,0)" class=SR href="#198">register_x_write_enable</a> <= 1; <span class=C>// write into register</span> <span class=K>end</span><a name="350"></a> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#489">op_output</a>): <a onClick="return qs(event,this,0)" class=SOR href="#74">write_strobe</a> <= 1; <span class=C>// flag write</span><span class=M>`ifdef</span> <a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#42">HAS_COMPARE_OPERATION</a> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#490">op_compare</a>): <a onClick="return qs(event,this,0)" class=SR href="#102">zero_carry_write_enable</a> <= 1; <span class=C>// writeback zero, carry</span><span class=M>`endif</span><span class=M>`ifdef</span> <a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#43">HAS_TEST_OPERATION</a> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#491">op_test</a>): <a onClick="return qs(event,this,0)" class=SR href="#102">zero_carry_write_enable</a> <= 1; <span class=C>// writeback zero, carry</span><span class=M>`endif</span><span class=M>`ifdef</span> <a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#41">HAS_SCRATCH_MEMORY</a> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#492">op_fetch</a>): <a onClick="return qs(event,this,0)" class=SR href="#198">register_x_write_enable</a> <= 1; <span class=C>// transfer scratchpad to register</span><a name="363"></a> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="#54">operation</a>(<span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#493">op_store</a>): <a onClick="return qs(event,this,0)" class=SR href="#226">scratch_write_enable</a> <= 1; <span class=C>// transfer register to scratchpad</span><span class=M>`endif</span><span class=M>`ifdef</span> <span class=D>HAS_MUL_OPERATION</span> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_idu.v.html#44">operation</a>(<span class=D>`op_mul</span>): <span class=K>begin</span> register_wx_write_enable <= 1; <span class=C>// writeback wide register</span> <a onClick="return qs(event,this,0)" class=SR href="#102">zero_carry_write_enable</a> <= 1; <span class=K>end</span><span class=M>`endif</span><span class=M>`ifdef</span> <span class=D>HAS_WIDE_ALU</span> <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_idu.v.html#44">operation</a>(<span class=D>`op_addw</span>), <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_idu.v.html#44">operation</a>(<span class=D>`op_addwcy</span>), <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_idu.v.html#44">operation</a>(<span class=D>`op_subw</span>), <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_idu.v.html#44">operation</a>(<span class=D>`op_subwcy</span>): <span class=K>begin</span> register_wx_write_enable <= 1; <span class=C>// writeback wide register</span> <a onClick="return qs(event,this,0)" class=SR href="#102">zero_carry_write_enable</a> <= 1; <span class=C>// writeback zero, carry</span> <span class=K>end</span><span class=M>`endif</span> <span class=K>default</span>: ; <span class=K>endcase</span><span class=K>end</span><span class=K>endtask</span><span class=C>/* Combinatorial main block */</span><span class=C>/*always @(program_counter) begin: comend*/</span><span class=C>/* Sequential internal reset control */</span><span class=M>`ifdef</span> <a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#36">HAS_RESET_LATCH</a><span class=K>always</span> @(<span class=K>posedge</span> <a onClick="return qs(event,this,11)" class=SI href="#83">clk</a>) <span class=K>begin</span>: on_reset<a name="397"></a> <span class=K>if</span> (<a onClick="return qs(event,this,10)" class=SI href="#82">reset</a>) <a onClick="return qs(event,this,20)" class=SR href="#100">reset_latch</a> <= 'b11; <span class=C>// initialize latch</span> <span class=K>else</span> <span class=K>begin</span> <a onClick="return qs(event,this,20)" class=SR href="#100">reset_latch</a>[1] <= <a onClick="return qs(event,this,20)" class=SR href="#397">reset_latch</a>[0]; <span class=C>// shift latch</span> <a onClick="return qs(event,this,20)" class=SR href="#100">reset_latch</a>[0] <= 0; <span class=K>end</span><span class=K>end</span><span class=M>`endif</span><span class=C>/* Sequential main block */</span><span class=K>always</span> @(<span class=K>posedge</span> <a onClick="return qs(event,this,11)" class=SI href="#83">clk</a>) <span class=K>begin</span>: seq <span class=C>/* Idle values and default actions */</span> <a onClick="return qs(event,this,6)" class=SOR href="#76">read_strobe</a> <= 0; <a onClick="return qs(event,this,4)" class=SOR href="#74">write_strobe</a> <= 0; <a onClick="return qs(event,this,47)" class=SR href="#198">register_x_write_enable</a> <= 0;<span class=M>`ifdef</span> <span class=D>HAS_WIDE_ALU</span> register_wx_write_enable <= 0;<span class=M>`endif</span><span class=M>`ifdef</span> <a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#41">HAS_SCRATCH_MEMORY</a> <a onClick="return qs(event,this,56)" class=SR href="#226">scratch_write_enable</a> <= 0;<span class=M>`endif</span><a name="416"></a> <a onClick="return qs(event,this,9)" class=SOR href="#80">interrupt_ack</a> <= 0; <a onClick="return qs(event,this,21)" class=SR href="#102">zero_carry_write_enable</a> <= 0; <span class=K>if</span> (<a onClick="return qs(event,this,22)" class=SW href="#104">internal_reset</a>) <span class=K>begin</span>: on_internal_reset <span class=C>/* Reset values */</span><a name="421"></a> <a onClick="return qs(event,this,13)" class=SR href="#90">timing_control</a> <= 0;<a name="422"></a> <a onClick="return qs(event,this,12)" class=SR href="#89">program_counter</a> <= <span class=D>`</span><a onClick="return qs(event,this,0)" class=D href="pacoblaze_inc.v.html#157">reset_vector</a>; <span class=C>// load reset vector</span> <a onClick="return qs(event,this,14)" class=SR href="#92">zero</a> <= 0; <a onClick="return qs(event,this,15)" class=SR href="#93">carry</a> <= 0; <span class=C>// flags begin cleared</span><a name="424"></a> <a onClick="return qs(event,this,16)" class=SR href="#94">interrupt_enable</a> <= 0; <a onClick="return qs(event,this,17)" class=SR href="#95">interrupt_latch</a> <= 0; <span class=C>// interrupts disabled at reset</span> <span class=K>end</span> <span class=K>else</span> <span class=K>begin</span>: on_run <a onClick="return qs(event,this,13)" class=SR href="#90">timing_control</a> <= ~<a onClick="return qs(event,this,13)" class=SR href="#421">timing_control</a>; <span class=C>// step timing control</span> <a onClick="return qs(event,this,17)" class=SR href="#95">interrupt_latch</a> <= <a onClick="return qs(event,this,26)" class=SW href="#280">interrupt_assert</a> | <a onClick="return qs(event,this,17)" class=SR href="#424">interrupt_latch</a>; <span class=C>// recognize interrupt</span> <span class=C>/* First stage, T == 0 */</span> <span class=K>if</span> (<a onClick="return qs(event,this,13)" class=SR href="#90">timing_control</a> == 0) <span class=K>begin</span> <a onClick="return qs(event,this,12)" class=SR href="#89">program_counter</a> <= <a onClick="return qs(event,this,24)" class=SW href="#274">program_counter_next</a>; <span class=C>// default next program counter</span> <span class=K>if</span> (<a onClick="return qs(event,this,17)" class=SR href="#95">interrupt_latch</a>) <span class=K>begin</span> <span class=C>// process interrupt</span> <a onClick="return qs(event,this,16)" class=SR href="#94">interrupt_enable</a> <= 0; <a onClick="return qs(event,this,17)" class=SR href="#95">interrupt_latch</a> <= 0; <span class=C>// clear interrupt</span> <a onClick="return qs(event,this,9)" class=SOR href="#80">interrupt_ack</a> <= 1; <span class=C>// acknowledge interrupt</span><a name="438"></a> <a onClick="return qs(event,this,18)" class=SR href="#97">zero_saved</a> <= <a onClick="return qs(event,this,14)" class=SR href="#339">zero</a>; <a onClick="return qs(event,this,19)" class=SR href="#98">carry_saved</a> <= <a onClick="return qs(event,this,15)" class=SR href="#339">carry</a>; <span class=C>// save flags</span> <span class=K>end</span> <span class=K>else</span> <span class=C>// execute instruction</span> <a onClick="return qs(event,this,0)" class=T href="#pacoblaze3m_execute">execute</a>(<a onClick="return qs(event,this,27)" class=SW href="#111">idu_operation</a>); <span class=K>end</span> <span class=C>/* Second stage, T == 1 */</span> <span class=K>else</span> <span class=K>begin</span> <span class=K>if</span> (<a onClick="return qs(event,this,21)" class=SR href="#102">zero_carry_write_enable</a>) <span class=K>begin</span> <a onClick="return qs(event,this,14)" class=SR href="#92">zero</a> <= <a onClick="return qs(event,this,44)" class=SW href="#152">alu_zero_out</a>; <a onClick="return qs(event,this,15)" class=SR href="#93">carry</a> <= <a onClick="return qs(event,this,45)" class=SW href="#152">alu_carry_out</a>; <span class=C>// update alu flags</span> <span class=K>end</span> <span class=K>end</span> <span class=K>end</span> <span class=C>// on_run</span><span class=K>end</span><span class=K>endmodule</span><span class=M>`endif</span> <span class=C>// PACOBLAZE_V_</span></pre><center><table class=NB cols=7 ><tr><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';" onclick="location='index.html';"><a target="_top" href="index.html">Hierarchy</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';" onclick="location='index-f.html';"><a target="_top" href="index-f.html">Files</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';" onclick="location='index-m.html';"><a target="_top" href="index-m.html">Modules</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';" onclick="location='index-s.html';"><a target="_top" href="index-s.html">Signals</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';" onclick="location='index-t.html';"><a target="_top" href="index-t.html">Tasks</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';" onclick="location='index-fn.html';"><a target="_top" href="index-fn.html">Functions</a></td><td align="center" width="14%" onmousedown="this.style.border='inset';" onmouseup="this.style.border='outset';" onclick="location='http://www.burbleland.com/v2html/help_7_30.html?htf-ni-s-';"><a target="_top" href="http://www.burbleland.com/v2html/help_7_30.html?htf-ni-s-">Help</a></td></tr></table></center><script language="JavaScript"type="text/javascript"><!--function next_page() { return ""; }function first_page() { return ""; }var extra_info = [["S","pacoblaze.v.html#71","pacoblaze.v.html#239","","pacoblaze.v.html#239","index-s.html#address___pacoblaze3m"],["S","pacoblaze.v.html#72","","compare3m_tb.v.html#54","","index-s.p2.html#instruction___pacoblaze3m"],["S","pacoblaze.v.html#73","pacoblaze.v.html#242","","pacoblaze.v.html#242","index-s.p3.html#port_id___pacoblaze3m"],["S","pacoblaze.v.html#74","pacoblaze.v.html#350","","pacoblaze.v.html#350","index-s.p4.html#write_strobe___pacoblaze3m"],["S","pacoblaze.v.html#75","pacoblaze.v.html#241","","pacoblaze.v.html#241","index-s.p3.html#out_port___pacoblaze3m"],["S","pacoblaze.v.html#76","pacoblaze.v.html#346","","pacoblaze.v.html#346","index-s.p4.html#read_strobe___pacoblaze3m"],["S","pacoblaze.v.html#77","","compare3m_tb.v.html#58","pacoblaze3m_tb.v.html#54","index-s.p2.html#in_port___pacoblaze3m"],["S","pacoblaze.v.html#78","","compare3m_tb.v.html#60","pacoblaze3m_tb.v.html#105","index-s.p2.html#interrupt___pacoblaze3m"],["S","pacoblaze.v.html#80","pacoblaze.v.html#416","","pacoblaze.v.html#416","index-s.p2.html#interrupt_ack___pacoblaze3m"],["S","pacoblaze.v.html#82","","compare3m_tb.v.html#52","pacoblaze3m_tb.v.html#105","index-s.p4.html#reset___pacoblaze3m"],["S","pacoblaze.v.html#83","","compare3m_tb.v.html#51","pacoblaze3m_tb.v.html#86","index-s.html#clk___pacoblaze3m"],["S","pacoblaze.v.html#89","pacoblaze.v.html#422","","pacoblaze.v.html#422","index-s.p3.html#program_counter___pacoblaze3m"],["S","pacoblaze.v.html#90","pacoblaze.v.html#421","","pacoblaze.v.html#421","index-s.p4.html#timing_control___pacoblaze3m"],["S","pacoblaze.v.html#92","pacoblaze.v.html#339","","pacoblaze.v.html#339","index-s.p5.html#zero___pacoblaze3m"],["S","pacoblaze.v.html#93","pacoblaze.v.html#339","","pacoblaze.v.html#339","index-s.html#carry___pacoblaze3m"],["S","pacoblaze.v.html#94","pacoblaze.v.html#340","","pac
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -