⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pacoblaze.v.html

📁 和picoblaze完全兼容的mcu ip core
💻 HTML
📖 第 1 页 / 共 5 页
字号:
    <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> &lt;= <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> &lt;= <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> &lt;= <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> &lt;= <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> &lt;= 1; <span class=C>// flag read</span>        <a  onClick="return qs(event,this,0)"  class=SR href="#198">register_x_write_enable</a> &lt;= 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> &lt;= 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> &lt;= 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> &lt;= 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> &lt;= 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> &lt;= 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 &lt;= 1; <span class=C>// writeback wide register</span>        <a  onClick="return qs(event,this,0)"  class=SR href="#102">zero_carry_write_enable</a> &lt;= 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 &lt;= 1; <span class=C>// writeback wide register</span>        <a  onClick="return qs(event,this,0)"  class=SR href="#102">zero_carry_write_enable</a> &lt;= 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> &lt;= '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] &lt;= <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] &lt;= 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> &lt;= 0; <a  onClick="return qs(event,this,4)"  class=SOR href="#74">write_strobe</a> &lt;= 0;  <a  onClick="return qs(event,this,47)"  class=SR href="#198">register_x_write_enable</a> &lt;= 0;<span class=M>`ifdef</span> <span class=D>HAS_WIDE_ALU</span>  register_wx_write_enable &lt;= 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> &lt;= 0;<span class=M>`endif</span><a name="416"></a>  <a  onClick="return qs(event,this,9)"  class=SOR href="#80">interrupt_ack</a> &lt;= 0;  <a  onClick="return qs(event,this,21)"  class=SR href="#102">zero_carry_write_enable</a> &lt;= 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> &lt;= 0;<a name="422"></a>    <a  onClick="return qs(event,this,12)"  class=SR href="#89">program_counter</a> &lt;= <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> &lt;= 0; <a  onClick="return qs(event,this,15)"  class=SR href="#93">carry</a> &lt;= 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> &lt;= 0; <a  onClick="return qs(event,this,17)"  class=SR href="#95">interrupt_latch</a> &lt;= 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> &lt;= ~<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> &lt;= <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> &lt;= <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> &lt;= 0; <a  onClick="return qs(event,this,17)"  class=SR href="#95">interrupt_latch</a> &lt;= 0; <span class=C>// clear interrupt</span>        <a  onClick="return qs(event,this,9)"  class=SOR href="#80">interrupt_ack</a> &lt;= 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> &lt;= <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> &lt;= <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> &lt;= <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> &lt;= <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 + -