📄 arbiter.cpp
字号:
/************************************************************************
* file name:
* description:
*
* modification history
* --------------------
* 2004-1-13 16:48:17, created by zhuwei
*/
/* includes----------------------------------------------------------- */
#include "arbiter.h"
/* defines------------------------------------------------------------ */
/* typedefs----------------------------------------------------------- */
/* externs------------------------------------------------------------ */
/* globals------------------------------------------------------------ */
/* forward declarations----------------------------------------------- */
void arbiter::reg_fun()
{
if(!rst_n.read())
{
state = STATE_0;
sel = 0;
}
else
{
state = new_state;
sel = new_sel;
}
}
void arbiter::comb_fun()
{
int v_req0 = req[0].read();
int v_req1 = req[1].read();
int v_req2 = req[2].read();
new_sel = 0;
switch(state)
{
case(STATE_0):
if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
case(STATE_1):
if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
case(STATE_2):
if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else
if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
case(STATE_3):
if(v_req0)
{
new_sel = 1;
new_state = STATE_1;
}
else
if(v_req1)
{
new_sel = 2;
new_state = STATE_2;
}
else
if(v_req2)
{
new_sel = 3;
new_state = STATE_3;
}
else
{
new_sel = 0;
new_state = STATE_0;
}
break;
default:
new_sel = 0;
new_state = STATE_0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -